我必须为我的comp课程制作这个游戏,我无法弄清楚如何突破这个循环。看,我必须通过滚动更大的数字来对抗“计算机”,看看谁有更高的分数。但我无法弄清楚如何从轮到我“打破”,并转向计算机转向。我需要“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
一些变化意味着只有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
我要做的是运行循环,直到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
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
不要使用True和break语句。这是糟糕的编程。
想象一下,你来调试其他人的代码,你在第1行看到一段时间的True,然后必须通过另外200行代码拖曳你的方式,其中包含15个break语句,必须为每个代码读取无数行代码才能解决问题究竟是什么导致它进入休息时间。你想杀死他们......很多。
导致while循环停止迭代的条件应始终从while循环代码行本身清除,而不必查看其他地方。
Phil有“正确”的解决方案,因为它在while循环语句中有明确的结束条件。