#python #python-3.x #while-loop
#python #python-3.x #цикл while
Вопрос:
Это упражнение из введения в CompSci и программирование на Python от OCW MIT. Я немного изменил его. Проблема в том, что я хочу остановить программу, когда я достиг максимального неправильного ответа, но она останавливается, если я попытаюсь два раза. Почему два раза? Как я могу это исправить? Как новичок я должен задавать здесь каждый вопрос? Спасибо всем
n = 0
max_guesses = 3
n = input("You are in the Lost Forestn****************n****************n :)n****************n****************nGo left or right? ")
if n == "left" or "Left":
print("You're out of lost forest")
while n == "right" or n == "Right":
n = input("You are in the Lost Forestn****************n****** ***n :(n****************n****************nGo left or right? ")
n = 1
for n in range (max_guesses):
break
print("Game over! You ran out of your lives")
Комментарии:
1.
break
2. Break работает, но, как я уже сказал, это дает мне только две жизни, даже если я изменю max_guesses на 5, он все равно остановится после 2 попыток
3. почему
n=0
а затем строка? зачем устанавливатьn
значение 1 и перезаписывать входные данные? вы имели в виду `n = 1` (увеличьте n на 1? вы не можете сделать это со строкой), поскольку цикл не имеет смысла — используйтеif n >live_count: break
— затем распечатайте isdead-сообщение4. Я думаю, вы не поняли, что
range
делает и что делаетin
оператор. Если вы хотите проверить,n
равно лиmax_guesses
, просто используйтеn == max_guesses
.5. Я понял, что есть проблема с string и int, но это все еще дает мне две жизни. Почему это?
Ответ №1:
Есть несколько ошибок, которые приводят к тому, что ваш код не работает должным образом
- Ваша переменная n совпадает со значением, которое вы получаете из введенного вами значения, лучше всего разделить их на разные значения, чтобы было легче избежать трудно обнаруживаемых ошибок
- У вас должно быть условие, которое проверяет, является ли n>= max_guesses.
Ответ №2:
Добро пожаловать в сообщество, мы стараемся обсуждать проблемы здесь, а не искать целостное решение.
Я предлагаю вам сначала изучить самые основы программирования, такие как принятие решений, потоки управления (то есть операторы if и циклы). Кроме того, попробуйте повторить вопрос несколько раз с разными логиками и входными данными во время выполнения. это даст вам лучшее понимание логического анализа.
Вот один из способов, которым вы могли бы добавить логику.
#Maximum allowed guesses
max_guesses = 3
def func1():
#Input string 'left' or 'right'
in_str = input("You are in the Lost Forestn****************n****************n :)n****************n****************nGo left or right? ")
#Number of attempts made
n = 1
if in_str.lower() == "left":
print("You're out of lost forest")
while in_str.lower() == "right":
in_str = input("You are in the Lost Forestn****************n****** ***n :(n****************n****************nGo left or right? ")
n = 1
if in_str.lower() == "left":
print("You're out of lost forest")
break
if n >= max_guesses:
print("Game over!!!")
break
print("Total attempts made by user: ",n)
func1()
Ответ №3:
Я попытался исправить ваш код, однако мне пришлось удалить цикл for и изменить имена переменных. Надеюсь, это поможет.
n = 1
max_guesses = 3
a = input("You are in the Lost Forestn****************n****************n :)n****************n****************nGo left or right? ")
if a.lower() == "left":
print("You're out of lost forest")
while a.lower() == "right":
if n == 3:
print("Game over! You ran out of your lives")
break
else:
a = input("You are in the Lost Forestn****************n****** ***n :(n****************n****************nGo left or right? ")
n = 1