Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

não consigo entender essa função

isso foi uma questão em uma prova na faculdade e ainda não consigo entender

def exerc4(a,b,c,d,e,f):
    if(a > b):
        x = a + b
    elif (e > f):
        x= e + f
    else:
        x = a + b + c + d + e + f
    y =[a, b, c, d, e, f, x]
    u = 0
    for x in range(0,7):
        u += y[x] + y[0]
        print(u)

exerc4(20,30,40,50,60,70)
1 resposta
solução!

Oi João!!

Quando a função exerc4 é chamada, os valores são associados a:

a = 20

b = 30

c = 40

d = 50

e = 60

f = 70

Dessa forma, ele verifica a condição do primeiro if. Como 30 >40 é falso, ele não entra nesta condição e vai para a próxima sinalizada no elif. Como 60 >70 é falso, então ele entra no else.

Assim x = 20 + 30 +40 +50 +60 + 70 = 270

A pegadinha da questão envolve no parâmetro do for, que ele também chama de x. Acontece que esse x é diferente do declarado anteriormente, sendo somente um contador local alocado para percorrer as posições do array nas posições 0 a 6. (Dessa forma, no primeiro loop do for, x é 0, depois 1 e assim sucessivamente.)

Dito isso, na primeira iteração do for, ele faz:

u+= y[x] +y[0]

Sendo assim

u = 0 + y[0] + y[0] => 20 + 20 = 40

E esse valor é armazenado nas próximas iterações do for

Assim, nas próximas iterações, temos:

u = 40 + y[1] + y[0] = 40 +30 +20 = 90

u = 90 + y[2] + y[0] = 90 +40 +20 = 150

u = 150 + y[3] + y[0] = 150 +50 +20 = 220

u = 220 + y[4] + y[0] = 220 +60 +20 = 300

u = 300 + y[5] + y[0] = 300 +70 +20 = 390

u = 390 + y[6] + y[0] = 390 +270 +20 = 680

No fim, ao rodar este exercício, você deverá chegar em uma resposta similar a:

40
90
150
220
300
390
680

Tente colocar um print em cada passo, que você conseguirá observar melhor os passos feitos!! Espero ter ajudado e bons estudos!