USANDO RETURN NAS FUNÇÕES
# Funções + return
# Crie uma função dobro(n) que recebe um número e
retorna o dobro dele.
# Crie uma função area_retangulo(l, h) que retorna
a área de um retângulo.
# Crie uma função par_ou_impar(n) que retorna
"Par" se o número for par ou "Ímpar" caso
contrário.
def dobro(n):
return n * 2
try:
n = int(input('Digite um número: '))
print(f'O dobro de {n} é: {dobro(n)}')
except ValueError:
print('ERRO: Valor digitado não é número
inteiro!')
def area_retangulo(b, a):
area = b * a
return area
try:
base = float(input('Insira a base: '))
altura = float(input('Insira a altura: '))
print(f'A area do retangulo é
{area_retangulo(base, altura)}')
except ValueError:
print('ERRO: Valor inserido não númerico!')
def par_ou_impar(number):
if number % 2 == 0:
return f'Esse número {number} é par'
else:
return f'Esse número {number} é impar'
try:
number = int(input('Insira o número: '))
print(par_ou_impar(number))
except ValueError:
print('ERRO: VALOR inserido não é NÚMERICO
INTEIRO')
USANDO ARGUMENTOS JA NOMEADOS NAS DEFS
def converter_tempo(segundos, formato="minutos"):
if formato in ['minutos', 'm', 'min']:
conversao = segundos / 60
return f'A conversão de segundos para
minutos fica: {conversao}'
elif formato in ['horas', 'h']:
conversao = segundos / 3600
return f'A conversão de segundos para
horas fica: {conversao}'
else:
print('ERRO: Escolha entre minutos ou
horas')
formato = str(input('Quer qual formato? minutos ou
horas: ')).strip().lower()
if not formato:
print('ERRO: nenhum valor inserido')
else:
try:
tempo = float(input('Insira o tempo em
segundos: '))
print(f'{converter_tempo(tempo,
formato)}')
except ValueError:
print('ERRO: Valor inserido não é
númerico!')
USANDO O NONE PARA SUBSTITUIR O ZERO COMO
ARGUMENTOS NOMEADO PARA NÃO GERAR VALORES FALSOS
E SIM REALMENTE NULOS
def registrar_usuario(nome, lista=None):
return f'Nome: {nome} | Lista: {lista}'
lista_usuarios = []
while True:
nome = str(input('Insira o nome:
')).strip().title()
lista_usuarios.append(nome)
if not nome:
print('-' * 20)
print('ERRO: Nenhum nome digitado!')
continue
else:
print(registrar_usuario(nome,
lista_usuarios))
USANDO O *ARGS OU O * PARA ENCAPSULAR TUDO E DEPOIS
PODE FAZER SUM() OU MAX() ETC.. PODE SER COM STRINGS
TAMBÉM
def soma_tudo(*nums):
soma = sum(*nums)
return f'A soma de todos os números é {soma}'
lista_numeros = []
while True:
print('Adicione um número ou 0 para parar e
somar')
try:
numero = int(input('Insira o número: '))
if numero != 0:
lista_numeros.append(numero)
else:
print(soma_tudo(lista_numeros))
break
except ValueError:
print('ERRO: Valor inserido não é
númerico')
continue
*ARGS COM STRINGS
def concatena_palavras(*palavras):
palavras_juntas = " ".join(palavras)
return palavras_juntas
lista_palavras = []
while True:
palavra = str(input('Insira uma palavra:
')).strip()
if not palavra:
if not lista_palavras:
print('ERRO: Nenhuma palavra
digitada!')
continue
else:
print(f'Frase final:
{concatena_palavras(*lista_palavras)}')
break
lista_palavras.append(palavra)
**KWARGS É UM TERMO USADO EM UMA DEFINIÇÃO DE FUNÇÃO
PARA RECEBER UM NÚMERO VARIAVEL DE ARGUMENTOS
“NOMEADOS” (DE PALAVRA CHAVE). ELE COLETA ESSES
ARGUMENTOS, QUE SÃO PASSADOS NO FORMATO CHAVE =
VALOR, EM UM DICIONÁRIO PYTHON
EXEMPLOS:
# **kwargs
def exibir_dados(**kwargs):
for chave, valor in [Link]():
print(f'{chave}: {valor}')
# essa é a forma errada de usar como input
nome = str(input('Nome: '))
idade = int(input('Idade: '))
cidade = str(input('Cidade: '))
produto = str(input('Produto: '))
preco = float(input('Preço: '))
autor = str(input('Autor: '))
# exibir_dados(nome, idade, cidade, produto,
preco, autor) <-- FORMA ERRADA
# exibir_dados(nome= "Ana", idade= 25, cidade=
"Lisboa")
# exibir_dados(produto= "Livro", preco= 19.99,
autor="Desconhecido")
# temos duas formas
# ja passa com os argumentos nomeados
exibir_dados(
nome=nome,
idade=idade,
cidade=cidade,
produto=produto,
preco=preco,
autor=autor
)
# ou ja cria um dicionario e desempacota ele
chamando na função
dados = {
"nome": input('Nome: '),
"idade": int(input('Idade: ')),
"cidade": input('Cidade: '),
"produto": input('Produto: '),
"preco": float(input('Preço: ')),
"autor": input('Autor: ')
}
exibir_dados(**dados)
## versão dinamica para usuario digitar seus
proprios dados
def exibir_dados(**kwargs):
for chave, valor in [Link]():
print(f'{chave}: {valor}')
dados = {}
print("Digite as informações (aperte Enter em
'chave' para finalizar).")
while True:
chave = input("Nome da informação (ex: nome,
idade, cidade): ").strip()
if not chave: # se só apertar Enter, finaliza
break
valor = input(f"Valor para '{chave}':
").strip()
dados[chave] = valor
exibir_dados(**dados)
## versão dinamica com detecção automatica do tipo
def exibir_dados(**kwargs):
for chave, valor in [Link]():
print(f'{chave}: {valor}
({type(valor).__name__})')
def converter_valor(valor: str):
"""Tenta converter o valor para int ou float;
se não der, retorna string."""
if [Link](): # só dígitos → int
return int(valor)
try:
return float(valor) # tenta converter
para float
except ValueError:
return valor # mantém como string
dados = {}
print("Digite as informações (aperte Enter em
'chave' para finalizar).")
while True:
chave = input("Nome da informação (ex: nome,
idade, cidade): ").strip()
if not chave: # Enter → encerra
break
valor = input(f"Valor para '{chave}':
").strip()
dados[chave] = converter_valor(valor)
exibir_dados(**dados)
a´sdasda
asdasdasd