简单函数要求正整数和验证输入

时间:2016-11-23 16:28:16

标签: python function input integer

我只是想创建一个函数,要求一个正整数,然后验证输入确实是一个正整数:

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'未定义”。

这太荒谬了,我觉得我应该在这上面找到很多帖子,所以也许我会失明......

谢谢!

3 个答案:

答案 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:")