【问题标题】:writing a loop that ends with a negative number and prints the sum of the positive numbers编写一个以负数结尾的循环并打印正数的总和
【发布时间】:2020-11-29 03:29:23
【问题描述】:

我必须编写一个带有循环的程序,要求用户输入一系列正数。用户应该输入一个负数来表示系列的结束,在输入所有正数之后,程序应该显示它们的总和。

我不知道这之后该怎么做,或者这是否正确(可能不是):

x = input("numbers: ")
lst = []

for i in x:
    if i > 0:
        i.insert(lst)
    if i < 0:
        break

【问题讨论】:

  • 这取决于您未指定的输入格式。输入是一行空格分隔的数字,还是单独一行的每个数字作为单独的输入?

标签: python python-3.x


【解决方案1】:

您应该在循环中使用输入来输入整数。

lst = []
while True:
    x = int(input('numbers:'))
    if x > 0:
        lst.append(x)
    if x < 0:
        print(sum(lst))
        break

【讨论】:

    【解决方案2】:
    def series():
        sum1 = 0
        while True:
            number = int(input("Choose a number, -1 to quit:"))
            if number>=0:
                sum1+=number
            else:
                return sum1
    series()
    

    while True 意味着算法必须不断进入循环,直到有东西破坏它或返回一个结束算法的值。

    因此,while True 不断要求 integer input ,如果给定整数为正或等于 0,则将它们添加到 sum1else 返回此累积的 sum1

    【讨论】:

    • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
    【解决方案3】:

    您可以使用 while 循环并不断检查此条件。

    i, total = 0, 0
    while i>=0:
        total+=i
        i = int(input('enter number:'))
    print(total)
    

    另外,不要使用:

    • for 循环执行您不知道具体要循环多少次的任务
    • while 循环为 while True 除非绝对必要。它更容易出错。
    • 与某些内置函数同名或以某些其他方式保留的变量名称。我看到的最常见的是idsumlist

    【讨论】:

      【解决方案4】:

      你想要那种类型的代码

      sum_=0
      while True:
          x=int(input())
          if x<0:
              break
          sum_+=x
      print(sum_)
      

      输出:

      2
      0
      3
      4
      5
      -1
      14
      

      如果你想要一个负数作为输入循环的中断

      【讨论】:

      • 不要给变量与内置函数同名(例如sum)!
      【解决方案5】:
      1. 将字符串转换为列表; input().split()
      2. 将类型从字符串转换为 int 或 folat; map(int, input().split())
      3. 如果你只想要总和,只计算总和很简单
      x = map(int, input("numbers: ").split())
      ans = 0
      
      for i in x:
          if i >= 0:
              ans += i
          if i < 0:
              break
      print(ans)
      

      【讨论】:

      • 不要给变量与内置函数同名(例如sum)!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多