有没有办法确保raw_input只是非数字?

时间:2016-08-29 17:06:46

标签: python python-2.7

我想确保用户以正确的格式输入输入,我知道如何确保其数字输入,但我不明白如何确保它不是数字输入。

x = raw_input('What is your name? ')
y = raw_input('What is your age? ')
try:
    something_to_make_sure_its_not_numeric(x)
    int(y)
    print "Hello {0}, You look very handsome for someone who is {1}.".format(x, y)
except:
    print('please enter input in correct format')
问题是在python中有一些函数如int(),它确保它只有字母。

5 个答案:

答案 0 :(得分:1)

isdigit()函数还有string来检查字符串是否为数字。要检查它是否为非数字,只需使用条件为

not即可
>>> 'xyx'.isdigit()
False
>>> '123'.isdigit()
True

# Now check output with "not"
>>> not 'xyx'.isdigit()
True
>>> not '123'.isdigit()
False

最好使用isdigit()

创建自定义函数以实现此目的
def is_non_numeric(num_str):
    return not num_str.isdigit()

# Example
>>> is_non_numeric('123')
False
>>> is_non_numeric('xyz')
True

答案 1 :(得分:1)

检查它是否为数字,并取其值

if x.isdigit():
           print_error
else:

或使用

x.isnumeric()

答案 2 :(得分:0)

您可以使用re module,这样可以检查字符串是否包含例如数字:

import re
string = "626dsqd"
test = re.search("\d", string)
if test:
  print('please enter input in correct format')

答案 3 :(得分:0)

以下表达式仅返回True所有字母均为非数字:

all(not s.isdigit() for s in x)

答案 4 :(得分:0)

您可以使用正则表达式来执行此操作:

import re
tester = re.match(r'^[a-zA-Z]*$', x)
if tester:
    print x
else:
    print 'Incorrect input'

如果匹配方法的返回值为None,那么您的输入不符合您的正则表达式规则。在上面的示例中,它仅验证是否是单个字符串,但您可以更改您的重新规则以匹配您想要的任何内容。

有关re。

的详细信息,请参阅here中的文档