在python中的简单游戏

时间:2013-09-25 22:51:31

标签: python

我查看了有关此主题的其他帖子,但仍然无法找到我在开始时做错的事情。我使用的是python,ruby和java,而不是摇滚,纸张和剪刀。它还没有接近完成。我还没有进入if循环,但如果用户输入的内容不同于“python”,“ruby”或Java“,我希望它也打印”游戏结束了。“我收到错误说字符串我输入的内容没有定义。有人可以引导我朝着我需要去的方向前进吗?我认为在比较userInput和gameList时我很困惑,因为gameList是一个列表。

import random
def pythonRubyJava():
    gameList = ["python","ruby","java"]
    userInput = input("python, ruby, or java?:")
    randomInput = random.choice(gameList)
    if userInput != gameList:
        print "The game is over"

我找到了那个部分。我需要将“python”,“ruby”和“java”存储为变量才能继续吗?或者你会去哪里?

import random
def pythonRubyJava():
    gameList = ["python","ruby","java"]
    userInput = raw_input("python, ruby, or java?:")
    randomInput = random.choice(gameList)
    print randomInput
    if userInput not in gameList:
        print "The game is over"
    if userInput == "python" and randomInput == "python":
        print "stalemate"
    if userInput == "ruby" and randomInput == "ruby":
        print "stalemate"
    if userInput == "java" and randomInput == "java":
        print "stalemate"        

我没有得到相同的答案,我希望能够再次运行游戏而不是打印僵局来结束游戏,重新开始。我知道我必须删除“打印”僵局“”但我只想表明这一点。

6 个答案:

答案 0 :(得分:3)

错误发生在第4行,它读取用户输入。问题是input(...)在从命令行读取后解析表达式,因此必须引用字符串。

改为使用raw_input(...)

userInput = raw_input("python, ruby, or java?:")

答案 1 :(得分:2)

您的条件将始终为false,因为您正在将字符串与列表进行比较。你想要做的是检查字符串里面列表,如下所示:

if userInput not in gameList:
    print "game is over"

答案 2 :(得分:1)

您需要使用raw_input()代替input()

import random
def pythonRubyJava():
    gameList = ["python","ruby","java"]
    userInput = raw_input("python, ruby, or java?:")
    randomInput = random.choice(gameList)
    if userInput != randomInput:
        print "The game is over"

使用input()时,输入必须由用户正确格式化,即带引号的“java”。

答案 3 :(得分:1)

我想您正在尝试查看输入是否与三者之间的随机选择相同,在这种情况下,请使用randomInput而不是gameList。并使用raw_input,以便可以输入python而不是"python"

已编辑以解决您的修改问题

import random
def pythonRubyJava():
    gameList = ["python","ruby","java"]
    userInput = raw_input("python, ruby, or java?:")
    randomInput = random.choice(gameList)

    if userInput not in gameList:
        print "The game is over"
    if userInput == randomInput:
        print "stalemate"  

答案 4 :(得分:0)

使用not in运算符:

if userInput not in gameList:
    print "The game is over"

答案 5 :(得分:0)

实际上,答案是我到目前为止所见答案的两个版本的组合。

  
    

首先,input()不返回字符串,它返回输入的文字字符,因此当您输入' python'时,它正在查找不具有的变量python存在。

  

您需要使用引号括住输入才能使其正常工作,但有更好的方法。使用raw_input()将输入作为字符串值。

  
    

此外,一旦您解决了这个问题,您就会在第6行出现错误。在第6行,您要将答案与整个列表进行比较,但需要将其与每个项目进行比较列表中。

  

轻松解决:

if userInput not in gameList:
    #execute