我正在尝试编写一个简单的随机数生成器,刚开始学习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
答案 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
以更少,更......令人惊讶的方式行事。