2016-02-13 80 views
1

我新编程,并试图建立一个简单的岩石剪刀程序在python 2.7。在我的功能我有2个主要的if语句python岩石纸剪刀

rules = raw_input("Before we being playing would you like to hear the rules first? ") 
if rules.lower() == "yes": 
    print """ 
    Scissors cuts Paper 
    Paper covers Rock 
    Rock crushes Scissors""" 

和第二

choice = raw_input("please enter your choice? (Must be either rock, paper or scissors) ") 
computer = random.choice(["rock", "paper", "scissors"]) 

if choice == "rock" or "paper" or "scissors": 
    if choice == computer : 
     print "Its a tie !" 
    elif choice == "rock" and computer == "scissors": 
     print "Rock beats scissors you win!." 

    elif choice == "rock" and computer == "paper": 
     print "Paper beats rock you loose !." 

    elif choice == "paper" and computer == "scissors": 
     print "Scissors beats paper you loose !." 

    elif choice == "paper" and computer == "rock": 
     print "Paper beats rock you win !." 

    elif choice == "scissors" and computer == "paper": 
     print "Scissors beats paper you win !." 

    elif choice == "scissors" and computer == "rock": 
     print "Rock beats scissors you loose !." 
else : 
    print "Invalid Entry Please try again." 

独立,因为他们应该,但是当我试图把它们放在一起在一个函数代码工作的两个位的第一if语句询问有关规则的工作原理,然后在具有程序主要功能的第二条if语句之前退出。我曾尝试缩进第一个if语句中的第二位代码,但它似乎并没有工作

我想知道是否有任何使这2代码的代码在一个简单的函数工作?还是应该用这两个函数创建一个类? 如果任何人有任何提示如何使我的程序更好,请让我知道。感谢您提前提供任何帮助。

继承人的完整代码

import random 

def rock_paper_scissors_spock(): 

    rules = raw_input("Before we being playing would you like to hear the rules first? ") 
    if rules.lower() == "yes": 
     print """ 
     Scissors cuts Paper 
     Paper covers Rock 
     Rock crushes Scissors""" 

    choice = raw_input("please enter your choice? (Must be either rock, paper or scissors) ") 
    computer = random.choice(["rock", "paper", "scissors"]) 

    if choice == "rock" or "paper" or "scissors": 
     if choice == computer : 
      print "Its a tie !": 

     elif choice == "rock" and computer == "scissors": 
      print "Rock beats scissors you win!." 

     elif choice == "rock" and computer == "paper": 
      print "Paper beats rock you loose !." 

     elif choice == "paper" and computer == "scissors": 
      print "Scissors beats paper you loose !." 

     elif choice == "paper" and computer == "rock": 
      print "Paper beats rock you win !." 

     elif choice == "scissors" and computer == "paper": 
      print "Scissors beats paper you win !." 

     elif choice == "scissors" and computer == "rock": 
      print "Rock beats scissors you loose !." 
    else : 
     print "Invalid Entry PLease try again." 


rock_paper_scissors_spock() 
+0

在打印语句后有一个冒号(:),是否是拼写错误? 'print'它是一个领带!“:' – Selcuk

+0

当我摆脱由Selcuk提到的SyntaxError时,你的代码在Python 2.6.6上运行的很好。然而,它确实有一些逻辑错误:'如果选择==“摇滚”或“纸”或“剪刀”:'不会做你认为它的作用。 –

+1

请参阅[为什么'a == b或c或d'总是评估为True?](http://stackoverflow.com/questions/20002503/why-does-ab-or-c-or-d-always-评估为真)(以及链接的问题)以获得解释,以及显示如何修复if语句的示例。 –

回答

2

你说if choice == "rock" or "paper" or "scissors":,但是Python不将choice ==连接到所有的选择。你可以在choice == "rock"周围加上括号,它会做同样的事情。更改为if choice in ("rock", "paper", "scissors")