35

我必须为我的比赛课程制作这个游戏,我不知道如何打破这个循环。看,我必须通过滚动更大的数字来对抗“计算机”,看看谁的分数更大。但我不知道如何从轮到我“打破”,并过渡到计算机轮到。我需要“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
4

5 回答 5

21

一些变化意味着只有一个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
于 2013-01-30T00:30:14.670 回答
10

我要做的是运行循环,直到 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
于 2013-01-30T00:21:39.680 回答
7

不要使用 while True 和 break 语句。这是糟糕的编程。

想象一下,你来调试别人的代码,你在第 1 行看到了一段时间 True,然后不得不在另外 200 行代码中搜索,其中包含 15 个 break 语句,必须阅读无数行代码才能解决问题实际上是什么导致它中断。你会想杀了他们……很多。

导致 while 循环停止迭代的条件应该始终从 while 循环代码行本身中清楚,而无需查看其他地方。

Phil 有“正确”的解决方案,因为它在 while 循环语句本身中有一个明确的结束条件。

于 2019-01-30T12:51:43.933 回答
4
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
于 2013-01-30T00:21:34.793 回答
0

Walrus 运算符(添加到 python 3.8 的赋值表达式)和while-loop-else-clause可以做得更 Pythonic:

myScore = 0
while ans := input("Roll...").lower() == "r":
    # ... do something
else:
    print("Now I'll see if I can break your score...")
于 2021-01-22T05:07:52.100 回答