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)