сумма двух предыдущих элементов списка - PullRequest
0 голосов
/ 14 июля 2020

Я хочу использовать для l oop, чтобы проверить, есть ли у каждого члена списка сумму двух предыдущих элементов списка. Результат должен быть примерно таким. Заранее спасибо

list = [1,1,2,3,5,8,13,21,34,55,85,143] 

ввод: [1,1,2,3,5,8,13,21,34,55,85,143]

вывод:

0+1=1
True
1+1=2 
True
1+2=3
True
2+3=5
True
3+8=11
True
8+13=21
True
13+21=34
True
21+34=55
True
34+55=89
False
55+85 =140
False

Я немного устал l oop logi c но не могу получить желаемый результат, например,

l =[1,1,2,3,5,8,13,21,34,55,85,143] 
sum=0 
for element in l:
    print(element)
    sum +=element 
    print(sum)

Ответы [ 3 ]

1 голос
/ 14 июля 2020

Вы можете заархивировать список вместе с самим собой и перебирать его. Для первого списка в почтовом индексе добавьте [0]. Избегание индексов должно помочь читаемости:

l = [1,1,2,3,5,8,13,21,34,55,88,143] 

for a, b, c in zip([0]+l, l, l[1:]):
    print(f"{a} + {b} = {c} {a + b == c}")
    

Отпечатки:

0 + 1 = 1 True
1 + 1 = 2 True
1 + 2 = 3 True
2 + 3 = 5 True
3 + 5 = 8 True
5 + 8 = 13 True
8 + 13 = 21 True
13 + 21 = 34 True
21 + 34 = 55 True
34 + 55 = 88 False
55 + 88 = 143 True
1 голос
/ 14 июля 2020
my_list = [1,1,2,3,5,8,13,21,34,55,88,143]
prev_prev_item = 0
for idx in range(1, len(my_list)):
    print(idx, my_list[idx], my_list[idx] == my_list[idx-1] + prev_prev_item)
    prev_prev_item = my_list[idx-1]

вывод -

1 1 True
2 2 True
3 3 True
4 5 True
5 8 True
6 13 True
7 21 True
8 34 True
9 55 True
10 88 False
11 143 True
0 голосов
/ 14 июля 2020
list = [1,1,2,3,5,8,13,21,34,55,88,143]
for i in range(len(list)-2):
    if (list[i+2] == (list[i]+list[i+1])):
        print(list[i],'+',list[i+1],'=',list[i+2],'True')
    else: 
        print(list[i],'+',list[i+1],'=',list[i+2],'False')

Просто go по списку (для l oop) и сравните сумму i-го и i + 1-го элемента с i + 2-м элементом (оператор if). Это должно быть легко понять. Результат должен быть таким же, как у вас:

1 + 1 = 2 True
1 + 2 = 3 True
2 + 3 = 5 True
3 + 5 = 8 True
5 + 8 = 13 True
8 + 13 = 21 True
13 + 21 = 34 True
21 + 34 = 55 True
34 + 55 = 88 False
55 + 88 = 143 True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...