#RockPS
import random
Choices=['R','P','S']
UserScore=0
CpuScore=0
Games=0
while Games<6:
UserChoice=input('Rock, paper or scissors? (Type R, P or S respectively)')
if UserChoice in Choices:
Games+=1
CpuChoice = random.choice(Choices)
if UserChoice == 'S' and CpuChoice == 'P':
UserScore+=1
if UserChoice == 'P' and CpuChoice == 'R':
UserScore+=1
if UserChoice == 'R' and CpuChoice == 'S':
UserScore+=1
if UserChoice == 'S' and CpuChoice == 'R':
CpuScore+=1
if UserChoice == 'P' and CpuChoice == 'S':
CpuScore+=1
if UserChoice == 'R' and CpuChoice == 'P':
CpuScore+=1
print(UserScore, CpuScore)
if UserScore>CpuScore:
print('Well done, you won!')
if UserScore==CpuScore:
print('You tied!')
if UserScore<CpuScore:
('Unlucky, you lost.')
我是Python的新手,所以很可能我错过了一些明显的东西。程序运行正常。这是一个Rock,Paper或Scissors游戏。玩了5场比赛,比赛在比赛结束时列出。目前,它只表示1 0,0 0或0 1,只计算1场比赛。我不确定为什么会这样。我认为这与我的缩进有关,因为我没有看到我的循环有问题。
答案 0 :(得分:1)
以下是正在发生的事情:代码的这一部分
while Games<6:
UserChoice=input('Rock, paper or scissors? (Type R, P or S respectively)')
if UserChoice in Choices:
Games+=1
执行6次,但是从这里开始的所有剩余行:
CpuChoice = random.choice(Choices)
if UserChoice == 'S' and CpuChoice == 'P':
UserScore+=1
if UserChoice == 'P' and CpuChoice == 'R':
UserScore+=1
仅在循环迭代完成后执行一次。所有if UserChoice ==
行都应缩进,以便它们是循环体的一部分。
答案 1 :(得分:0)
是的,你的缩进似乎确实是问题所在。你应该识别一行
CpuChoice = random.choice(Choices)
然后是行
if UserChoice == ...
与行
处于同一级别if UserChoice in Choices:
当标识返回到与while
相同的级别时,while
循环的主体结束。因此,目前,在if UserChoice == ...
循环结束后,您的所有while
条件都只会被检查一次(这就是您看到1 0
,0 0
或{的原因{1}})。如果你确定我建议的行,那么它们将成为0 1
循环体的一部分。