Во время работы над проектом мне было поручено оптимизировать код. В процессе исследования я выяснил, что в Python можно присваивать значения переменным внутри цикла while. Это позволяет сократить объём кода.

Обычно мы используем оператор присваивания «=», чтобы присвоить значение переменной в Python. Однако мы также рассмотрим возможность использования оператора «:=» для присвоения значения переменной внутри цикла while.

Содержание

С использованием оператора «=»

Сначала мы будем использовать оператор присваивания «=» в Python. Этот оператор используется для того, чтобы присвоить значение переменной. В Python мы можем присвоить значение переменной внутри цикла с помощью оператора «=».

Давайте посмотрим, как работает Python с присваиванием.

while True:
    line = "Hello"
    i = 0 
    while i<len(line):
        print(line[i],'-',ord(line[i]))
        i+=1
    break

С использованием оператора «=»

В приведённом выше коде мы всегда запускаем цикл while с условием true.

Строка «while True:» означает, что цикл будет выполняться бесконечное количество раз. Внутри цикла мы присваиваем переменной «line» значение «Hello».

Затем мы инициализируем переменную «i» значением 0 и запускаем вложенный цикл while «print(line[i],»—«, ord(line[i]))». Этот цикл будет перебирать каждый символ строки «line» и выводить его значение ASCII с помощью функции ord().

С помощью оператора var

В Python 3.8 появился новый оператор присваивания — «var:=». Он позволяет создавать новую переменную внутри выражения, даже если раньше она не была определена.

Синтаксис:

var_name := value

Давайте посмотрим, как мы можем использовать его в цикле while:

capitals = ["Denver", "Tallahassee", "Boise", "Austin", "Olympia", "Madison"]

print("Logging state capitals:")

while(current_capital := capitals.pop(0)) != "Austin":
    print(current_capital)

print("Reached Austin! Time to stop.")

С помощью оператора var

В приведённом выше коде у нас есть список с названиями столиц. Затем мы инициализируем цикл while и создаём переменную current_capital, присваивая ей значение Capitals.pop(0). Это означает, что на каждой итерации цикла мы будем удалять первый элемент списка.

В условии цикла мы проверяем, не равен ли текущий элемент списка «Остин». Когда цикл доходит до элемента «Остин», условие становится ложным, потому что «Остин» не равен «Остин». В результате цикл прекращает выполнение итерации.

Принимая пользовательский ввод

В этой части мы увидим, как работает цикл While с присваиванием в Python, когда мы получаем ввод от пользователя с помощью цикла While и оператора Walrus в Python.

while number:=int(input("Enter the number: ")):
    if number % 2 == 0:
        print(number, "is even number\n")
    else:
        print(number, "is odd number\n")

Принимая пользовательский ввод

В представленном коде мы инициализируем переменную с помощью цикла while. Затем программа принимает от пользователя целое число и проверяет, чётное оно или нечётное, с помощью оператора%.

Обратите внимание, что программа будет запрашивать у пользователя ввод числа до тех пор, пока он не остановит её, поскольку мы не указали оператор прерывания. Это означает, что программа будет выполняться бесконечно, пока пользователь не остановит её вручную.

Вызвав функцию

Теперь мы рассмотрим, как можно назначить переменную внутри цикла while в Python при помощи вызова имени функции. Мы создадим собственную функцию, чтобы вы могли лучше понять принцип её работы.

Как создать цикл while с присваиванием в Python, используя пользовательскую функцию:

def get_ascii_value(string):
    dict = {}
    for i in string:
        dict.update({i: ord(i)})
    return dict


while True:
    user_input = input("Enter any word : ")
    result = get_ascii_value(user_input)
    print(result)
    break

Python с назначением, вызвав функцию

В представленном коде мы создаём функцию get_ascii_value(), которая принимает строку в качестве параметра и возвращает код ASCII каждого символа в этой строке.

Затем мы инициализируем бесконечный цикл while, принимая от пользователя строку user_input. В цикле мы вызываем функцию get_ascii_value() для каждого символа в строке и сохраняем результат в виде пары «символ-код ASCII» в словаре result.

Добавить комментарий