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
相关产品推荐
相关产品推荐

