运行Python程序时出错:名称's'未定义

2 投票
3 回答
25709 浏览
提问于 2025-04-15 22:28

这是我的代码:

#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表达式。你输入的内容

  1. 看起来像个表达式,而不是简单的文字。

  2. 里面有个S(所以会出现未定义的变量)。

你可以选择

  • 把你的字符串用引号括起来,或者

  • 不再使用input(),改用raw_input(),或者

  • 不再使用Python 2.6。

关于“我安装了Python 3,但程序却在用Python 2.6解释”这句话并不太清楚。如果已经安装了,为什么不使用它呢?你的PATH设置有什么问题吗?

撰写回答