• 1
    Input and Output Data
    • Tasks
  • 2
    Conditions
    • Tasks
  • 3
    For Loop
    • Tasks
  • 4
    Strings
    • Tasks
  • 5
    While Loop
    • Tasks
  • 6
    Lists
    • Tasks
  • 7
    Two-Dimensional Arrays
    • Tasks
  • 8
    Dictionaries
    • Tasks
  • 9
    Sets
    • Tasks
  • 10
    Functions and Recursion
    • Tasks
  • к

Занятие 4. Lines

Difficulty level:

Task«Coding of the name»

you and your friends organized a secret club and came up with your own cipher for correspondence. The encryption rule depends on the “key”, which is the first word in the message.

rn

rn
  • the entire source text is brought to the upper register.
  • rn
  • The program determines the number of letters in & nbsp; the first word & nbsp; messages.
  • rn
  • The number of letters is even , then all the vowels in the message are replaced by & nbsp; 0 , and all consonants & mdash; on & nbsp; 1 .
  • rn
  • if the number of letters is odd 1 , and consonants & mdash; on & nbsp; 0
  • rn
  • all other symbols (gaps, punctuation marks, numbers, etc.) remain without changes.
  • rn rn

    note: a, o, o, o, e, y, yu, e, E. All other letters of Russian The alphabet is considered consonants.

    Input format

    Text for encryption (string), which can contain one or more words in Russian, as well as punctuation marks and numbers.

    Output format

    An encoded line (string), in which Russian letters are replaced by 0 and 1 according to the rule, and the rest of the characters are left unchanged.

    Example

    Input

    Hello peace

    Output

    110101 101

    Hint

    methods for working with strings in python

    Python provides many built-in methods for working with strings. These are powerful tools that make it easy to manipulate text data. All methods are called with a dot after the variable in which the string is stored, according to the variable scheme.method().

    It is important to remember that strings in Python are immutable. This means that none of the methods changes the original string. Instead, they return a new string with the changes applied.

    Basic methods for working with strings

    1. upper() and lower()

    Convert all characters of the string to upper or lower case, respectively.

    string = "Hello, World!"
    print(string.upper()) # Output: HELLO, WORLD!
    print(string.lower()) # Output: hello, world!
    print(string) # Output: Hello, World! (the original line has not changed)
    

    A useful tip: These methods are indispensable when you need to compare case-insensitive strings. For example, when checking user input.

    user_input = "Yes"
    if user_input.lower() =="yes":
    print("The user agrees.")
    

    2. strip(), lstrip() and rstrip()

    Remove whitespace characters (spaces, tabs, line breaks) from the beginning and end of the line. lstrip() deletes only on the left, and rstrip() deletes only on the right.

    string = "  Hello, World!  "
    print(string.strip()) # Output: Hello, World!
    print(string.lstrip()) # Output: Hello, World!  
    print(string.rstrip()) # Output: Hello, World!
    

    A useful tip: These are extremely important methods for "cleaning" data obtained from files or from users, who often accidentally leave unnecessary spaces. As an argument, you can pass a string of characters that need to be deleted.

    dirty_string = "!!!Hello, World!?! "
    print(dirty_string.strip(" !?")) # Output: Hello, World
    

    3. split() and join()

    split() splits a string into a list of substrings using the specified separator. join() collects a string from the list items by inserting a separator string between them.

    string = "Hello, World!"
    words =string.split(", ")
    print(words) # Output: ['Hello', 'World!']
    
    # Reverse operation
    joined_string = " | ".join(words)
    print(joined_string) # Output: Hello | World!
    

    A useful tip: split() is a standard method for parsing (parsing) data presented as a string, for example, CSV files. join() is the most efficient ("pythonic") way to assemble one large string from many small ones. It works much faster than adding strings in a loop using +.

    4. find() and replace()

    find() searches for the first occurrence of a substring and returns its index (position). If the substring is not found, returns -1. replace() replaces all occurrences of one substring with another.

    string = "Hello, World!"
    index = string.find("World")
    print(index) # Output: 7
    
    new_string = string.replace("World", "Python")
    print(new_string) # Output: Hello, Python!
    

    A useful tip: There is an analog of the find() index() method.. It does the same thing, but if the substring is not found, it raises the error ValueError. Use find() if the absence of a substring is a normal situation, and index(), if it should interrupt the execution of the program. The replace() method can also accept a third argument - the number of substitutions to be made.

    5. startswith() and endswith()

    They check whether the string begins or ends with a specific substring. Returns True or False.

    string = "Hello, World!"
    print(string.startswith("Hello")) # Output: True
    print(string.endswith("World!"))   # Output: True
    print(string.startswith("Bye"))    # Output: False
    

    A useful tip: It is very convenient for quick checking of file formats (filename.endswith(".txt")) or link types (url.startswith("https")).

    6. isdigit(), isalpha() and isalnum()

    They check what the string consists of.

    • isdigit(): True if all characters are numbers.
    • isalpha(): True if all characters are letters.
    • isalnum(): True if all characters are letters or numbers.
    string1 = "12345"
    string2 = "Hello"
    string3 = "Hello123"
    
    print(f"'{string1}' consists of digits? {string1.isdigit()}")   # Output: True
    print(f"'{string2}' consists of letters? {string2.isalpha()}")   # Output: True
    print(f"'{string3}' consists of letters and numbers? {string3.isalnum()}") # Output: True
    print(f"'{string2}' consists of digits? {string2.isdigit()}") # Output: False
    

    A useful tip: These methods are ideal for validating user input before attempting to convert a string to a number or using it further in the program.

    A complete guide to methods

    Below is a table with a more complete list of string methods for quick reference.

    Method Purpose
    S.find(str, [start],[end]) Search for a substring in a string. Returns the number of the first occurrence or -1.
    S.rfind(str, [start],[end]) Search for a substring in a string. Returns the number of the last occurrence or -1.
    S.index(str, [start],[end]) Search for a substring in a string. Returns the number of the first occurrence or causes a ValueError.
    S.rindex(str, [start],[end]) Search for a substring in a string. Returns the number of the last occurrence or causes a ValueError.
    S.replace(template, replacement[, maxcount]) Replace the template with a replacement. maxcount limits the number of substitutions.
    S.split(character) Splitting a line by separator.
    S.isdigit() Whether the string consists of numbers.
    S.isalpha() Whether the string consists of letters.
    S.isalnum() Whether the string consists of numbers or letters.
    S.islower() Whether the string consists of lowercase characters.
    S.isupper() Whether the string consists of uppercase characters.
    S.isspace() Whether the string consists of non-displayed characters (space, \f, \n, \r, \t, \v).
    S.istitle() Whether words in a line begin with a capital letter.
    S.upper() Converting a string to uppercase.
    S.lower() Converting a string to lowercase.
    S.startswith(str) Does the string S start with the template str.
    S.endswith(str) Does line S end with the str template.
    S.join(list) Assembling a line from a list separated by S.
    ord(character) Converts a character to its ASCII/Unicode code.
    chr(number) Converts the ASCII/Unicode code to a character.
    S.capitalize() Converts the first character of the string to uppercase, and all the others to lowercase.
    S.center(width, [fill]) Returns a centered string with the fill character at the edges (space by default).
    S.count(str, [start],[end]) Returns the number of disjoint occurrences of a substring.
    S.expandtabs([tabsize]) Replaces the tab characters \t with spaces.
    S.lstrip([chars]) Deleting specified characters (or spaces) at the beginning of a line.
    S.rstrip([chars]) Deleting specified characters (or spaces) at the end of a line.
    S.strip([chars]) Deleting specified characters (or spaces) at the beginning and end of a line.
    S.partition(template) Divides a string by the first occurrence of the separator into three parts: before, the separator itself, and after.
    S.rpartition(sep) Divides the string by the last occurrence of the separator into three parts: before, the separator itself, and after.
    S.swapcase() Converts lowercase characters to uppercase, and uppercase characters to lowercase.
    S.title() Translates the first letter of each word to uppercase, and all the others to lowercase.
    S.zfill(width) Adds zeros to the left of the string to the length width.
    S.ljust(width, fillchar=" ") Aligns the line to the left, adding the characters fillchar to the right.
    S.rjust(width, fillchar=" ") Aligns the line to the right, adding fillchar characters to the left.
    S.format(*args, **kwargs) String formatting (a more modern alternative to %).
    main.py
    Test 1
    Test 2
    Test 3
    Test 4
    Test 5
    Test 6
    Test 7
    Test 8
    Test 9
    Test 10
    Developer’s solution
    # Список всех гласных букв русского алфавита в верхнем регистре
    vowels_ru = "АУОЫИЭЯЮЁЕ"
    
    # Получаем строку от пользователя
    input_text = input()
    
    # Приводим весь текст к верхнему регистру для удобства сравнения
    upper_text = input_text.upper()
    
    # Разбиваем текст на слова, чтобы получить доступ к первому слову
    words = input_text.split()
    m = 0
    # Проверяем, был ли вообще введен текст. Если нет, то words будет пустым списком.
    if not words:
        # Если на входе была пустая строка или строка из пробелов, выводим пустую строку
        print("")
    else:
        # Получаем первое слово
        first_word = words[0]
        for i in first_word:
            if i in "!.,":m+=1
        # Считаем количество букв в первом слове
        first_word_len = len(first_word)-m
    
        # Создаем пустую строку, в которую будем записывать результат
        result = ""
    
        # Проверяем, является ли длина первого слова четной
        is_even_rule = (first_word_len % 2 == 0)
    
        # Проходим циклом по каждому символу в тексте (уже в верхнем регистре)
        for char in upper_text:
            # Проверяем, является ли символ гласной буквой
            if char in vowels_ru:
                if is_even_rule:
                    result += "0" # Если правило "четное", гласные -> 0
                else:
                    result += "1" # Если правило "нечетное", гласные -> 1
            # Если символ не гласная, но является буквой, значит это согласная
            elif char.isalpha():
                if is_even_rule:
                    result += "1" # Если правило "четное", согласные -> 1
                else:
                    result += "0" # Если правило "нечетное", согласные -> 0
            # Если символ - это не буква (пробел, знак препинания и т.д.)
            else:
                result += char # Добавляем его в результат без изменений
    
        # Выводим итоговую зашифрованную строку
        print(result)

    🎉 Congratulations! 🎉

    You did an excellent job with the task! It was a challenging problem, but you found the correct solution. You are one step closer to mastering programming! Keep up the good work, because every stage you pass makes you even stronger.

    AD

    Advertisement

    red-snake blue-snake green-snake

    Running your code...

    Помощник ИИ

    Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!