Mundo em Python

Verificador de Números Amigos

from tkinter import *
from tkinter import messagebox
def soma_divisores(numero):
soma = 0
for i in range(1, numero):
if numero % i == 0:
soma += i
return soma
def verificar_amigos():
try:
num1 = int(primeiro_numero.get())
num2 = int(segundo_numero.get()) if num1 <= 0 or num2 <= 0:
resultado_texto.config(text="Digite apenas números inteiros positivos.")
return

soma1 = soma_divisores(num1)
soma2 = soma_divisores(num2) if soma1 == num2 and soma2 == num1:
mensagem = f"{num1} e {num2} são NÚMEROS AMIGOS!"
else:
mensagem = f"{num1} e {num2} NÃO são números amigos."

resultado_texto.config(text=mensagem) except ValueError:
resultado_texto.config(text="Por favor, insira valores numéricos válidos.")
def encontrar_ate_limite():
try:
limite = int(limite_num.get())
if limite <= 0:
messagebox.showerror("Erro", "Digite um número positivo.")
return

resultado_lista.delete(0, END) encontrados = []
for num in range(2, limite):
parceiro = soma_divisores(num)
if parceiro > num and soma_divisores(parceiro) == num:
encontrados.append((num, parceiro))
resultado_lista.insert(END, f"{num} e {parceiro}") if not encontrados:
resultado_lista.insert(END, "Nenhum número amigo encontrado até este limite.") except ValueError:
messagebox.showerror("Erro", "Digite um número inteiro válido.")
def limpar():
primeiro_numero_entrada.delete(0, END)
segundo_numero_entrada.delete(0, END)
limite_num_entrada.delete(0, END)
resultado_texto.config(text="")
resultado_lista.delete(0, END)
root = Tk()
root.geometry("800x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Verificador de Números Amigos") # Título
titulo = Label(
text="Verificador de Números Amigos",
font=("Arial", 27, "bold"),
bg="#103030",
fg="#49e3e3"
)
titulo.place(relx=0.05, rely=0.02) # Labels para entrada de dois números
Label(text="Primeiro número:", font=("Arial", 20, "bold"), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.12)
Label(text="Segundo número:", font=("Arial", 20, "bold"), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.20) primeiro_numero = StringVar()
primeiro_numero_entrada = Entry(textvariable=primeiro_numero, font=("Arial", 12, "bold"), bg="white", fg="blue", justify='center')
primeiro_numero_entrada.place(relx=0.5, rely=0.125, relwidth=0.4)
primeiro_numero_entrada.focus() segundo_numero = StringVar()
segundo_numero_entrada = Entry(textvariable=segundo_numero, font=("Arial", 12, "bold"), bg="white", fg="blue", justify='center')
segundo_numero_entrada.place(relx=0.5, rely=0.21, relwidth=0.4) Button(text="Verificar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=verificar_amigos).place(relx=0.05, rely=0.30, relwidth=0.4, relheight=0.08) resultado_texto = Label(text="", font=("Arial", 14, "bold"), bg="#103030", fg="#49e3e3", wraplength=700, justify="center")
resultado_texto.place(relx=0.05, rely=0.40, relwidth=0.9, relheight=0.08) Label(text="Encontrar números amigos até:", font=("Arial", 20, "bold"), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.52)
limite_num = StringVar()
limite_num_entrada = Entry(textvariable=limite_num, font=("Arial", 12, "bold"), bg="white", fg="blue", justify='center')
limite_num_entrada.place(relx=0.55, rely=0.525, relwidth=0.35) Button(text="Encontrar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=encontrar_ate_limite).place(relx=0.05, rely=0.60, relwidth=0.4, relheight=0.08) resultado_lista = Listbox(bg="white", fg="blue", font=("Arial", 12, "bold"))
resultado_lista.place(relx=0.05, rely=0.70, relwidth=0.9, relheight=0.20)
Button(text="Limpar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=limpar).place(relx=0.05, rely=0.92, relwidth=0.4, relheight=0.06)
Button(text="Sair", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=root.destroy).place(relx=0.55, rely=0.92, relwidth=0.4, relheight=0.06) root.mainloop()
0