Добавить переменную в список в цикле

#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()  

Таким образом, вы инкапсулируете начальное состояние и можете гарантировать, что каждая итерация делает именно то, что вы ожидаете.