【发布时间】:2022-07-06 06:12:38
【问题描述】:
我目前正在处理一些初学者的 Python 挑战,我刚刚完成了一个高斯加法挑战。我能够得到挑战正在寻找的输出,但似乎我把事情复杂化了。
挑战如下:
编写一个将数字列表传递给函数的程序。
- 该函数应使用 while 循环来不断弹出列表中的第一个和最后一个数字并计算这两个数字的总和。
- 该函数应打印出当前相加的数字,并打印它们的部分总和。
- 该函数应跟踪有多少部分和。
- 然后该函数应打印出有多少部分和。
- 该函数应执行高斯乘法,并报告最终答案。
- 通过传入范围 1-100 并验证您得到 5050 来证明您的函数有效。 gauss_addition(list(range(1,101)))
- 您的函数应该适用于任何一组连续数字,只要该组的长度是偶数即可。
- 奖励:修改您的函数,使其适用于任何一组连续数字,无论该组的长度是偶数还是奇数。
我的功能如下:
def gauss(numbers):
for number in numbers:
while len(numbers) > 0:
num1 = numbers.pop(0)
print(num1)
num2 = numbers.pop(-1)
print(num2)
calc = num1 + num2
print(str(num1) + " + " + str(num2) + " = " + str(calc))
print("Final answer is: " + str(num1 * calc))
gauss(list(range(1,101)))
谁能解释我如何在不使用 python 模块的情况下简化这个功能?我了解我编写的函数是如何工作的,但我也想知道是否有更简单、“更简洁”的方式来实现这一点。
我应该指定我只知道python的基础知识......
【问题讨论】:
-
如果您的代码有效并寻求改进意见 - 建议去这里codereview.stackexchange.com
-
是否可以将我的问题转移到该站点而无需在代码审查中打开新问题?
-
这个问题似乎与 interleaving 一个列表(然后求和)有关,如果是这样,您不必重复执行
pop- 这很昂贵。跨度> -
有趣...虽然,挑战主要集中在使用 while 循环。
-
pop 是 O(1) 来弹出 Python 列表的最后一个元素,并且 O(N) 来弹出任意元素(因为列表的整个其余部分必须转移)。
标签: python