Cara e Coroa
Lançamento de Dados
Usando os conceitos de programação orientada a objetos que estamos estudando.
Baixe nossa Apostila de Python
Obtenha o certificado do Curso de Python para trabalhar programando (de casa!)
Cara ou Coroa com Orientação a Objetos
Nossa classe vai se chamar CaraCoroa e vamos armazenar o lado da moeda na variável lado.
No método construtor __init__ inicializamos essa variável como 'Cara', como se nossa moeda estivesse inicialmente virada com a Cara pra cima.
Depois, definimos o método lancar(), que vai lançar a moeda.
Vamos gerar números aleatórios de 0 até 1. Ou seja, pode sair 0 ou 1 quando usamos:
random.randint(0,1)
Se sair 0, o resto da divisão por 2 dá 0, cai no IF e setamos o lado da moeda como 'Cara'.
Se der 1, o resto da divisão por 2 dá 1, cai no ELSE e setamos o lado da moeda como 'Coroa'.
No final, retornamos essa variável.
Prontinho, agora é só criar nosso objeto moeda, do tipo CaraCoroa.
Perguntamos ao usuário se ele deseja sair ou lançar mais uma vez, e cada vez que ele quiser lançar a moeda, basta acessar o método lanca() do objeto moeda que ele vai retornar Cara ou Coroa.
Código Python:
import random class CaraCoroa: def __init__(self): self.lado = 'Cara' def lancar(self): if (random.randint(0,1))%2==0: self.lado = 'Cara' else: self.lado = 'Coroa' return self.lado moeda = CaraCoroa() op=1 while op: op=int(input("0.Sair\n" "1.Jogar de novo\n")) if op: print(moeda.lancar())
Jogando dados com Programação Orientada a Objetos em Python
Vamos agora criar a classe Dado.Ela vai ser bem semelhante a classe CaraCoroa, diferença é que vamos trabalhar com números de 1 até 6, ao invés de duas strings ('Cara' e 'Coroa').
Inicializamos o lado do dado como 1.
No método lancar, simplesmente retornamos um número de 1 até 6:
return random.randint(1,6)
Criamos nosso objeto dado do tipo Dado.
E prontinho.
Ajeitamos nosso menu, para que você possa lançar tanto dados como moedas, e veja como ficou nosso script em Python:
import random class CaraCoroa: def __init__(self): self.lado = 'Cara' def lancar(self): if (random.randint(0,1))%2==0: self.lado = 'Cara' else: self.lado = 'Coroa' return self.lado class Dado: def __init__(self): self.lado = 1 def lancar(self): return random.randint(1,6) moeda = CaraCoroa() dado = Dado() op=1 while op: op=int(input("0.Sair\n" "1.Lançar Moeda\n" "2.Lançar dado\n")) if op==1: print(moeda.lancar()) elif op==2: print(dado.lancar())
Sempre que faltar uma moeda ou um dado, você pode usar esse script :)
Sensacional! Para bens a todo os envolvids!
ResponderExcluirimport random
ResponderExcluirclass CaraCoroa:
lado = 1
def __init__(self):
print('moeda criada')
def lancar(self):
self.lado = random.randint(1, 2)
if self.lado ==1:
return 'cara'
elif self.lado ==2:
return 'coroa'
moeda = CaraCoroa()
test = 1
while test:
print(moeda.lancar())
test = int(input('[0]terminar\n'
'[1]jogar novamente\n'))
Eu comparei direto se era 1 ou 2 para retornar uma string. É errado?