检查字符串中的整数 - 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: ")
我有一个询问用户姓名的程序:
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: ")