1
#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 新手,所以很可能我错过了一些明显的东西。程序运行良好。这是一个摇滚,纸或剪刀游戏。进行 5 场比赛,比赛结束时列出分数。目前,无论哪种方式,它都只说 1 0、0 0 或 0 1,只计算 1 场比赛。我不确定这是为什么。我认为这与我的缩进有关,因为我没有看到我的循环有问题。

4

2 回答 2

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 ==行都应该缩进,以便它们成为循环体的一部分。

于 2012-04-18T15:20:51.363 回答
0

是的,您的缩进似乎确实是问题所在。你应该识别这条线

CpuChoice = random.choice(Choices)   

然后行

if UserChoice == ...

到与线相同的水平

if UserChoice in Choices:

whileidentatation 返回与while. 因此,目前,您的所有if UserChoice == ...条件仅在while循环完成后检查一次(这就是您看到1 00 0或的原因0 1)。如果您确定我建议的行,那么它们将成为while循环体的一部分。

于 2012-04-18T15:19:17.393 回答