image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
RAPHAEL SOARES
RAPHAEL SOARES31/12/2024 10:48
Compartilhe

Simulador de sorteio da Megasena com Python

  • #Python

Olá! Nesse artigo eu ensino a criar um simulador de sorteio com interface gráfica usando Python.

Primeiro, vamos criar 5 números aleatórios. Para isso, importe o pacote random e apelide-o de "rd":

image

Depois, vamos usar o método rd.sample(), e, no primeiro parâmetro, usamos uma função range para selecionar os números de 1 a 61. No segundo parâmetro da função rd.sample(), definimos que queremos uma lista com 6 números:

image

A rodar a célula, aparece uma lista com 6 números aleatórios que não se repetem.

Interface gráfica

image

Agora que temos os números, vamos criar a interface gráfica.

Primeiro, vamos criar a estrutura da nossa tela. Para isso importamos o pacote Tkinter conforme abaixo:

from tkinter import *

Depois, definimos a tela, definimos o título, o tamanho da tela e rodamos a janela:

import random as rd
from tkinter import *

tela = Tk()
tela.title('Megasena')

tela.geometry('450x500')
tela.mainloop()

Em seguida, criamos um rótulo para exibir a palavra "MEGASENA" e um botão que será utilizado para criar os números:

import random as rd
from tkinter import *

tela = Tk()
tela.title('Megasena')

titulo = Label(tela, text='MEGASENA', font='Arial 30 bold', fg='green')
titulo.grid(row=1, column=1, pady=25, padx=100, columnspan=2)

botao = Button(tela, text='Sortear Números', font='Arial 20', bg='light green', fg='green')
botao.grid(row=2, column=1, columnspan=2, pady=30, padx=100)


tela.geometry('450x500')
tela.mainloop()

Para definir onde os elementos ficarão encaixados, usamos o método grid.

Nela, informamos em qual linha (row) e coluna (column) o elemento está. Usamos a propriedade columnspan=2 para que o elemento ocupe na linha o espaço para duas colunas.

Veja como a tela já está criando corpo:

image

Agora, criamos 6 rótulos onde apareceram os botões:

num1 = Label(tela, text='', font='Arial 30 bold')
num1.grid(row=3, column=1, pady=10, padx=30)

num2 = Label(tela, text='', font='Arial 30 bold')
num2.grid(row=3, column=2, pady=10, padx=30)

num3 = Label(tela, text='', font='Arial 30 bold')
num3.grid(row=4, column=1, pady=10, padx=30)

num4 = Label(tela, text='', font='Arial 30 bold')
num4.grid(row=4, column=2, pady=10, padx=30)

num5 = Label(tela, text='', font='Arial 30 bold')
num5.grid(row=5, column=1, pady=10, padx=30)

num6 = Label(tela, text='', font='Arial 30 bold')
num6.grid(row=5, column=2, pady=10, padx=30)

Voltando em "botao", vamo adicionar no final a propriedade command=sortear:

botao = Button(tela, text='Sortear Números', font='Arial 20', bg='light green', fg='green', command=sortear)

A a propriedade command=sortear chama a função sortear(), que é responsável por gerar os números aleatórios.

Por fim, vamos criar a função sortear deixando-a acima do código da tela:

def sortear():
  numeros = rd.sample(range(1,61),6)
  num1['text'] = numeros[0]
  num2['text'] = numeros[1]
  num3['text'] = numeros[2]
  num4['text'] = numeros[3]
  num5['text'] = numeros[4]
  num6['text'] = numeros[5]

A função acima cria os 6 números e exibi-os para cada um dos rótulos.

Segue abaixo o link do GitHub:

https://github.com/phael8919/MegasenaPython/blob/main/megasena.py

Segue abaixo o código completo:

import random as rd
from tkinter import *

def sortear():
  numeros = rd.sample(range(1,61),6)
  num1['text'] = numeros[0]
  num2['text'] = numeros[1]
  num3['text'] = numeros[2]
  num4['text'] = numeros[3]
  num5['text'] = numeros[4]
  num6['text'] = numeros[5]

tela = Tk()
tela.title('Megasena')

titulo = Label(tela, text='MEGASENA', font='Arial 30 bold', fg='green')
titulo.grid(row=1, column=1, pady=25, padx=100, columnspan=2)

botao = Button(tela, text='Sortear Números', font='Arial 20', bg='light green', fg='green', command=sortear)
botao.grid(row=2, column=1, columnspan=2, pady=30, padx=100)

num1 = Label(tela, text='', font='Arial 30 bold')
num1.grid(row=3, column=1, pady=10, padx=30)

num2 = Label(tela, text='', font='Arial 30 bold')
num2.grid(row=3, column=2, pady=10, padx=30)

num3 = Label(tela, text='', font='Arial 30 bold')
num3.grid(row=4, column=1, pady=10, padx=30)

num4 = Label(tela, text='', font='Arial 30 bold')
num4.grid(row=4, column=2, pady=10, padx=30)

num5 = Label(tela, text='', font='Arial 30 bold')
num5.grid(row=5, column=1, pady=10, padx=30)

num6 = Label(tela, text='', font='Arial 30 bold')
num6.grid(row=5, column=2, pady=10, padx=30)

tela.geometry('450x500')
tela.mainloop()


Compartilhe
Comentários (1)

AS

Alan Santos - 31/12/2024 11:26

Legal, você ainda pode obter números verdadeiramente aleatórios fazendo uma chamada de API para o site random.org


url = "https://api.random.org/json-rpc/4/invoke"
headers = {"Content-Type": "application/json"}

data = {
  "jsonrpc": "2.0",
  "method": "generateIntegers",
  "params": {
    "apiKey": API,
    "n": 6,
    "min": 1,
    "max": 60
  },
  "id": 1
}