提问人:uncle.ro 提问时间:5/7/2020 最后编辑:khelwooduncle.ro 更新时间:5/7/2020 访问量:202
Python 循环控件练习
Python Loop Controls Exercise
问:
在过去的几周里,我刚刚开始在 hyperskill 上学习 python。
场景如下:
编写一个程序,从控制台整数(一行一个)中读取,直到它们的总和等于 0。紧接着,它应该显示所有输入数字的平方和。 可以保证在某个时候输入的数字之和将等于 0。之后,无需继续阅读。
如果第一个整数等于 0,也请停止从输入中读取值。打印出 0 而不是平方和。
例如,我们正在阅读数字 1、-3、5、-6、-10、13。在这一点上,我们注意到这些数字的总和是 0 并输出它们的平方和,而没有注意仍然存在未读值的事实。
num = int()
listtrigbreak = []
listsquares = []
sumtrig = 0
sumsqua = 0
while sumtrig != 0: # until sum of trig is not 0,
num = int(input()) #accept numbers
if num == "0": # while first input is 0,
print(0) # print 0
break # and break the loop
listtrigbreak.append(num) # append num to listtrig
sumtrig += sum(listtrigbreak) # add sum of list to sumtrig
for x in listtrigbreak: # for each number in listtrigbreak
squared = x ** 2 # convert each to squares, save variable
listsquares.append(squared) # add squared to listsquq
sumsqua = sum(listsquares) # sum of squares in listsqua
else:
print(sumsqua)
我什至无法通过第一个 while 循环。每当我运行它时,它都会跳过整个 while 循环并转到以下位置:
else:
print(sumsqua)
从一开始,我就很难使用布尔逻辑。我需要解释。
答:
0赞
sander
5/7/2020
#1
正如其他评论已经指出的那样,while 循环有点棘手,因为您最初将变量声明为 0。您可以使用布尔开关来控制 while 循环,如下所示:
input_integers = []
stop = False
while not stop: # So while we should keep asking user input...
num = int(input())
input_integers.append(num)
if sum(input_integers) == 0 and len(input_integers) > 0:
print('done')
stop = True
现在在其中添加其他功能,您就完成了。
评论
while
并不意味着“直到”。while
sumtrig != 0
sumtrig
0
num
while
sumtrig != 0
True
sumtrig
0
sumtrig != 0
False