未定义obj输入的随机数生成器名称

时间:2014-10-23 01:52:54

标签: python loops random while-loop scope

我正在尝试编写一个简单的随机数生成器,刚开始学习python,但我已经用C和matlab编程,可能对我有害。我认为我的代码的问题是范围的问题,但是如果我在第一个while循环中移动obj,我无法弄清楚第一个while循环应该具有的条件。我的代码如下,我得到的错误就是这样。

我使用的输入是y。我的问题实际上并不是关于随机数生成器,或者是将一些代码放在函数中,因为我可以稍后再进行处理。这是学习的第一次尝试 语法等。

代码:

import random
count = 0
obj = 'y'
exit = 0

while obj.strip() != 'n' or obj.strip() != 'N':
    count = count + 1; #counter keeps track of number of random dice rolls
    if 1 == count:
        print 'Welcome to Random Number Generator'
        print'Your first roll is a', random.randrange(0,10)
        print ''
    elif 1 < count:
        print random.randrange(0,10)

    while obj.strip() != 'y' or obj.strip() != 'Y' or obj.strip() != 'n' or obj.strip() != 'N':
        exit = exit + 1;
        obj = input("Continue? Y/N")
        if 1 < exit:
            print 'Invalid input!'
            print 'Please press Y to continue or N to quit.'

错误:

Traceback (most recent call last):
    File "RandomNumber.py", line 32, in <module>
        obj = input("Continue? Y/N")
    File "<string>", line 1, in <module>
NameError: name 'y' is not defined

2 个答案:

答案 0 :(得分:0)

while循环内的第一行有一个分号。

while obj.strip() != 'y' or obj.strip() != 'Y' or obj.strip() != 'n' or obj.strip() != 'N':
    exit = exit + 1;   <---------- here
    obj = input("Continue? Y/N")
    if 1 < exit:
        print 'Invalid input!'
        print 'Please press Y to continue or N to quit.'

答案 1 :(得分:0)

如果你正在使用Python 2(并且你是,请相信我),你应该知道input将从用户获得一些东西然后尝试评估它。 < / p>

这就是为什么它抱怨名字y。您输入y以回答问题Continue? Y/N,然后快速尝试评估您的输入。

事实上,如果你在输入陈述之前放置y = "n"行,当你试图弄清楚为什么忽略你的继续请求时,你会感到很多焦虑和咬牙切齿: - )

要查看此操作,请尝试在以下程序中输入7 + 2

print input("? ")

您会看到它输出9

您应该使用raw_input,而尝试评估您提供的内容(如果您将input更改为raw_input上面的程序,输出是7 + 2而不是9)。

在Python 3中,input以更少,更......令人惊讶的方式行事。