-
Notifications
You must be signed in to change notification settings - Fork 0
/
aula063_min_max.py
146 lines (108 loc) · 4.87 KB
/
aula063_min_max.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
"""
Min e Max
max() = Retorna o maior valor de um iterável ou o maior de dois ou mais elementos.
min() = Retorna o menor valor de um iterável ou o menor de dois ou mais elementos.
"""
lista = [1, 8, 4, 99, 34, 129]
print(f'O maior número de nossa lista é: {max(lista)}')
tupla = (1, 8, 4, 99, 34, 129)
print(f'O maior número de nossa tupla é: {max(tupla)}')
conjunto = {1, 8, 4, 99, 34, 129}
print(f'O maior número de nosso conjunto(set) é: {max(conjunto)}')
# Importante lembrar que se não usarmos max(dicionario.values()) ele vai imprimir o índice
dicionario = {'a': 1, 'b': 8, 'c': 4, 'd': 99, 'e': 34, 'f': 129}
print(f'O índice do maior número de nosso dicionário é: {max(dicionario)}')
dicionario = {'a': 1, 'b': 8, 'c': 4, 'd': 99, 'e': 34, 'f': 129}
print(f'O maior número de nosso dicionário é: {max(dicionario.values())}')
# Conforme já estudamos, não importa qual seja o iterável
# Definido o max() entre dois ou mais valores:
"""
# Faça um programa que receba dois valores do usuário e mostre o maior:
valor1 = int(input('Informe o primeiro valor: '))
valor2 = int(input('Informe o segundo valor: '))
print(f'Entre {valor1} e {valor2}, o maior é: {max(valor1, valor2)}')
"""
# Definindo o max() entre três valores:
print(max(4, 67, 54))
# Definindo o max() entre strings:
print(max('a', 'ab', 'abc'))
print(max('a', 'b', 'c', 'd', 'e'))
print(max('Geek Universty'))
# Definindo o max() entre pontos flutuantes:
print(max(3.145, 5.789))
print(' -------------- Exemplos de min() -------------- ')
lista = [1, 8, 4, 99, 34, 129]
print(f'O menor número de nossa lista é: {min(lista)}')
tupla = (1, 8, 4, 99, 34, 129)
print(f'O menor número de nossa tupla é: {min(tupla)}')
conjunto = {1, 8, 4, 99, 34, 129}
print(f'O menor número de nosso conjunto(set) é: {min(conjunto)}')
# Importante lembrar que se não usarmos max(dicionario.values()) ele vai imprimir o índice
dicionario = {'a': 1, 'b': 8, 'c': 4, 'd': 99, 'e': 34, 'f': 129}
print(f'O índice do menor número de nosso dicionário é: {min(dicionario)}')
dicionario = {'a': 1, 'b': 8, 'c': 4, 'd': 99, 'e': 34, 'f': 129}
print(f'O maior menor de nosso dicionário é: {min(dicionario.values())}')
# Conforme já estudamos, não importa qual seja o iterável
# Definido o min() entre dois ou mais valores:
"""
# Faça um programa que receba dois valores do usuário e mostre o menor:
valor1 = int(input('Informe o primeiro valor: '))
valor2 = int(input('Informe o segundo valor: '))
print(f'Entre {valor1} e {valor2}, o menor é: {min(valor1, valor2)}')
"""
# Definindo o min() entre três valores:
print(min(4, 67, 54))
# Definindo o max() entre strings:
print(min('a', 'ab', 'abc'))
print(min('a', 'b', 'c', 'd', 'e'))
print(min('Geek Universty'))
# Definindo o max() entre pontos flutuantes:
print(min(3.145, 5.789))
print(' -------------- Mais Exemplos -------------- ')
# Exemplos mais complexos de min() e manx():
nomes = ['Arya', 'Samson', 'Dora', 'Tim', 'Ollivander']
"""
Note que quando pedimos o min() e o max() da lista de nomes, o Python não entende quem é o maior nome e sim quem é
o primeiro em ordem alfabética e quem é o útlimo em ordem alfabética!
"""
print(max(nomes)) # Tim
print(min(nomes)) # Aria
"""
Para conseguir o min() e o max() pelo tamanho do nome, precisamos usar o atributo key com uma expressão lambda
para que ele encontre o tamanho de cada nome dentro da lista nomes e depois defina o menor e o maior!
"""
print(max(nomes, key=lambda nome: len(nome))) # Ollivander
print(min(nomes, key=lambda nome: len(nome))) # Tim
# Tirando o min() e o max() de uma lista de dicionários:
musicas = [
{"titulo": "Thunderstruck", "tocou": 15},
{"titulo": "Black Ice", "tocou": 9},
{"titulo": "Back in Black", "tocou": 20},
{"titulo": "Highway to Hell", "tocou": 32}
]
print(max(musicas, key=lambda musica: musica["tocou"]))
print(min(musicas, key=lambda musica: musica["tocou"]))
# Sem usar o key com a expressão lambda, o Python nem entende o que é para considerar como min() e como max()
# DESAFIO 1! Imprima somente o título da música mais e menos tocada:
print(max(musicas, key=lambda musica: musica["tocou"])['titulo'])
print(min(musicas, key=lambda musica: musica["tocou"])['titulo'])
"""
Dado que o que estamos imprimindo é o próprio objeto, basta no final e fora do mas, mas dentro do print, pedir para
imprimir somente o ['titulo´].
"""
# DESAFIO 2! Como encontrar a música mais tocada e a menos, sem usar max(), min() e lambda?
max = 0
for musica in musicas:
if musica['tocou'] > max:
max = musica['tocou']
for musica in musicas:
if musica['tocou'] == max:
print(musica['titulo'])
min = 99
for musica in musicas:
if musica['tocou'] < min:
min = musica['tocou']
for musica in musicas:
if musica['tocou'] == min:
print(musica['titulo'])
# Repare o quão grande fica o código usando for ao invés do min() ou do max(), sem contar a ajuda do lambda!