Как вырваться из цикла while в Python?
Мне нужно сделать эту игру для моего класса comp, и я не могу понять, как выйти из этого цикла. Видите, я должен играть против "компьютера", свернув большие числа и видя, у кого больше очков. Но я не могу понять, как "сломаться" с моей очереди, и переход на компьютеры повернется. Мне нужно "Q" (quit), чтобы сигнализировать о начале вращения компьютера, но я не знаю, как это сделать.
ans=(R)
while True:
print('Your score is so far '+str(myScore)+'.')
print("Would you like to roll or quit?")
ans=input("Roll...")
if ans=='R':
R=random.randint(1, 8)
print("You rolled a "+str(R)+".")
myScore=R+myScore
if ans=='Q':
print("Now I'll see if I can break your score...")
break
Ответы
Ответ 1
Несколько изменений означают, что будут катиться только R
или R
. Любой другой персонаж покинет
import random
while True:
print('Your score so far is {}.'.format(myScore))
print("Would you like to roll or quit?")
ans = input("Roll...")
if ans.lower() == 'r':
R = np.random.randint(1, 8)
print("You rolled a {}.".format(R))
myScore = R + myScore
else:
print("Now I'll see if I can break your score...")
break
Ответ 2
Что бы я сделал, это запустить цикл до тех пор, пока ans не будет Q
ans=(R)
while not ans=='Q':
print('Your score is so far '+str(myScore)+'.')
print("Would you like to roll or quit?")
ans=input("Roll...")
if ans=='R':
R=random.randint(1, 8)
print("You rolled a "+str(R)+".")
myScore=R+myScore
Ответ 3
ans=(R)
while True:
print('Your score is so far '+str(myScore)+'.')
print("Would you like to roll or quit?")
ans=input("Roll...")
if ans=='R':
R=random.randint(1, 8)
print("You rolled a "+str(R)+".")
myScore=R+myScore
else:
print("Now I'll see if I can break your score...")
ans = False
break
Ответ 4
Не используйте в то время как истина и нарушать заявления. Это плохое программирование.
Представьте, что вы пришли для отладки чужого кода, и вы видите некоторое время True в строке 1, а затем вам приходится пробираться через еще 200 строк кода с 15 операторами break, при этом приходится читать множество строк кода для каждой из них, чтобы выработать что на самом деле заставляет его добраться до перерыва. Вы хотели бы убить их... много.
Условие, при котором цикл while прекращает итерацию, всегда должно быть ясно из строки кода while, без необходимости искать в другом месте.
У Фила есть "правильное" решение, так как оно имеет четкое конечное условие прямо в самом операторе while.