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

Python石头剪刀布程序OR语句触发str与int比较TypeError如何解决

报错原因
  • Python的input()函数默认返回字符串类型,你的代码在没有将userChoice转换为整数的前提下,直接执行了userChoice < 0 or userChoice > 3.0的大小比较操作,字符串和整数/浮点数不支持直接比较,因此触发了TypeError。
  • 第二行的userChoice == int(input, userChoice < 0 or userChoice > 3.0)存在多处语法和逻辑错误:
    • ==是相等比较运算符,不能用于变量赋值
    • int()的传参规则错误,你错误地将内置函数input作为了第一个转换参数,同时把布尔类型的比较结果作为了第二个参数,完全不符合类型转换的使用要求
    • 没有做合法输入的判断分支,当前代码无论用户输入什么内容,都会直接打印“Invalid choice”提示,逻辑完全错误。
修复方案

你需要先校验输入是否为合法数字,转换为整数后再做范围校验,同时增加循环逻辑,直到用户输入合法值才返回结果,参考实现如下:

def userPick():
    while True:
        user_input = input("Enter a (1) for rock, (2) for paper, (3) for scissors, or (0) to quit:\n")
        # 先判断输入是否为纯数字
        if not user_input.isdigit():
            print("Invalid choice. Try again.\n")
            continue
        userChoice = int(user_input)
        # 再判断数字范围是否合规
        if 0 <= userChoice <= 3:
            return userChoice
        else:
            print("Invalid choice. Try again.\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:24:08