提问人:TheArvin98 提问时间:10/17/2023 最后编辑:Goku - stands with PalestineTheArvin98 更新时间:10/17/2023 访问量:68
input().split() 的验证
validation of input().split()
问:
我必须使用 input().split() 连续同时输入 4 个项目 而且我不知道如何分别验证这 4 个项目(例如:对于第二个项目,它必须只有十进制和 10 个字符,或者对于第四个项目,它必须小于 20 个字符)。有人可以帮我解决这个问题吗???谢谢
我自己可以用 4 个单独的 input() 来做到这一点,但不知道如何在一个 input() 中做到这一点
my code
name = "0"
identical_num = "wrong"
enterence_year = "wrong"
field= "0"
#name
while name.isalpha() == False or len(name)==0 or len(name)>20:
name= input("Enter the NAME - at least 1 to 20, only character").lower()
#identical_num
while True:
try:
if len(identical_num)==10 and identical_num.isdecimal():
break
else:
identical_num = input("Enter the IDENTICAL_NUM , must be 10 digit")
except ValueError:
print("Invalid input!")
#enterence_year
while True:
try:
if enterence_year not in range(1300,1501):
enterence_year = int(input("Enter the ENTERENCE_YEAR , between 1300 to 1500"))
else:
break
except ValueError:
print("Invalid input!")
#field
while field.isalpha() == False or len(field)==0 or len(field)>20:
field= input("Enter the FIELD - at least 1 to 20, only character").lower()
答:
1赞
Goku - stands with Palestine
10/17/2023
#1
您的代码看起来不错,正如 @jarmod 所评论的那样:
您可以执行以下操作:
name, identical_num, enterence_year, field = input("Enter 4 values separated by a space").split()
从 1 中获取 4 个值。input()
继续你的代码。
2赞
Tanishq Chaudhary
10/17/2023
#2
您可以要求用户输入以空格分隔,用空格拆分所有值,然后单独验证每个值。可以使用通用的 try-except 来捕获所有ValueError
示例代码:
def validate_name(name):
if name.isalpha() == False or len(name) == 0 or len(name) > 20:
raise ValueError("name is at least 1 to 20, only character")
while True:
# strips extra whitespace on either side of the input
name, identical_num, enterence_year, field = (
input("Enter space-separated values: ").strip().split()
)
try:
# validate each field
validate_name(name)
# etc ...
break
# catch exceptions together
except ValueError as e:
print(e)
评论
a,b,c,d = "sell me 12 cows".split()