Во время работы над проектом мне было поручено оптимизировать код. В процессе исследования я обнаружил, что в Python можно назначать переменные внутри цикла while. Это позволяет сократить количество строк кода.
Обычно в Python мы используем оператор присваивания «=» для присвоения переменной. Однако мы также попробуем использовать оператор «:=» для присвоения переменной внутри цикла while, чтобы сократить код.
- С использованием оператора «=»
- С помощью оператора walrus
- Принимая пользовательский ввод
- Вызвав имя функции
С использованием оператора «=»
Сначала мы будем использовать оператор присваивания «=». Этот оператор в 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:» означает, что цикл будет выполняться бесконечно, а затем внутри цикла while переменной line будет присвоено одно строковое значение по умолчанию — «Hello».
Затем переменной i присваивается значение 0 и снова начинается вложенный цикл while «print(line[i],»-«,ord(line[i]))». Этот цикл настроен так, чтобы перебирать каждый символ строки один за другим и выводить его значение ascii с помощью функции ord() в Python.
С помощью оператора walrus
Мы также можем использовать оператор «walrus» := «, новый оператор выражения присваивания, представленный в версии Python 3.8. Он может создать новую переменную внутри выражения, даже если эта переменная ранее не существовала.
Синтаксис:
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.")
В приведённом коде у нас есть список под названием «capitals». Затем мы запускаем цикл while и создаём переменную current_capital, которая будет содержать значение, полученное путём удаления первого элемента списка на каждой итерации с помощью оператора моржа.
Например, current_capital будет равно Capitals.pop(0), то есть при каждой итерации мы будем удалять первый элемент списка. Условие цикла while выглядит так: «current_capital!= «Остин».
Когда цикл дойдёт до элемента «Остин», условие станет ложным, потому что «Остин» не равно «Остин». В этот момент цикл прекратит свою работу и не будет выполнять дальнейшие итерации.
Принимая пользовательский ввод
Здесь мы рассмотрим, как будет работать конструкция While с присваиванием.
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, вызвав имя функции. Мы создадим пользовательскую функцию, чтобы вы поняли, как она работает.
Как можно создать Python While with Assignment, вызвав пользовательскую функцию.
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
В представленном коде мы создаём функцию get_ascii_value(), которая принимает строку в качестве параметра и возвращает значение ASCII каждого символа.
Далее мы инициализируем цикл while, в котором user_input выступает в роли строки. Переменная result вызывает функцию и возвращает символ и его значение ASCII в виде словаря.