基本缩进 - Python

时间:2012-04-18 15:15:50

标签: python

#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场比赛。我不确定为什么会这样。我认为这与我的缩进有关,因为我没有看到我的循环有问题。

2 个答案:

答案 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 00 0或{的原因{1}})。如果你确定我建议的行,那么它们将成为0 1循环体的一部分。