0

我查看了有关此主题的其他帖子,但一开始仍然找不到我做错了什么。我使用的是 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"        

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

4

6 回答 6

3

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

改用raw_input(...)

userInput = raw_input("python, ruby, or java?:")
于 2013-09-25T23:00:11.757 回答
2

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

if userInput not in gameList:
    print "game is over"
于 2013-09-25T22:57:01.857 回答
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”。

于 2013-09-25T22:54:16.867 回答
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"  
于 2013-09-25T23:00:20.393 回答
0

实际上,答案是我迄今为止看到的两个版本的答案的组合。

首先,input()不返回字符串,它返回输入的文字字符,所以当你输入'python'时,它正在寻找python不存在的变量。

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

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

轻松解决:

if userInput not in gameList:
    #execute
于 2013-09-25T23:15:41.873 回答
0

使用not in运算符:

if userInput not in gameList:
    print "The game is over"
于 2013-09-25T22:56:20.320 回答