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

Python输入验证问题:无法识别负数,需实现重新问询功能

问题分析

你的代码主要有两个核心问题:

  • 条件判断逻辑错误:if mph or hours < 0: 这个写法完全不对。Python会先判断mph是否为“真值”(只要不是0、空值这类就会被视为True),所以哪怕输入的是正数车速,这个条件也会触发提示,反而真正的负数输入可能没被正确识别。正确的写法应该是分别检查两个数值是否小于0:if mph < 0 or hours < 0:。
  • 循环和重输入逻辑混乱:原代码里如果检测到负数,重新输入后没有再次验证,直接就计算距离并退出循环了,而且不管验证通不通过,最后都会执行break,导致循环根本没起到重复询问的作用。
修复后的代码
while True:
    mph = float(input('What is the speed of the vehicle '))
    hours = float(input('How many hours has it traveled '))
    # 正确判断是否有负数输入
    if mph < 0 or hours < 0:
        print('That was a negative number, answer the questions again. ')
        # 直接回到循环开头重新询问,避免重复代码
        continue
    # 验证通过才计算距离并退出
    distance = mph * hours
    print('Miles traveled:', distance)
    break
关键改动说明
  • 修正条件判断语句,确保只有车速或行驶小时数为负数时才触发提示。
  • 用continue替代重复的输入代码,只要验证不通过就回到循环开头重新询问,保证每次输入都会被校验。
  • 把计算距离和退出循环的逻辑放在验证通过的分支里,确保只有合法输入才会执行这部分操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:17:31