input().split()的验证

问题描述 投票:0回答:2

我必须使用 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()

python input split
2个回答
0
投票

您的代码看起来不错,正如@jarmod 所评论的:

你可以这样做:

name, identical_num, enterence_year, field = input("Enter 4 values separated by a space").split()

从 1

input()
获取 4 个值。

继续使用您的代码。


0
投票

您可以要求用户输入以空格分隔,用空格分隔所有值,然后单独验证每个值。常见的 try- except 可用于捕获所有

ValueError
s

示例代码:

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)
© www.soinside.com 2019 - 2024. All rights reserved.