#python #loops #if-statement #append #iteration
#питон #петли #если-заявление #добавлять #итерация
Вопрос:
Я хочу добавить «входной номер» в «list_of_already_entered_numbers», если этого номера раньше не было в списке. Поэтому вы не должны быть в состоянии указать одно и то же число 2 раза. Я добавил «печать», чтобы показать, что список все еще пуст? даже несмотря на то, что «добавить» должно добавлять номер в список во время каждой итерации. Не обращайте внимания на 10 итераций. Итак, как мне добавить номер в список, чтобы список обновлялся каждую итерацию?
def ask_number(): a = 0 while a lt; 10: list_of_already_entered_numbers = [] print("this is the list: " str(list_of_already_entered_numbers)) number = int(input("Type a number:")) if number in list_of_already_entered_numbers: print("the number is already in the list") else: list_of_already_entered_numbers.append(number) a =1 ask_number()
Комментарии:
1. Вы устанавливаете
list_of_already_entered_numbers
пустой список в начале каждой итерации цикла. Попробуйте установить его внеwhile
цикла.2. переменная
list_of_already_entered_numbers
переопределяется как пустая строка при каждом выполнении цикла. определите переменную вне цикла.3. @match опередил меня в этом!
Ответ №1:
Объявите список вне цикла следующим образом:
def ask_number(): a = 0 list_of_already_entered_numbers = [] while a lt; 10: print("this is the list: " str(list_of_already_entered_numbers)) number = int(input("Type a number:")) if number in list_of_already_entered_numbers: print("the number is already in the list") else: list_of_already_entered_numbers.append(number) a =1 ask_number()
Ответ №2:
Вы можете попробовать включить только часть запроса в его собственную функцию. Это облегчает самостоятельную попытку и гарантирует, что вы получите ожидаемый результат:
from typing import List def enter_number(previous_numbers: List[int]) -gt; List[int]: print("These numbers have been guessed: {previous_numbers}" str(list_of_already_entered_numbers)) number = int(input("Type a number:")) if number in previous_numbers: print("That number has already been entered") else: previous_numbers.append(number) return previous_numbers def ask(): previous_numbers = [] for _ in range(10): previous_numbers = enter_number(previous_numbers) ask()
Таким образом, вы инкапсулируете начальное состояние и можете гарантировать, что каждая итерация делает именно то, что вы ожидаете.