如何在Python中退出while循环?

40 投票
5 回答
225377 浏览
提问于 2025-04-17 14:08

我需要为我的计算机课做一个游戏,但我不知道怎么跳出这个循环。这个游戏是我和“电脑”对战,我需要掷出更大的数字,看看谁的分数更高。但是我不知道怎么结束我的回合,转到电脑的回合。我需要按“Q”键来表示电脑的回合开始,但我不知道该怎么实现。

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

5 个回答

10

不要使用 while True 和 break 语句。这种写法不好。

想象一下,你在调试别人的代码,第一行就看到一个 while True,然后你还得翻阅后面200行代码,里面有15个 break 语句。每遇到一个 break,你都得仔细看很多行代码,搞清楚到底是什么原因让它跳出循环。你肯定会想要揍他们...非常想。

导致 while 循环停止的条件应该在循环的那一行代码里就能看得清清楚楚,而不需要到处去找。

Phil 的写法是“正确”的,因为在他的 while 循环语句里就有一个明确的结束条件。

13

我会让这个循环一直运行,直到答案是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
26

有几个小改动意味着只有字母 Rr 会继续执行。其他任何字符都会让程序停止。

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

撰写回答