检查字符串中的整数 - python

时间:2015-03-25 20:25:48

标签: python string python-3.x integer

我有一个询问用户姓名的程序:

while True:
try:
    name = str(input("Please enter your name > "))
except ValueError:
    print("Please enter a valid name")
    continue
else:
    break

我想阻止用户输入一个整数,但是使用上面的代码,字符串中会接受整数。如何防止用户在字符串中输入整数?

4 个答案:

答案 0 :(得分:5)

首先,不要将str转换为input返回str。请注意docs

  

然后函数从输入中读取一行,将其转换为字符串(剥离尾随换行符),然后返回

在您输入name后,您可以有if条件。

name = str(input("Please enter your name > "))
if (re.search('\d',name)):
     print("Sorry your name contains a number")

不要忘记import re

答案 1 :(得分:1)

break在尝试转换为int时如果引发异常,因为它不是int:

while True:
    name = input("Please enter your name > ")
    try:
        int(name)
    except ValueError:
        break        
    print("Please enter a valid name")

str.digit也可能有用,但在负面输入时会失败。

要检查任何字符是否为数字,请使用:

while True:
    name = input("Please enter your name > ")
    if any(ch.isdigit() for ch in name):
        print("Please enter a valid name")
    else:
        break

您还可以创建一组可接受的字符:

from string import ascii_letters
st = set(ascii_letters)
while True:
    name = input("Please enter your name > ")
    if not st.issuperset(name):
        print("Please enter a valid name")
    else:
        break

您可能希望添加-, " "和任何其他潜在字符。

答案 2 :(得分:0)

您可以使用字符串方法isdigit()来检查字符串是否只是整数。

name = input("Please enter your name: ")
if name.isdigit() == True:
    print ("That's not a name!")

同样,您也可以使用方法isalpha()来检查字符串是否只是文本。但是,如果有空格,则返回False。

name = input("Enter your name: ")
if name.isalpha() != True:
    print ("That's not a name!")

答案 3 :(得分:0)

也许:

if len(set(name) - set('1234567890')) < len(set(name)):
    name = input("Please enter a valid name: ")