You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:09:04