Подтвердить что ты не робот

Как вырваться из цикла 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
4b9b3361

Ответ 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.