Python Iluminado

Input de Dados

Desenvolvedores geralmente precisam interagir com os usuários, seja para obter dados ou fornecer algum tipo de resultado. A maioria dos programas hoje em dia usam uma caixa de diálogo como uma forma de solicitar ao usuário algum tipo de input (entrada) do usuário.

Na maioria dos casos, o input vem do teclado. Para este propósito, Python fornece a função input(), que possui um parâmetro opcional, que é a string que será enviada para o usuário.

Até então todos os nossos programas foram estáticos, os valores das variáveis foram definidos por nós no código fonte. De forma a aumentar nossas opções de criações, vamos então aprender como podemos coletar dados dos usuários.

Exemplos Input

Começaremos chamando a função input(), passando como argumento uma string que será retornada como feedback ao usuário e armazenaremos o valor digitado pelo usuário na variável n que será impressa na sequência.

n = input("Insira um número: ")
print(n)

Ao executarmos o código acima, o prompt de comandos aguardará pela entrada de dados por parte de usuário, uma vez informado o valor e enviado, ele será impresso. Vamos agora ver qual o tipo de dados que temos em n:

print(type(n)) # <class 'str'>

Como podemos ver, embora tenhamos digitado um número, ele nos retorno uma string, para obtermos um número podemos utilizar as funções int() ou float() para fazer a conversão.

n = int(input("Insira um número: "))
print(type(n)) # <class 'int'>

O método eval() também é capaz de solucionar o nosso problema e até mesmo resolver expressões, muito útil, mas tenha cuidado com ele!

eval('2+3') # 5
numero = eval(input("Digite um valor: "))
print(numero) # 2.3
print(type(numero)) # <class 'float'>

Pedra, Papel e Tesoura

Uma vez que sabemos como coletar dados de usuários, podemos agora criar jogos. Neste exemplo vamos construir o clássico Pedra, Papel e Tesoura, também conhecido como Jankenpon.

img

Para nos auxiliar neste pequeno projeto, vamos contar com a ajuda da função choice() da biblioteca random, ela será responsável por emular uma escolha pseudo-aleatória da máquina, entre as três opções disponíveis (Pedra, Papel e Tesoura).

Também iremos utilizar um While Loop para manter o jogo executando até que o usuário deseje sair.

Coletaremos o input do usuário através da função input() e testaremos uma série de if, elif e else para sabermos quem é o vitorioso.

from random import choice
opcoes = ['pedra', 'papel', 'tesoura']
maquina = choice(opcoes)
jogando = True
while jogando:
print("# pedra\n# papel\n# tesoura\n# sair")
player = input('Escolha entre uma das opções: ')
if maquina == player.lower():
print(f'Ocorreu um empate!')
elif player.lower() == 'pedra':
if maquina == 'papel':
print(f'Você perdeu! {maquina} cobre {player.lower()}!')
else:
print(f'Parabéns! Você venceu! {player.lower()} quebra {maquina}!')
elif player.lower() == 'papel':
if maquina == 'tesoura':
print(f'Você perdeu! {maquina} corta {player.lower()}!')
else:
print(f'Parabéns! Você venceu! {player.lower()} cobre {maquina}!')
elif player.lower() == 'tesoura':
if maquina == 'pedra':
print(f'Você perdeu! {maquina} esmaga {player.lower()}!')
else:
print(f'Parabéns! Você venceu! {player.lower()} corta {maquina}!')
elif player.lower() == 'sair':
jogando = False
else:
print('Jogada inválida, verifique se digitou a opção corretamente!')
print('-'*45)
maquina = choice(opcoes)

Como podemos ver, a função input() pode nos auxiliar na questão de receber dados de usuários e através dos diversos métodos vistos, podemos converter os dados recebidos para trabalharmos com eles de forma adequada.