运行Python程序时出现问题,错误:名称's'未定义

时间:2010-05-07 17:52:01

标签: python python-3.x

这是我的代码:

#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作为IDE并按F5进行测试。它可能默认加载2.6,但我真的不知道。 :(

修改 错误1是:

File "GuessingGame.py", line 8, in <Module>
myName = input()

错误2是:

File <string>, line 1, in <Module>

3 个答案:

答案 0 :(得分:4)

在Python 2中输入input()的数据时,您将输入Python表达式。无论你输入什么

  1. 看起来像一个表达式 - 不是文字。

  2. 中有一个S(因此是未定义的变量。)

  3. 要么

    • 将字符串放在引号或

    • 停止使用input()并使用raw_input()

    • 停止使用Python 2.6。

    目前尚不清楚“我安装了Python 3,但Python 2.6正在解释该程序。”手段。如果已安装,为什么不使用它?您的PATH有什么问题?

答案 1 :(得分:1)

如果您想在Python 2中运行此功能,则必须将input()的调用替换为raw_input()

答案 2 :(得分:0)

简单修复。将输入更改为raw_input,然后关闭。例如:

myName = raw_input("Hello! What's your name kid? ")

查看Python documentatio n以获取更多详细信息,但是您希望避免使用输入,因为它正在尝试eval()返回的内容;

  

警告

     

此功能对用户不安全   错误!它期望有效的Python   表达作为输入;如果输入是   没有语法上的有效,一个SyntaxError   将被提出。其他例外可能   如果在期间出现错误则被提出   评价。 (另一方面,   有时这正是你的意思   在编写快速脚本时需要   专家使用。)