在 python 中打印数字 1 到 n 的总和

新手上路,请多包涵

目标: 编写一个程序,要求用户输入一个数字 n 并打印数字 1 到 n 的总和。程序一直要求输入数字,直到用户输入 0。

 expected output:
enter an integer number (0 to end): 5
1+2+3+4+5 = 15

我能够解决第二个问题,直到用户输入 0。我遇到的问题是循环打印数字。

 1+2+3+4+5 = 15

我在想,如果我在一个循环中使用一个循环,我可以做到这一点。这是我当前的代码。我已经看到其他问题回答了这个编程问题,但我想知道如何专门打印导致我输入的数字的数字

num = int(input( "enter a integer: " ))
sum_num =0

if num != 0:
   for i in range(1, num+1):
       sum_num += i
       print(sum_num)
else:
     exit()

原文由 Angel Valenzuela 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

我认为这符合您的要求:

 while True:
  output = ""
  num = int(input("enter a integer: "))

  if num == 0:
    exit()

  for i in range(1, num+1):
    output += "{}".format(i)
    if i != num:
      output += "+"
  output += " = {}".format(sum(range(num+1)))
  print (output)

这将打印出整数和然后是答案,然后等待下一个输入。示例输出:

 $ python test.py
enter a integer: 5
1+2+3+4+5 = 15
enter a integer: 4
1+2+3+4 = 10
enter a integer: 3
1+2+3 = 6
enter a integer: 2
1+2 = 3
enter a integer: 1
1 = 1
enter a integer: 0
 = 0

原文由 TobyGWilliams 发布,翻译遵循 CC BY-SA 4.0 许可协议

您的代码的几个问题:

  1. 你的 while 循环永远不会结束。其预期目的尚不清楚。
  2. 您每次在循环中求和 1 而不是 i
  3. 您的 print 语句只出现在末尾。您可以将其包含在循环中。
  4. 在 Python 中, range(n) 不包括 n ,所以使用 range(n + 1) 代替。
  5. 您不需要为了 print 将整数转换为字符串。

把这一切放在一起:

 num = int(input( "enter a integer: " ))
sum_num = 0

for i in range(1, num+1):
    sum_num += i
    print(sum_num)

enter a integer: 5
1
3
6
10
15

原文由 jpp 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题