Python如何通过字典实现两类用户输入的合法性校验
核心实现思路
采用「无限循环+条件校验」的逻辑,只有输入完全符合要求时才跳出循环获取有效值,否则持续提示用户重新输入,从根源避免非法输入导致的异常崩溃:
- 字符类输入:先对输入做标准化处理(去除首尾空格、统一转小写),避免大小写、多余空格导致的校验失败,再判断是否在合法值集合内
- 整数类输入:先用
try-except捕获非数字输入的类型转换异常,再判断转换后的整数是否在合法取值范围内
改后完整代码
1. 玩家回合输入校验
human_input_map = { 's': 'Steal', 'd': 'Deal', 'q': 'Quit' } # Human's turn while True: human = input('Steal, Deal or Quit [s|d|q]?: ').strip().lower() if human in human_input_map: human = human_input_map[human] break print("输入不合法!仅允许输入s/d/q(不区分大小写),请重新输入。")
2. 电脑策略选择输入校验
import random print('1. Always Steal') print('2. Always Deal') print('3. Random\n') while True: comp_input = input('Which strategy for the computer [1,2,3]? ').strip() try: comp_strat = int(comp_input) except ValueError: print("输入不合法!仅允许输入1/2/3三个整数,请重新输入。") continue if comp_strat in (1, 2, 3): break print("输入不合法!仅允许输入1/2/3三个整数,请重新输入。") print(" ") sd = ["Steal", "Deal"] if comp_strat == 1: comp_choice = 'Steal' elif comp_strat == 2: comp_choice = 'Deal' elif comp_strat == 3: comp_choice = random.choice(sd)
内容的提问来源于stack exchange,提问作者McFez
相关产品推荐
相关产品推荐

