Python循环控制练习

问题描述 投票:0回答:1

我这几周刚开始在超技能上学习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)

我从一开始就很难理解布尔逻辑的含义。我需要解释。

python while-loop boolean-logic
1个回答
0
投票

正如其他评论已经指出的那样,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

现在把其他功能加进去,就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.