检查字符串中的整数 - python

Checking for integers in a string - python

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

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

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

首先,不要将 str 转换为 input returns 和 str。来自 docs

的注释

The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that

将输入输入 name 后,您可以获得 if 条件。

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

别忘了import re

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

您可能想要添加 -, " " 和任何其他可能的字符的地方。

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

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

同样,您也可以使用方法isalpha()来检查字符串是否只是文本。但是,如果有 space,它将 return False。

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

也许:

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