2014-07-06 42 views
-2

我是新来的python,因为你可能能够告诉这个问题。我目前正在构建一个Rock,Paper,Scissors游戏,以便将来包含到我正在Python 3.4中开发的更大程序中。我遇到的问题是在下面列出的代码中。意外的缩进和游戏代码中的循环

def computerPlayer(): #randomly selects a rock paper or scissor for computer hand 
    c = random.randint(0, 2) 
if c==0: 
    y=('rock') 
if c==1: 
    y=('scissors') 
if c==2: 
    y==('paper') 
    return y 

在底线回传义面前时,出现了意外的缩进错误,我曾尝试没有结果,现在纠正这个在过去的一天,如果我向前移动它,我得到外界的功能“回归”,但当我把它移回去时,我得到了意想不到的缩进,我老实说在这里完全损失,我不知道该去哪里。任何帮助是非常感谢。

上述问题现在已修复,但我知道有一个循环错误之外的休息。它现在出现在我的代码的末尾。任何帮助非常感谢你。

again = raw_input('do you wish to try again? (yes\no)\n :') #Ask the user if they want play again 
if again == ('yes') or again == ('sure') or again == ('okay'): 
    print ('') 
elif again == ('no') or again == ('nah') or again == ('nope') or again == ('screw you') or again == ('screw it'): 
    print ('FINE THEN!!! =^(\n    (Enter>>>game()<<< if you change your mind)') 
#breaks the loop 
break 

game() 
+1

缩进在Python是很重要的;函数内只有一条线。 – jonrsharpe

+4

不是你的问题的答案 - 你也可以写这个函数为'return random.choice(['rock','scissors','paper'])''。 –

+0

@SvenMarnach嗯,单行实现**是对问题的回答。 –

回答

4

试试这个:

def computerPlayer(): 
    ''' 
    Randomly selects a rock paper or scissor for computer hand 
    ''' 
    c = random.randint(0, 2) 
    if c == 0: 
     y = ('rock') 
    if c == 1: 
     y = ('scissors') 
    if c == 2: 
     y = ('paper') 
    return y 

缩进在python重要的是,它显示了你的方法和控制流开始和结束。在你之前的代码中,if语句没有在该方法下缩进,所以python无法说明它是computerPlayer()函数的一部分。

根据PEP8(python的风格指南),正确的缩进是4个空格。有关PEP8及其对压痕视图的更多信息,请浏览:

http://legacy.python.org/dev/peps/pep-0008/#indentation

+0

你有没有故意将'y =='留在那里? –

+0

@JimmyThompson没有没有。我只是关注OP问题的缩进部分。只是更新了它。 – agconti

+0

@SvenMarnach刚刚添加了一些解释。 – agconti