sábado, 20 de janeiro de 2024

Métodos úteis dos Dicionários em Python

pessoa = {
    'nome': 'Ayrton',
    'sobrenome': 'Pontes'
}
# Métodos uteis dos dicionários em Python

# len - quantas chaves
print(len(pessoa))

# keys - interável com as chaves
print(list(pessoa.keys())) # por ser iterável, pode usar com o for

# values - interável com os valores
print(list(pessoa.values())) # por ser iterável, pode usar com o for

# items - iterável com chaves e valores
print(list(pessoa.items()))
    # Com o for:
for chave, valor in pessoa.items():
    print(chave, valor)
   
# setdefault - adiciona valor se a chave não existe
pessoa.setdefault('idade', 0)
print(pessoa['idade'])

# copy - retorna uma cópia rasa (shallow copy)
d1 = {
    'c1': 2,
    'c2': 3
}
d2 = d1  # não faz cópia

d2['c1'] = 100 # afeta d1

print(d1) # {'c1': 100, 'c2': 3}

d2 = d1.copy() # faz uma cópia (rasa -> não funciona pra itens mutaveis dentro de dicionarios)

d2['c1'] = 300

print(d1) # {'c1': 100, 'c2': 3}
print(d2) # {'c1': 300, 'c2': 3}

#agora vamos colocar um item mutavel dentro de um dicionário:

d3 = {
    'c1': 2,
    'c2': 3,
    'l1': [0, 1, 2]
}

d4 = d3.copy() # não consegue fazer uma cópia (só rasa),
# pois há um item mutavel em d3

print(d4) # {'c1': 2, 'c2': 3, 'l1': [0, 1, 2]}

d4['l1'][2] = 150

print(d3) # {'c1': 2, 'c2': 3, 'l1': [0, 1, 150]}
print(d4) # {'c1': 2, 'c2': 3, 'l1': [0, 1, 150]}

# caso queira fazer uma deep copy (cópia mesmo com itens mutáveis),
# usar a biblioteca copy
import copy

d3 = {
    'c1': 2,
    'c2': 3,
    'l1': [0, 1, 2]
}

d4 = copy.deepcopy(d3) #cópia real (deep copy) de dicionario com itens
# mutáveis

d4['l1'][2] = 150

print(d3) # {'c1': 2, 'c2': 3, 'l1': [0, 1, 2]}
print(d4) # {'c1': 2, 'c2': 3, 'l1': [0, 1, 150]}

# get - obtém uma chave

p1 = {
    'nome': 'Ayrton',
    'sobrenome': 'Pontes'
}

print(p1.get('nome')) # Ayrton
print(p1.get('idade', 0)) # 0 (retorna o 0 em caso de exceção)

# pop - apaga um item com a chave específica (del)

nome = p1.pop('nome') # apaga, mas pode colcoar na memoria em uma
# variavel
print(nome)
print(p1)



# popitem - apaga o último item adicionado

sobrenome = p1.popitem()
print(sobrenome) # ('sobrenome', 'Pontes')
print(p1) #{}
# update - atualiza um dicionario com outro

p1.update({
    'nome': 'novo valor',
    'idade': 34
})

print(p1) # {'nome': 'novo valor', 'idade': 34}

tupla = ('sobrenome', 'Pontes'), ('peso', 80) # poderia ser uma lista tbm

p1.update(tupla)

print(p1) # {'nome': 'novo valor', 'idade': 34, 'sobrenome': 'Pontes', 'peso': 80}

 

segunda-feira, 15 de janeiro de 2024

Interpretador do Pyton

 

Interpretador do Pyton:


python --version

python --help

python mod.py (executa o mod)
python -u (unbuffered)
python -m mod (lib mod como script)
python -c 'cmd' (comando)
python -i mod.py (interativo com mod)


Zen of Python: import this

domingo, 14 de janeiro de 2024

Apagando o Conteúdo do Terminal

Você pode apagar o conteúdo do terminal durante a execução do programa em Python. Para isso precisa passar para a Função system do pacote os o comando 'cls' ou 'clear', dependendo do seu sistema operacional:

from os import system

numero_secreto = 22
while True:
    n = int(input('Digite um número: '))
    system('cls')
    if n == numero_secreto:
        print('Você acertou!')
        break

quinta-feira, 11 de janeiro de 2024

Fatiamento de Strings

 012345678
 Olá mundo
-987654321


Fatiamento [i:f:p] [::]
Inverter a String [::-1] -> odnum álO

O função len() retorna a quantidade de caracteres de um item iterável

Formatação de strings com f-strings:

Formataçao básica de strings com f
s - string
d - int
f - float
.<número de dígitos>f
x ou X - Hexadecimal
(Caractere)(><^)(quantidade)
> - Esquerda
< - Direita
^ - Centro
= - Força o número a aparecer antes dos zeros
Sinal - + ou -
Ex.: 0>-100,.1f
Conversion flags - !r !s !a __repr__ __str__ __asc__

variavel = 'ABC'
print(f'{variavel})
print(f'{variavel: >10}')
print(f'{variavel: >10}.')
print(f'{variavel: ^10}.')
print(f'{variavel:$^10}.')
print(f'{variavel:0^10}.')


print(f'{1000.48956189616:.1f}')
print(f'{1000.48956189616:,.1f}') -> 1,000.5 (coloca separador de milhares)
print(f'{1000.48956189616:+,.1f}') -> +1,000.5
print(f'{1000.48956189616:0>+10,.1f}') -> 00+1,000.5 (estranho, então usa-se o "=" para forçar)
print(f'{1000.48956189616:0=10+,.1f}') -> +001,000.5


Hexadecimal
print('O hexadecimal de 1500 é {1500:08x}') -> 000005dc
print('O hexadecimal de 1500 é {1500:08X}') -> 000005DC


Conversion flags
print(f'{variavel!r}') -> chamando o método __repr__ (vamos estudar mais a frente)

Interpolação básica de Strings (com %)

Funciona como f-strings, porém usa-se % (placeholder):
s - string
d e i - int
f - float
x e X - Hexadecimal (ABCDRF0123456789)

nome = 'Pontes'
preco - 1000.95897643

variavel = '%s, o peço é R$ %.2f' % (nome, peco)
print(variavel)


Pontes, o preço é R$ 1000.95

Hexadecimal:
print('O hexadecimal de %d é %x' %(15, 15))

O hexadecimal de 15 é f


para preencher com zeros:
print('O hexadecimal de %d é %04x' %(15, 15)) #Para colocar casas decimais (mais comum ver com 4 ou 8 casas decimais)

O hexadecimal de 15 é 000f