我可以接受两种格式的用户输入:
123
123,234,6028
我需要写一个函数/几行代码来检查输入是否遵循正确的格式。
规则:
- 如果一个数字输入,那么它应该只是一个数字之间的1和5位长
- 如果有多个数字,那么它应该是逗号分隔的值,但没有空格和字母,最后一个数字后面不允许有逗号/句号/字母。
函数只检查格式是否正确,否则打印Incorrect formatting, try entering again
。
我认为我需要使用re
模块。
Thanks in advance
你可以使用一个简单的正则表达式:
import re
validate = re.compile('d{1,5}(?:,d{1,5})*')
validate.fullmatch('123') # valid
validate.fullmatch('123,456,789') # valid
validate.fullmatch('1234567') # invalid
在测试中使用:
if validate.fullmatch(your_string):
# do stuff
else:
print('Incorrect formatting, try entering again')
另一个选项是:
def validString(string):
listofints = [v.isdigit() for v in string.split(",") if 0 < len(v) < 6]
if not len(listofints) or not all(listofints):
print("Incorrect formatting, try entering again.")
如果输入的ibinput符合规则,下面的代码应该将布尔变量valid
保留为True
,否则保留为False
:
n = input("Your input: ")
valid = True
try:
if int(n) > 9999:
valid = False
except:
for character in n:
if not character in "0123456789,":
valid = False
if n[-1] == ",":
valid = False