Я начинаю с python и сталкиваюсь с основной проблемой в этом упражнении по вложению:
bird_names = "eagle", "pigeon", "colibri", "seagull"
bird_guess=input("Guess the bird: ")
if bird_guess in bird_names == False:
print("Try again")
bird_guess2=input("Guess the Bird: ")
if bird_guess2 in birds == False:
print("Try again")
bird_guess3=input("Guess the Bird: ")
if bird_guess3 in birds == False:
print("Sorry out of tries")
else:
print("Yes 3rd try")
else:
print("Yes 2rd try")
else:
print("Great, 1st try")
Когда я запускаю его и присваиваю bird_guess
значение d
, например, код выводит напрямую Great, 1st try
вместо того, чтобы проходить через все остальные if
операторы.
Любая идея, где моя ошибка?
Напишите условия так: if bird_guess not in bird_names:
. И что такое птицы?
x in y == False
неверно и действительно проверено x not in y
Этот:
if bird_guess in bird_names == False:
такой же как:
if bird_guess in bird_names and bird_names == False:
Вместо этого вы должны сделать это:
if bird_guess not in bird_names:
чтобы проверить, нет ли элемента в списке.
Причина, по которой ваше исходное выражение не сработало, — цепочка сравнения. В Python произвольное количество сравнений может быть объединено в цепочку, например, x < y <= z
эквивалентно x < y and y <= z
. И таким образом a in b == False
станет a in b and b == False
.
Начинать с нового языка — это здорово! Помимо изучения деталей языка, узнайте также, как писать расширяемый код.
Что произойдет, если вы захотите дать пользователю 5 предположений вместо 3? Вы получите 5 уровней if
s. Альтернативой вложенным ifs является цикл:
max_tries = 3
bird_names = ["eagle", "pigeon", "colibri", "seagull"]
for current_try in range(max_tries):
guess = input("Guess the bird: ")
if guess in bird_names:
print(f"Yes, {current_try+1}. try!")
break
elif current_try < max_tries-1:
print("Try again")
else:
print("Sorry, out of tries")
# [ ] Create the "Guess the bird" program
# [ ] nested conditionals
# if
# if
# if
# else
#else
#else
bird_guess = input()
bird_name = "eagle, falcon, crow, dove, pigeon,"
bird_guess in bird_name
if bird_guess == "eagle":
print("1st Try!: ", bird_guess in bird_name)
bird_guess = input() # added variable to continue the code
if bird_guess = = "crow":
print("2nd Try!: ", bird_guess in bird_name)
bird_guess = input()
# [ ] added if conditions is to continue the bird_guess game option
if bird_guess = = "falcon":
print("3rd Try!: ", bird_guess in bird_name)
bird_guess = input()
if bird_guess = = "dove":
print("4th Try!: ", bird_guess in bird_name)
bird_guess = input()
if bird_guess = = "pigeon":
print("5th Try!: ", bird_guess in bird_name)
bird_guess = input()
# [ ] the added else & if is to continue code if the nested if answer is incorrect
else:
print("Try Again!: ")
bird_guess = input()
if bird_guess = = "crow":
print("2nd Try!: ", bird_guess in bird_name)
bird_guess = input()
else:
print("2 Try Again!: ")
bird_guess = input()
if bird_guess = = "falcon":
print("3nd Try!: ", bird_guess in bird_name)
print("Sorry Out turn: ") # [ ]last else & if will not need variable given there won't be any option or guess after words
else:
print("game over")
Добро пожаловать в Stack Overflow! Спасибо за этот фрагмент кода, который может предоставить некоторую ограниченную краткосрочную помощь. Правильное объяснение значительно улучшится его долгосрочного значения, показывающее Зачем, является хорошим решением проблемы и сделает его более полезным для будущих читателей с другими подобными вопросами. Пожалуйста, редактировать ваш ответ, чтобы добавить некоторые пояснения, включая сделанные вами предположения.
вы должны редактировать ответить, чтобы включить объяснение, а не писать его в комментарии!