provinha 09: solução

provinha 09: solução

por José Coelho de Pina -
Número de respostas: 3

Questão. Suponha que o Python tenha lido todas as funções a seguir (teclamos F5 no spyder).

    def f(x, y):
        n = len(x)
        for i in range( n):
            x[i] = y
                   
    def g(y, n, a, b):
        x    = y[:]
        x[n] = a
        y[n] = b
        n = 7    
        return x

A seguir está uma transcrição de uma seção do Python Shell. Complete as lacunas com o tipo e o valor do resultado da expressão correspondente. Se ocorrer um erro, escreva apenas ERRO.

In [1]: x = ['11', '22', '33']

In [2]: z = x

In [3]: a = f(x, 'x')

In [4]: a     tipo: NoneType   valor: None

In [5]: x           tipo: list            valor: ['x', 'x', 'x']

In [6]: z           tipo: list            valor: ['x', 'x', 'x']

In [7]: x = ['11', '22', '33']

In [8]: y = ['44', '55', '66']

In [9]: n = 0

In [10]: z = g(x, n, '44', '55')

In [11]: x         tipo: list            valor: ['55', '22', '33']

In [12]: y         tipo: list            valor: ['44', '55', '66']

In [13]: z         tipo: list            valor: ['44', '22', '33']

In [14]: n         tipo: int               valor: 0

In [15]: y = 'MAC0110'

In [16]: y[1:4]       tipo: str      valor: 'AC0'

In [17]: y[:3]          tipo: str      valor: 'MAC'

In [18]: y[len( y)] tipo: ERRO    valor: ERRO

right


Comentários?

Em resposta à José Coelho de Pina

Re: provinha 09: solução

por Joao Pedro Sedeu Godoi -

Por que no in [13] z = ['44' , '22' , '33' ] e não z = [ '55' , '22' , '33' ]?

Em resposta à Joao Pedro Sedeu Godoi

Re: provinha 09: solução

por Wilson Marco Sales Moncayo -

Olha bem pro corpo da função e o que está sendo retornado para ser atribuido a z.

def g(y, n, a, b):
x = y[:] # x apelida um clone da lista y
x[n] = a # o (n+1)-ésimo elemento de x vira o valor de a
y[n] = b # o (n+1)-ésimo elemento de y vira o valor de b
n = 7 # nada faz após essa atribuição
return x # volta o clone modificado para onde a função foi chamada

# aplicando para o exemplo
x = ['11', '22', '33']
n = 0
z = g(x, n, '44', '55') # vamos ver no que dá isso
# g(x, 0, '44', '55')
# x_ = x[:] :: um x_ vira clone de x (['11', '22', '33'])
# x_[0] = '44' :: x_ agora é ['44', '22', '33']
# x[0] = '55' :: x agora é ['55', '22', '33']
# n_ = 7 :: este parâmetro não é o n do nosso escopo, mas sim parâmetro de g
# return x_ :: logo...
# z = ['44', '22', '33']
# x = ['55', '22', '33']
# n = 0