运行Python程序时出错:名称's'未定义
这是我的代码:
#This is a game to guess a random number.
import random
guessTaken = 0
print("Hello! What's your name kid")
myName = input()
number = random.randint(1,20)
print("Well, " + myName + ", I'm thinking of a number between 1 and 20.")
while guessTaken < 6:
print("Take a guess.")
guess = input()
guess = int(guess)
guessTaken = guessTaken + 1
if guess < number:
print("You guessed a little bit too low.")
if guess > number:
print("You guessed a little too high.")
if guess == number:
break
if guess == number:
guessTaken = str(guessTaken)
print("Well done " + myName + "! You guessed the number in " + guessTaken + " guesses!")
if guess != number:
number = str(number)
print("No dice kid. I was thinking of this number: " + number)
我遇到的错误是:
Name error: Name 's' is not defined.
我觉得问题可能是因为我安装了Python 3,但程序却是用Python 2.6来运行的。我在使用Linux Mint,如果这能帮到你们的话。
我用Geany这个开发环境,按F5来测试代码。可能默认是加载2.6版本,但我不太确定。 :(
编辑: 错误1是:
File "GuessingGame.py", line 8, in <Module>
myName = input()
错误2是:
File <string>, line 1, in <Module>
3 个回答
0
简单的解决办法。把你的输入改成 raw_input,就可以了。例如:
myName = raw_input("Hello! What's your name kid? ")
想了解更多细节,可以查看 Python 文档,不过最好避免使用 input,因为它会尝试对返回的内容进行 eval() 处理;
警告
这个函数对用户的错误不太安全!它期待输入一个有效的 Python 表达式;如果输入的内容在语法上不正确,就会抛出 SyntaxError 错误。如果在评估过程中出现其他错误,也可能会抛出其他异常。(不过,有时候在写快速脚本给专家用的时候,这正是你需要的。)
2
如果你想在Python 2中运行这个,你需要把调用input()
的地方换成raw_input()
。
6
在Python 2中,当你使用input()
输入数据时,其实你是在输入一个Python表达式。你输入的内容
看起来像个表达式,而不是简单的文字。
里面有个S(所以会出现未定义的变量)。
你可以选择
把你的字符串用引号括起来,或者
不再使用
input()
,改用raw_input()
,或者不再使用Python 2.6。
关于“我安装了Python 3,但程序却在用Python 2.6解释”这句话并不太清楚。如果已经安装了,为什么不使用它呢?你的PATH设置有什么问题吗?