如何使用:和;两个分隔符拆分用户输入并校验输入格式合法性
实现方案
你可以先按;拆分出所有科目-数值对,再对每个配对单独按:拆分,同步增加多层合法性校验即可满足需求。
需覆盖的校验规则
- 按
;拆分后必须恰好得到4个非空元素 - 每个元素必须能且仅能按
:拆分为2个非空部分,分别对应科目名称和数值 - 若要求数值为数字类型,可额外增加类型合法性校验
完整代码
raw_input = input("Enter 4 subjects and amount separated by (;) like Math:90;Science:80:") res = {} valid = True # 第一步:按分号拆分科目对 subject_list = raw_input.split(";") if len(subject_list) != 4: valid = False else: for item in subject_list: # 第二步:按冒号拆分单条科目-数值 parts = item.split(":") # 校验拆分结果格式 if len(parts) != 2 or not parts[0].strip() or not parts[1].strip(): valid = False break # 数值为整数的校验,不需要可删除 try: score = int(parts[1].strip()) except ValueError: valid = False break res[parts[0].strip()] = score if not valid: print("Invalid Input") else: # 合法输入的处理逻辑,此处直接打印结果示例 print(res)
测试示例
- 输入
Math:90;Science:85;English:88;History:92,输出{'Math': 90, 'Science': 85, 'English': 88, 'History': 92} - 输入
Math:90;Science:85;English:88、Math;90;Science:85;English:88;History:92等不符合规则的内容,输出Invalid Input
内容的提问来源于stack exchange,提问作者Yuzuki Yuki
相关产品推荐
相关产品推荐

