"""Randomize a "Run to the hills" phrase."""
from __future__ import print_function
import random
from argparse import ArgumentParser
CONSONANTS = ['f', 'j', 'c', 'l', 'n']
PASSPHRASE = '{}u{}am para as {}o{}i{}as'
def print_phrase(consonants):
"""Print the phrase with the randomized consonants."""
print(PASSPHRASE.format(*consonants).capitalize())
def totally_random():
"""Run a totally random way."""
random.shuffle(CONSONANTS)
print_phrase(CONSONANTS)
def switch_two():
"""Run by changing two steps at a time."""
first = random.randint(0, 1)
second = random.randint(2, 4)
CONSONANTS[second], CONSONANTS[first] = \
CONSONANTS[first], CONSONANTS[second]
print_phrase(CONSONANTS)
def unknown():
"""We don't know what to do."""
print('Dude, option!')
if __name__ == "__main__":
args = ArgumentParser()
args.add_argument('-t', '--totally',
dest='type',
action='store_const',
const='totally',
help='Like, toootaly random')
args.add_argument('-s', '--short',
dest='type',
action='store_const',
const='switch'
help='Not so random')
result = args.parse_args()
callbacks = {
'totally': totally_random,
'switch': switch_two
}
func = callbacks.get(result.type, unknown)
func()
"""Randomize a "Run to the hills" phrase."""
import random
from argparse import ArgumentParser
CONSONANTS = ['f', 'j', 'c', 'l', 'n']
PASSPHRASE = '{}u{}am para as {}o{}i{}as'
" ou '
: Strings[]
: Listas/arrays{}
: Dicionários/mapas/objetos/arrays associativos()
: TuplasSet()
: Conjuntos (tipo lista, sem duplicações)
def print_phrase(consonants):
"""Print the phrase with the randomized consonants."""
def print_phrase(consonants, something_else):
def soma(primeiro, segundo):
total = primeiro + segundo
return total
soma(1, 2)
soma(primeiro=2, segundo=3)
soma(segundo=3, primeiro=2)
def soma(primeiro=0, segundo=0):
soma()
soma(1)
soma(segundo=3)
def soma(primeiro, segundo):
total = primeiro + segundo
return total
soma(1)
soma(1, 2, 3)
TypeError: soma() takes exactly 2 arguments (3 given)
def soma(*valores):
def soma(*valores):
print(valores)
soma(1, 2, 3, 4, 5)
[1, 2, 3, 4, 5]
def soma(inicial, segundo=0, *valores):
print(inicial)
print(segundo)
print(valores)
soma(2)
2
0
[]
E o que acontece com parâmetros com nomes?
def soma(**valores):
print(valores)
soma(primeiro=1, segundo=2)
{'primeiro': 1, 'segundo': 2}
O legal de varargs (e o asterísco) é que ele funciona pros dois lados: Não só ele transforma parâmetros em lista, mas ele também pode funcionar para converter uma lista em parâmetros.
params = [4, 4]
soma(*params)
Sem entrar em detalhes sobre como criar objetos:
"isso é uma string"
help("isso é uma string")
"isso é uma string".capitalize()
frase = "isso é uma string"
frase.capitalize()
print(PASSPHRASE.format(*consonants).capitalize())
O que sabemos:
PASSPHRASE
é uma string..format
deve ser um método de strings.consonants
é uma lista*consonants
tá transformando a lista em parâmetroscapitalize
também deve ser um método de strings
Lembram que PASSPHRASE
tinha
um monte de colchetes no meio?
.format()
converte cada um
deles para um dos parâmetros passados.
'Bem vindo {}!'.format('Júlio')
Bem vindo Júlio!
PASSPHRASE = '{}u{}am para as {}o{}i{}as'
PASSPHRASE.format('f', 'j', 'c', 'l', 'n')
'fujam para as colinas'
CONSONANTS = ['f', 'j', 'c', 'l', 'n']
PASSPHRASE = '{}u{}am para as {}o{}i{}as'
PASSPHRASE.format(*CONSONANTS)
'fujam para as colinas'
'fujam para as colinas'.capitalize()
Fujam para as colinas
def totally_random():
"""Run a totally random way."""
random.shuffle(CONSONANTS)
print_phrase(CONSONANTS)
def switch_two():
"""Run by changing two steps at a time."""
first = random.randint(0, 1)
second = random.randint(2, 4)
CONSONANTS[second], CONSONANTS[first] = \
CONSONANTS[first], CONSONANTS[second]
# CONSONANTS = ['f', 'j', 'c', 'l', 'n']
# second = random.randint(2, 4)
CONSONANTS[second]
Tuplas são como listas, só que não podem ser alteradas.
E pra criar uma tupla:
valor, valor
Ou mais bonitinho: (valor, valor)
primeiro, segundo = [1, 2]
print(primeiro)
print(segundo)
1
2
CONSONANTS[second], CONSONANTS[first] = \
CONSONANTS[first], CONSONANTS[second]
tmp = CONSONANTS[first]
CONSONANTS[first] = CONSONANTS[second]
CONSONANTS[second] = tmp
if __name__ == "__main__":
args = ArgumentParser()
args.add_argument('-t', '--totally',
dest='type',
action='store_const',
const='totally',
help='Like, toootaly random')
args.add_argument('-s', '--short',
dest='type',
action='store_const',
const='switch'
help='Not so random')
result = args.parse_args()
callbacks = {
'totally': totally_random,
'switch': switch_two
}
func = callbacks.get(result.type, unknown)
func()
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pares = [num
for num
in numeros
if num % 2 = 0]
Curiosidade: Strings são iteráveis como listas.
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pares = (num
for num
in numeros
if num % 2 = 0)
<generator object <genexpr> at 0x7f03ce4e67d0>