我这几周刚开始在超技能上学习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)
我从一开始就很难理解布尔逻辑的含义。我需要解释。
正如其他评论已经指出的那样,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
现在把其他功能加进去,就可以了。