我只是想创建一个函数,要求一个正整数,然后验证输入确实是一个正整数:
def int_input(x):
x = input('Please enter a positive integer:')
if x != type(int()) and x < 1:
print("This is not a positive integer, try again:")
else:
print(x)
int_input(x)
它给了我“NameError:name'x'未定义”。
这太荒谬了,我觉得我应该在这上面找到很多帖子,所以也许我会失明......
谢谢!
答案 0 :(得分:2)
def int_input():
x = input('Please enter a positive integer:')
if x != type(int()) and x < 1:
print("This is not a positive integer, try again:")
else:
print(x)
int_input()
应该是这样的,你不能在没有声明int_input()
x
答案 1 :(得分:0)
您定义了该函数,然后将其称为x
作为参数,但x
确实未在int_input(x)
范围内定义(本例中为全局)。
您的代码的更正确版本将是:
def int_input(x):
if x != type(int()) and x < 1:
print("This is not a positive integer, try again:")
else:
print(x)
x = input('Please enter a positive integer:')
int_input(x)
此外,这个比较:
x != type(int())
始终为False
,因为type(int())
始终为int
(类型),而x
为值。哦,你也应该将值传递给int()
,否则它总是返回0
。
答案 2 :(得分:0)
我相信你的意思是让代码拒绝浮点值和负值?在这种情况下,您需要在if语句中说or
而不是and
。
def int_input(x):
if x != type(int()) or x < 1:
print("This is not a positive integer, try again:")
else:
print(x)
x = input('Please enter a positive integer:')
int_input(x)
此外,我不确定您使用的是哪个版本的python。 3.x应该可以正常工作,但是如果你使用2.x,如果用户输入一个字符串就会出错。为了防止这种情况,您可以添加以下内容:
def int_input(x):
if x != type(int()) or x < 1:
print("This is not a positive integer, try again:")
else:
print(x)
try:
x = input('Please enter a positive integer:')
int_input(x)
except:
print("This is not a positive integer, try again:")