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

CS105课程Python if-else与while循环测验题代码调试求助

问题分析与代码修正

你的代码存在几个致命问题,直接导致了无限循环和逻辑错误:

  1. 运算未赋值:inval+inval仅计算了结果,但没有将值存回变量,inval永远是用户输入的初始值,循环会一直满足inval<100的条件,陷入死循环。
  2. 死循环无出口:while True是无条件循环,即便你把inval设为False,循环也不会自动终止,必须通过break手动跳出。
  3. 逻辑偏差:题目要求累加数字直到总和超过100,你不该直接修改输入的原始数字,需要单独维护一个变量存储总和。

修正后的代码(符合题目“总和超过100”要求)

# 获取用户输入并转为浮点型
user_num = float(input('Input a number greater than zero and less than or equal to 10: '))

if 0 < user_num <= 10:
    total = 0  # 初始化总和变量
    # 当总和未超过100时继续累加
    while total <= 100:
        total += user_num  # 每次将输入的数字加到总和中
    print(total)
else:
    print('You did not enter a value between 1 and 10')

若你想实现“数字自翻倍至超过100”

要是你原本的思路是让输入的数字不断自加(即翻倍)直到超过100,代码可以调整为:

user_num = float(input('Input a number greater than zero and less than or equal to 10: '))

if 0 < user_num <= 10:
    current = user_num
    while current <= 100:
        current += current  # 等价于 current *= 2,实现自翻倍
    print(current)
else:
    print('You did not enter a value between 1 and 10')

核心注意点

  • 变量修改必须赋值,比如用x += y而非x+y
  • while循环要么设置明确的终止条件,要么在满足退出要求时用break跳出
  • 区分“输入的原始数字”和“累加/翻倍后的数值”,分开存储避免逻辑混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:25:15