繁体   English   中英

给定前 10 个数字的范围,从开始数字迭代到结束数字并打印当前数字和前一个数字的总和

[英]Given a range of first 10 numbers, Iterate from start number to the end number and print the sum of the current number and previous number

我正在尝试为上述问题编写 Python 代码并获得错误代码。 我会很感激帮助:

num = list(range(10))
previousNum = 0
for i in num:
    sum = previousNum + i
    print('Current Number '+ str(i) + 'Previous Number ' + str(previousNum) + 'is ' + str(sum)
    previousNum=i

这是我得到的错误:

File "<ipython-input-40-6f1cd8f8f1d7>", line 6
    previousNum=i
              ^
SyntaxError: invalid syntax

看起来是第 5 行中的一个简单语法错误。

您在打印 function 末尾缺少右括号“)”。

例如:

num = list(range(10))
previousNum = 0
for i in num:
    sum = previousNum + i
    print('Current Number '+ str(i) + 'Previous Number ' + str(previousNum) + 'is ' + str(sum)) # <- This is the issue.
    previousNum=i

此外,这里有 3 个改进您的代码的指针,它们可能对您有用:

  1. 首先,Python 使用 Snake case 作为其语言,如PEP8中所述,因此您应该使用“previous_num”而不是输入“previousNum”,所以我们将从它开始。

  2. 不需要在此实例中存储list(range(1)) 您可以只使用 ```range(10)''' function 来代替存储的范围列表。

  3. f 字符串是进行字符串连接(将字符串添加在一起)的更具可读性的方式。

有了这些,您的代码将如下所示:

previous_num = 0
for i in range(10):
    sum = previous_num + i
    print(f'Current number {i} Previous Number {previous_num} is {sum}')
    previous_num = i

快乐编码!

sum = 0
for idx in range(10):
    print(f'current number = {idx}')
    if idx != 0:
        sum += idx
        print(f'cumul. sum = {sum}')

欢迎来到 Stackoverflow。 总有功能 python:

>>> list(map( lambda x: x[0] + x[1], zip(range(0,10), range(1,11))))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

或者,如果您的意思是前辈的累积总和,例如减少:

>>> [sum(range(xs)) for xs in range(1,11)]
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]

在将范围、过滤器和 map 转换为迭代器之前,这在 python 2 中曾经更容易。

for i in range(1,10+1):
   print(i+i-1, end=' ')

在这里它从 1 迭代到 10 包括在内。 它打印 i 的当前值与 i-1 的前一个值之和的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM