provinha 10: solução

provinha 10: solução

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

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

     def f(x, t):                         def g(t):               
        i = 0                                 x = []              
        for v in t:                           for v in t:         
            x[i] = v                              x = x + [t[v]]  
            i += 1                            return x

Suponha ainda que fizemos as seguintes atribuições:

In [1]: x = [1, 2, [3, 'ime', False], 'oi']

In [2]: s = 'ABCD'

In [3]: d = {'m': 1, 'a': 2, 'c' : 3}

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 [4]: x[-1][0] tipo: str valor: 'o'

In [5]: x[2][2] tipo: bool valor: False

In [6]: d['a'] tipo: int valor: 2

In [7]: 'oi' in x tipo: bool valor: True

In [8]: 3 in x tipo: bool valor: False

In [9]: 'c' in d tipo: bool valor: True

In [10]: y = x

In [11]: z = x[:]

In [12]: x[2] = 'x'

In [13]: y tipo: list valor: [1, 2, 'x', 'oi']

In [14]: z tipo: list valor: [1, 2, [3, 'ime', False], 'oi']

In [15]: f(x,s)

In [16]: x tipo: list valor: ['A', 'B', 'C', 'D']

In [17]: z = g(d)

In [18]: z tipo: list valor: [1, 2, 3] ou [1, 3, 2] ou [2, 1, 3] ou [2, 3, 1] ou [3, 1, 2] ou [3, 2, 1]

right


Comentários?

Em resposta à José Coelho de Pina

Re: provinha 10: solução

por Juliana Trevine -

porque que em: 
In [18]: z tipo: list valor: [1, 2, 3] ou [1, 3, 2] ou [2, 1, 3] ou [2, 3, 1] ou [3, 1, 2] ou [3, 2, 1]
tem todas essas opções de respostas e não somente [1, 2, 3]?

Em resposta à Juliana Trevine

Re: provinha 10: solução

por José Coelho de Pina -

Oi Juliana,

porque ... todas essas opções de respostas

Bem observado!

Porque em dicionários a ordem em que a chaves serão examinadas não é conhecida:

In [18]: d = {}

In [19]: d[123] = 456

In [20]: d[456] = 789

In [21]: d[1] = 2

In [22]: d[-1] = 4

In [23]: d[23] = 8

In [24]: for k in d:
    ...:     print(k)
    ...:     
123
456
1
-1
23

In [25]: d
Out[25]: {-1: 4, 1: 2, 23: 8, 123: 456, 456: 789}

In [26]: d = {-1: 4, 1: 2, 23: 8, 123: 456, 456: 789} # mesmo dicionário

In [27]: for k in d: # ordem muda
    ...:     print(k)
    ...:     
-1
1
23
123
456

In [28]: d = {} # não importa a ordem em que são inseridos os pares

In [29]: d[4] = 3

In [30]: d[3] = 4

In [31]: d
Out[31]: {3: 4, 4: 3}

In [32]: for k in d:
    ...:     print(k)
    ...:     
4
3

In [33]: d[3] = 4

In [34]: d[4] = 3

In [35]: for k in d:
    ...:     print(k)
    ...:     
4
3