Python if-elif与while循环习题:我的作答代码存在什么问题?
Python流程控制练习题代码问题排查
现存代码核心问题
- 核心逻辑不符合需求:题目的「将该数字不断自加」指每次累加原始输入的固定数值,你代码中
inval += inval的写法是每次将当前值翻倍,直接用输入变量做累加器也导致原始输入值丢失。比如输入合法值10时,你的代码输出结果为160,而题目要求的正确结果是110,差异完全来自逻辑理解错误。 - 冗余代码过多:while循环内部的
continue属于无意义语句,循环执行到末尾会自动进入下一轮判断,无需显式声明;while配套的else分支在这里也属于冗余逻辑,循环结束后直接输出结果即可。 - 判断条件冗余:你在elif中重新写了一遍非法输入的判断条件,实际上经过前面if的合法区间校验后,剩余的所有情况都是非法输入,直接用else即可,没必要重复写判断逻辑,反而增加写错的概率。
修正后参考代码
in_val = float(input('Input a number greater than zero and less than or equal to 10: ')) # 判断输入是否在合法区间 if 0 < in_val <= 10: total = 0 # 累加原始值直到总和超过100 while total <= 100: total += in_val print(total) else: print('You did not enter a value between 0 and 10')
内容的提问来源于stack exchange,提问作者Yassin Askour
相关产品推荐
相关产品推荐

