不进行整数输入

时间:2015-05-14 23:32:30

标签: python input integer

我希望用户不要使用此函数进行整数输入:

x = input("Whats your name?") 
while x == int:
y = input("why is there a number in your name? Please re enter your name")

但这不起作用。知道为什么吗?

5 个答案:

答案 0 :(得分:2)

改善@ persian_dev的答案 -

def check_name(string):
    for char in string :
        try:
            int(char)
            return False
        except:
            continue
    return True

这会遍历字符串,尝试将每个字符转换为int,并在第一次成功时返回False。

答案 1 :(得分:1)

输入函数会将用户输入的任何内容转换为字符串。

所以你想要查看x中是否包含任何数字,而不是类型。

见这里: check if a string contains a number

答案 2 :(得分:1)

这是一个检查功能:

def isnumeric(string):
    try:
        int(string)
        return True
    except:
    return False

def check_name(string):
    for char in string:
        if isnumeric(char):
            return False
    return True

答案 3 :(得分:1)

如果您只想确保用户输入仅包含字符串,可以使用(oby)$ pip freeze -bash: /Users/s4l1818/Desktop/oby/bin/pip: /Users/s4l1818/Desktop/test/bin/python: bad interpreter: No such file or directory 检查输入:

isalpha()

我使用的是Python 2,因此我使用x = raw_input("Whats your name?") while not x.isalpha(): x = raw_input("why is there a number in your name? Please re enter your name") 代替raw_input。如果您使用Python 3,则可以相应地进行调整。

答案 4 :(得分:-1)

input是一种类型。你不是在问“x是否包含数字?”甚至“是xa数字吗?”,你问“是x号吗?” / em>(整数,更准确地说)。没有意义。假设输入名称有效,那么您使用的是Python 3,在这种情况下,isinstance(x, int)的结果始终是一个字符串。即使它只是一串数字。所以int(...)也行不通。您可以尝试使用y进行投射,但如果名称只包含字母中的某个数字,则无效。

这是测试字符串中是否有任何数字的好方法:

  

any(map(str.isdigit,x))

在您的代码中,同时将x更正为x = input("Whats your name? ") while any(map(str.isdigit, x)): x = input("why is there a number in your name? Please re enter your name ")

var ps = PowerShell.Create(myRS);
ps.Commands.AddCommand("Import-Module").AddArgument(@"g:\...\PowerDbg.psm1")
ps.Invoke()