提问人:Emilio Velazquez 提问时间:6/30/2023 更新时间:6/30/2023 访问量:70
我被困在带有 while 循环测验问题的 if-else 条件语句上
I am stuck on an if-else conditional statement with while loop quiz question
问:
我正在 saylor academy 做 CS105,我正在参加第 3 单元测验,其中一个问题要求:
使用“if-elif”(我认为它们的意思是if-else,因为它后来要求使用if-elif-else语句,所以如果有任何混淆,他们的意思是if-else而不是“if-elif”)流控制以及“while”循环,它将:
指示用户输入一个大于 0 且小于或等于 10 的数字,并将该输入作为浮点值存储在变量中
如果输入数字大于 0 且小于或等于 10, 使用“while”循环将数字与自身相加,直到总和超过 100 的值。
总和超过值 100 后,使用 print 语句输出总和 否则,输出消息“您未输入介于 1 和 10 之间的值”
我只能把这段代码记下来,并思考 if-else 和 while 循环的整体结构,里面有另一个 if-else。
有经验的人可以向我推荐一些代码调整,使其正常运行并满足要求。即使我尝试使用 break 函数,我也一直在获得无限的 while 循环,所以我求助于使用 true 和 false,但这也不起作用。
这是我到目前为止所拥有的:
inval=float(input('输入大于零且小于或等于 10 的数字: ')) if(inval>0)and(inval<=10): 而 True: if(inval<100): inval+inval 还: inval=假 打印(inval) 还: print('您没有输入介于 1 和 10 之间的值')
我试图创建一个 for-else 循环,这样如果输入在约束中,那么它将形成 while 循环,但是当我不得不添加另一个条件语句时,我感到困惑(当它将数字添加到其自身足够多的次数时,它应该停止 while 循环,当它大于 100 时),但我无法这样做,这就是我陷入困境的地方。
答:
由于一些问题,您的代码无法正常工作。
- 一旦数字在 [1, 10] 范围内,您就运行了一个无限循环。缓解这种情况的一个选项是为 while 循环条件设置一个单独的变量,一旦它大于 100,您可以将其设置为 False。
- 您正在向自身添加 inval,但您没有将结果存储在任何地方。我建议创建一个新变量并继续在结果中添加 inval。
工作代码如下所示:
inval = float(input('Input a number greater than zero and less than or equal to 10: '))
if (inval > 0) and (inval <= 10):
running = True
result = 0
while running:
if (result < 100):
result = result + inval
else:
running = False
print(result)
else:
print('You did not enter a value between 1 and 10')
我建议的更多改进是,您可以在 while 循环中检查条件,而不是在其中包含 if 语句。Python 还支持链接条件,您也可以简化第一个 if 条件。这将使您的代码看起来像这样:
inval = float(input('Input a number greater than zero and less than or equal to 10: '))
if 0 < invalid <= 10:
result = 0
while result < 100:
result = result + inval
print(result)
else:
print('You did not enter a value between 1 and 10')
评论