Mandar um café pro programador

Pode me ajudar a transformar cafeína em código?

Cara ou Coroa - Jogando Dados - Com orientação a Objetos em Python

Neste tutorial de nosso curso de Python, vamos programar dois jogos
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

Primeiro, importamos a biblioteca random, para gerar números aleatórios em Python.

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 :)

2 comentários:

  1. Sensacional! Para bens a todo os envolvids!

    ResponderExcluir
  2. import random

    class 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?

    ResponderExcluir

Bora fazer evoluir o ensino da Programação no Brasil ?

Que tal apoiar e fazer crescer o ensino da programação no Brasil ?

Ajudar nosso país a crescer e se desenvolver cada vez mais, tecnologicamente?

Clica abaixo pra saber mais!

Apoiar o Projeto Progressivo