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

Python开发石头剪刀布游戏:如何处理用户无效输入的异常?

问题1:Python中处理无效字符串输入的异常方案
  • 可以主动抛出内置异常(比如ValueError),当输入不符合预期选项/格式时,手动触发异常并捕获处理
  • 也可自定义异常类,针对特定输入错误场景,让代码语义更清晰
  • 捕获异常时要避免裸except,指定具体异常类型,防止意外捕获其他无关错误(比如KeyboardInterrupt)
  • 配合循环实现输入重试,直到用户提供有效内容
问题2:石头剪刀布游戏的输入异常处理修正

你的代码存在几处问题,以下是调整后的版本及说明:

原代码问题点

  1. 条件判断逻辑错误:用or会导致任何输入都触发异常(输入不可能同时等于三个选项),应改为and或直接判断是否在有效集合内
  2. 函数定义不规范:类方法需self参数,或用@staticmethod声明为静态方法
  3. 异常捕获范围过大:裸except会捕获所有异常,应只捕获你主动抛出的特定异常
  4. 大小写处理滞后:应先将输入转小写再判断,避免因大小写导致的无效判定

修正后的代码

class RockPaperScissors:
    @staticmethod
    def getUserChoice():
        valid_choices = {"rock", "paper", "scissors"}
        while True:
            try:
                user_input = input("Type in your choice: rock, paper, scissors: ").strip().lower()
                if user_input not in valid_choices:
                    raise ValueError("Invalid choice, please try again")
                return user_input
            except ValueError as e:
                print(e)

关键优化说明

  • 用集合valid_choices存储有效选项,判断逻辑更简洁高效
  • 先对输入做strip()(去除前后空格)和lower()处理,兼容用户输入的大小写和多余空格
  • 仅捕获ValueError,避免误捕获其他意外异常(比如用户按Ctrl+C触发的中断)
  • 抛出异常时携带明确提示,用户能直接知晓错误原因

内容的提问来源于stack exchange,提问作者ak.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:31:37