Exercícios de Formatação de Saída e Loop While em Python

Exercício 1: Simulação de Login com Múltiplas Tentativas

Este exercício simula um sistema de login onde o usuário tem até 3 oportunidades para inserir credenciais corretas.

# Definindo as credenciais esperadas
nome_correto = 'xianyu'
senha_correta = '123456'

tentativas_restantes = 3  # Controle de tentativas

while tentativas_restantes > 0:
    usuario = input('Insira seu nome de usuário: ')
    tentativas_restantes -= 1

    if usuario == nome_correto:
        senha = input('Insira sua senha: ')
        if senha == senha_correta:
            print(f'Login bem-sucedido! Bem-vindo, {nome_correto}!')
            break
        else:
            if tentativas_restantes > 0:
                print(f'Senha incorreta. Você tem {tentativas_restantes} tentativa(s) restante(s).')
            else:
                continuar = input('Tentativas esgotadas. Deseja tentar novamente? (S/N): ')
                if continuar.upper() == 'S':
                    tentativas_restantes = 3
    else:
        if tentativas_restantes > 0:
            print(f'Nome de usuário inválido. Você tem {tentativas_restantes} tentativa(s) restante(s).')
        else:
            continuar = input('Tentativas esgotadas. Deseja tentar novamente? (S/N): ')
            if continuar.upper() == 'S':
                tentativas_restantes = 3

Exercício 2: Cálculo de Soma Alternada com Exceção

Calcular a soma da sequência 1-2+3-4+5-6...+99, ignorando o número 88.

Método 1: Usando verificação par/ímpar

numero = 1
resultado = 0
while numero < 100:
    if numero % 2 != 0:
        resultado += numero
    else:
        if numero != 88:
            resultado -= numero
    numero += 1
print('Resultado (Método 1):', resultado)

Método 2: Alternando sinal com variável auxiliar

contador = 0
sinal = -1  # Inicializa para que números pares sejam subtraídos
soma_total = 0
while contador < 99:
    contador += 1
    if contador == 88:
        sinal = -sinal  # Inverte o sinal para manter o padrão, mas ignora o valor
        continue
    sinal = -sinal
    soma_total += contador * sinal
print('Resultado (Método 2):', soma_total)

Formatação de Saída em Python

No pirmeiro exemplo, usamos placeholders como %s para strings e %d para inteiros em formatação tradicional. Quando o texto contém o caractere %, é necesário escapá-lo com %%.

# Exemplo de formatação com %
nome = 'Ana'
idade = 25
altura = 170
peso = 65
sexo = 'Feminino'

mensagem = '''
-------------- %s -------------
Nome: %s
Idade: %d
Altura: %d cm
Peso: %d kg
Sexo: %s
%s, sua condição física supera %d%% das pessoas.
--------------------------------
''' % (nome, nome, idade, altura, peso, sexo, nome, 20)
print(mensagem)

Uma alternativa moderna é o método .format(), que permite substituições flexíveis. Veja três abordagens:

# Abordagem 1: Posicional simples
template = '''
-------------- {} -------------
Nome: {}
Idade: {}
Altura: {} cm
Peso: {} kg
Sexo: {}
{}, sua condição física supera {}% das pessoas.
--------------------------------
'''.format(nome, nome, idade, altura, peso, sexo, nome, 20)
print(template)

# Abordagem 2: Índices explícitos
template = '''
-------------- {0} -------------
Nome: {0}
Idade: {1}
Altura: {2} cm
Peso: {3} kg
Sexo: {4}
{0}, sua condição física supera {5}% das pessoas.
--------------------------------
'''.format(nome, idade, altura, peso, sexo, 20)
print(template)

# Abordagem 3: Usando nomes de variáveis (omitida por brevidade, mas similar à anterior com kwargs)

Tags: Python formatação de strings loop while cálculo numérico controle de iteração

Publicado em 6-3 20:20 por Thomas