CS105课程Python if-else与while循环测验题代码调试求助
问题分析与代码修正
你的代码存在几个致命问题,直接导致了无限循环和逻辑错误:
- 运算未赋值:
inval+inval仅计算了结果,但没有将值存回变量,inval永远是用户输入的初始值,循环会一直满足inval<100的条件,陷入死循环。 - 死循环无出口:
while True是无条件循环,即便你把inval设为False,循环也不会自动终止,必须通过break手动跳出。 - 逻辑偏差:题目要求累加数字直到总和超过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
相关产品推荐
相关产品推荐

