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

Python冷热猜数字游戏报错:unsupported operand type(s) for -: 'str' and 'str'

冷热猜数字游戏问题修复

核心错误分析

  • 类型不匹配报错:你把随机生成的答案转成了字符串(str(random.randint(1, 1000))),而input()返回的用户输入也是字符串类型。字符串无法直接执行减法运算,这就是unsupported operand type(s) for -: 'str' and 'str'错误的根源。
  • 语法错误:第三个print("You're cold."语句缺少闭合括号),会触发语法解析错误。
  • 逻辑顺序问题:原代码先判断abs(...) <=250,再判断<=100,但所有满足<=100的数值必然也满足<=250,导致第二个条件永远不会被触发。

修正后的代码

import random

# 生成1-1000之间的整数答案,无需转字符串
answer = random.randint(1, 1000)
# 将用户输入转换为整数,同时添加异常处理防止非数字输入
try:
    guess = int(input('take a guess\n'))
    diff = abs(guess - answer)
    if diff <= 100:
        print("You're getting warmer.")
    elif diff <= 250:
        print("You're warm!")
    else:
        print("You're cold.")
except ValueError:
    print("请输入有效的整数!")

关键修改说明

  1. 移除answer的str()转换,保留整数类型,同时无需导入math模块(abs()是Python内置函数)。
  2. 将用户输入guess通过int()转换为整数,并添加try-except捕获非数字输入的异常,提升程序健壮性。
  3. 调整条件判断顺序,先判断更小的范围(<=100),再判断<=250,确保逻辑正确触发。
  4. 修复print语句的括号缺失问题,并用else简化最后一个条件判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:47:32