使用 Python(仅使用一个数字)的三角形数字总和?
Sum of the numbers in a triangular shape using Python (only using one digit)?
给定如下列表:[1, 5, 8, 13, 4],我们想要求两个连续数字的和,如下所示。我们应该考虑到,如果列表中的数字超过一位,则需要将其更改为最后一位(最右边)的数字。另外,我们应该考虑如果列表的总数是奇数,则最后一个数字被自己添加到列表中:
[1, 5, 8, 13, 4]
[6, 1, 4] --> #21 becomes 1
[7, 4]
[11]
或
[1, 12, 7, 3, 15, 4]
[3, 0, 9] --> # 13 becomes 3, 10 becomes 0 and 19 becomes 9
[3, 9]
[12]
最后一个数字是唯一一个可以由多于一位数字组成的数字。我们只需要最终结果的输出:results = [11] or result = [12]。这是我到目前为止尝试过的:
def sum_triangle(numbers):
if len(numbers) == 1:
return (numbers)
else:
x = numbers
while len(x) > 1:
new_list = [a+b for a,b in zip(x[::2], x[1::2])]
if len(x) % 2: new_list.append(numbers[-1])
return new_list
你的while
循环永远不会改变x
,所以如果while
条件一次为真,它将总是为真 - 一个无限循环。
不使用三个列表变量(numbers
、x
、new_list
),而是只使用一个列表变量。此外,当您执行 a+b
时,首先使用 %10
.
将这些数字“trim”到最后一位
这是它的工作原理:
def sum_triangle(numbers):
while len(numbers) > 1:
last = numbers[-1] if len(numbers) % 2 else None
numbers = [a % 10 + b % 10 for a, b in zip(numbers[::2], numbers[1::2])]
if last is not None:
numbers.append(last)
return numbers
lst = [1, 5, 8, 13, 4]
print(sum_triangle(lst)) # [11]
lst = [1, 12, 7, 3, 15, 4]
print(sum_triangle(lst)) # [12]
给定如下列表:[1, 5, 8, 13, 4],我们想要求两个连续数字的和,如下所示。我们应该考虑到,如果列表中的数字超过一位,则需要将其更改为最后一位(最右边)的数字。另外,我们应该考虑如果列表的总数是奇数,则最后一个数字被自己添加到列表中:
[1, 5, 8, 13, 4]
[6, 1, 4] --> #21 becomes 1
[7, 4]
[11]
或
[1, 12, 7, 3, 15, 4]
[3, 0, 9] --> # 13 becomes 3, 10 becomes 0 and 19 becomes 9
[3, 9]
[12]
最后一个数字是唯一一个可以由多于一位数字组成的数字。我们只需要最终结果的输出:results = [11] or result = [12]。这是我到目前为止尝试过的:
def sum_triangle(numbers):
if len(numbers) == 1:
return (numbers)
else:
x = numbers
while len(x) > 1:
new_list = [a+b for a,b in zip(x[::2], x[1::2])]
if len(x) % 2: new_list.append(numbers[-1])
return new_list
你的while
循环永远不会改变x
,所以如果while
条件一次为真,它将总是为真 - 一个无限循环。
不使用三个列表变量(numbers
、x
、new_list
),而是只使用一个列表变量。此外,当您执行 a+b
时,首先使用 %10
.
这是它的工作原理:
def sum_triangle(numbers):
while len(numbers) > 1:
last = numbers[-1] if len(numbers) % 2 else None
numbers = [a % 10 + b % 10 for a, b in zip(numbers[::2], numbers[1::2])]
if last is not None:
numbers.append(last)
return numbers
lst = [1, 5, 8, 13, 4]
print(sum_triangle(lst)) # [11]
lst = [1, 12, 7, 3, 15, 4]
print(sum_triangle(lst)) # [12]