Fácil Python

Saudação com argumento nomeado

Enunciado

Crie uma função saudacao que receba nome e mensagem (com valor padrão "Olá") e retorne uma string no formato "{mensagem}, {nome}!". Chame a função duas vezes: uma passando apenas nome="Ana" e outra passando nome="Beto" e mensagem="Bom dia". Imprima os resultados.

Requisitos

  • A função deve ter nome como parâmetro obrigatório e mensagem com valor padrão "Olá".
  • A primeira chamada deve usar apenas nome="Ana".
  • A segunda chamada deve usar nome="Beto" e mensagem="Bom dia".
  • As saídas devem ser exatamente Olá, Ana! e Bom dia, Beto!.

Código inicial

def saudacao(nome, mensagem="Olá"):
    # Complete a função
    pass

# Chame e imprima os resultados

Saída esperada

Olá, Ana!
Bom dia, Beto!
Ver dica

Use f-string para formatar a mensagem. Lembre-se de que o valor padrão já está definido, então não precisa passá-lo na primeira chamada.

Mostrar solução
def saudacao(nome, mensagem="Olá"):
    """Retorna uma saudação personalizada."""
    return f"{mensagem}, {nome}!"

# Chamada com argumento nomeado apenas para nome
print(saudacao(nome="Ana"))
# Chamada com ambos os argumentos nomeados
print(saudacao(nome="Beto", mensagem="Bom dia"))

Passo a passo

  1. Definimos a função saudacao com dois parâmetros: nome (obrigatório) e mensagem (com valor padrão "Olá").
  2. Dentro da função, usamos uma f-string para montar a string no formato "{mensagem}, {nome}!".
  3. Na primeira chamada, passamos apenas nome="Ana". Como mensagem não foi fornecida, o valor padrão "Olá" é usado.
  4. Na segunda chamada, passamos nome="Beto" e mensagem="Bom dia", sobrescrevendo o padrão.
  5. Imprimimos os resultados com print.

Por que funciona

Argumentos nomeados permitem associar explicitamente cada valor ao parâmetro correspondente, independentemente da ordem. O valor padrão é aplicado quando o argumento não é fornecido, tornando a função flexível.

Erros comuns

  • Esquecer o f na string: return "{mensagem}, {nome}!" retorna o texto literal com chaves, não os valores.
  • Passar argumento posicional após nomeado: saudacao(nome="Ana", "Bom dia") gera SyntaxError.
  • Omitir o nome: saudacao(mensagem="Oi") gera TypeError porque nome é obrigatório.

Outra forma de resolver

Poderia usar concatenação simples, mas menos legível:

return mensagem + ", " + nome + "!"

Prefira f-strings pela clareza.

Saída esperada

Olá, Ana!
Bom dia, Beto!