Executable generated in pycharm doesn't work - python-3.x

I'm working on a python project in the pycharm environment, after finishing the script and checking if it was working and it is, I generated an executable using pyinstaller/auto py to exe, however, when I try to run it, it opens and closes quickly , without executing the code and the process does not appear in windows processes.
follow the script
I have already verified that there is no problem in my code and the CMD is not closing when completing the program, since it is not even starting.
import numpy as np
import smtplib
import email.message
import time
# Funções importantes para o projeto
def linha(tam=42):
return "-=" * tam
def cabeçalho(txt):
print(linha())
print(txt.center(84))
print(linha())
def corpo(txt):
print(txt.center(84))
print(linha())
def menu(lista):
corpo("<Menu Principal>")
corpo("<Escolha uma das opções de acordo com a quantidade de avaliaçãos que você já realizou>")
print("<Digite o número correspondente à opção desejada>")
c = 1
for item in lista:
print(f"{[ c ]} -> {item}")
c += 1
print(linha())
# Interface para o menu principal
cabeçalho("Inicializando...")
time.sleep(5)
cabeçalho("Qual nota você precisa para passar?")
time.sleep(2)
while True:
print(linha())
corpo("<O programa irá informar as notas das avaliação que você não realizou>")
corpo(""" Em caso de erro com o programa, informe o bug pela opção no menu principal
ou
entre em contato com o email Nota.necessaria2023#gmail.com""")
menu(["Primeira avaliação ", "Segunda avaliação", "Terceira avaliação", "Quarta avaliação",
"Reportar Bug/Sugestões para melhorias","Créditos", "Sair do Programa"])
# Entrada
while True:
opcao = input("Qual item você deseja?\n")
try:
opcao = int(opcao)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(opcao) == int:
break
# verificador de opção
# Números inexistentes
if opcao > 7 or opcao < 1:
print("Opção Inválida, selecione novamente")
print(linha())
time.sleep(0.5)
print("Retornando ao menu...")
print(linha())
time.sleep(3)
# Desligar o programa
if opcao == 7:
print(
"""<Desligando aplicação>
Aguarde..."""
)
time.sleep(3)
print("Programa Desligado, Obrigado por utilizar!")
break
print(linha())
# avaliação 1
if opcao == 1:
while True:
p1 = input("Digite aqui sua nota da avaliação 1\n")
try:
p1 = float(p1)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p1) == float:
break
if p1 > 10:
p1 = 10
print("Calculando...")
time.sleep(1)
for count in np.arange(0, 10, 0.1):
p2 = count + 0.1
n1 = (p1 + p2) / 2
if n1 == 6:
print(f"Sua p2 precisa ser: {p2:.2f}\n")
break
elif p2 == 10:
print("Você não obterá nota suficiente, tire %s para recuperar nas próximas avaliaçãos\n" % (p2))
if n1 == 6:
print("Você precisa tirar nota 6 na p3");
print("Você precisa tirar nota 6 na p4")
if n1 < 6:
for count in np.arange(0, 10, 0.1):
p3 = count + 0.1
p4 = count + 0.1
n2 = (p3 + p4) / 2
mf = (2 * n1 + 3 * n2) / 5
if mf >= 6:
print("Você precisa de, no mínimo, %s na p3 e %s na p4 para passar" % (p3, p4))
break
print(linha())
print("Operação Concluída")
input("Confirme para voltar ao menu")
print("Retornando ao menu...")
time.sleep(2)
# avaliação 2
if opcao == 2:
while True:
p1 = input("Digite aqui sua nota da avaliação 1\n")
try:
p1 = float(p1)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p1) == float:
break
while True:
p2 = input("Digite aqui sua nota da avaliação 2\n")
try:
p2 = float(p2)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p2) == float:
break
if p1 > 10:
p1 = 10
if p2 > 10:
p2 = 10
print("Calculando...")
time.sleep(1)
n1 = (p1 + p2) / 2
print(f"Sua média da N1 é: ", n1)
for count in np.arange(0, 10, 0.1):
p3 = count + 0.11
p4 = count + 0.1
n2 = (p3 + p4) / 2
mf = (2 * n1 + 3 * n2) / 5
if mf >= 6:
print(f"Você precisa de, no mínimo, {p3: .2f} na p3 e {p4: .2f} na p4 para passar sem ir para a AF")
break
for count in np.arange(0, 10, 0.1):
p3 = count + 0.1
p4 = count + 0.1
n2 = (p3 + p4) / 2
mf = (2 * n1 + 3 * n2) / 5
if mf >= 3:
print(f"Você precisa de, no mínimo, {p3: .2f} na p3 e {p4: .2f} na p4 para ir para a AF")
break
for count in np.arange(0, 10, 0.1):
AF = count + 0.1
maf = (mf + AF) / 2
if maf >= 5:
print(
f"Se você tirar a nota mínima para ir para a AF precisará de, no mínimo, {AF: .2f} para passar")
break
print(linha())
print("Operação Concluída")
input("Confirme para voltar ao menu")
print("Retornando ao menu...")
time.sleep(2)
# Avaliação 3
if opcao == 3:
while True:
p1 = input("Digite aqui sua nota da avaliação 1\n")
try:
p1 = float(p1)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p1) == float:
break
while True:
p2 = input("Digite aqui sua nota da avaliação 2\n")
try:
p2 = float(p2)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p2) == float:
break
while True:
p3 = input("Digite aqui sua nota da avaliação 3\n")
try:
p3 = float(p3)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p3) == float:
break
if p1 > 10:
p1 = 10
if p2 > 10:
p2 = 10
if p3 > 10:
p3 = 10
n1 = (p1 + p2) / 2
print("Calculando...")
time.sleep(0.5)
print("Sua média da N1 é: ", n1)
print("Calculando...")
time.sleep(1)
for count in np.arange(0, 10, 0.1):
p4 = count + 0.1
n2 = (p3 + p4) / 2
mf = (2 * n1 + 3 * n2) / 5
if mf >= 6:
print(f"Você precisa de, no mínimo, {p4: .2f} na p4 para passar sem ir para a AF")
break
for count in np.arange(0, 10, 0.1):
p4 = count + 0.1
n2 = (p3 + p4) / 2
mf = (2 * n1 + 3 * n2) / 5
if mf >= 3 and mf < 6:
print(f"Você precisa de, no mínimo, {p4: .2f} na p4 para ir para a AF")
break
if mf >= 3 and mf < 6:
for count in np.arange(0, 10, 0.1):
AF = count + 0.1
maf = (mf + AF) / 2
if maf >= 5 and maf <= 6:
print(f"Se você tirar a nota mínima para ir para a AF precisará de, no mínimo, {AF: .2f} para passar")
break
print(linha())
print("Operação Concluída")
input("Confirme para voltar ao menu")
print("Retornando ao menu...")
time.sleep(2)
# Avaliação 4
if opcao == 4:
while True:
p1 = input("Digite aqui sua nota da avaliação 1\n")
try:
p1 = float(p1)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p1) == float:
break
while True:
p2 = input("Digite aqui sua nota da avaliação 2\n")
try:
p2 = float(p2)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p2) == float:
break
while True:
p3 = input("Digite aqui sua nota da avaliação 3\n")
try:
p3 = float(p3)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p3) == float:
break
while True:
p4 = input("Digite aqui sua nota da avaliação 4\n")
try:
p4 = float(p4)
except ValueError:
print("Não é um número válido, Digite somente números válidos.")
if type(p4) == float:
break
if p1 > 10:
p1 = 10
if p2 > 10:
p2 = 10
if p3 > 10:
p3 = 10
if p4 > 10:
p4 = 10
n1 = (p1 + p2) / 2
print("Calculando...")
time.sleep(0.5)
print("A sua média da N1 é:", n1)
n2 = (p3 + p4) / 2
print("Calculando...")
time.sleep(0.5)
print("A sua média da N2 é:", n2)
mf = (2 * n1 + 3 * n2) / 5
print("Calculando...")
time.sleep(0.5)
print("A sua média final é:", mf)
print("Calculando...")
time.sleep(1)
if mf >= 6:
print("Você passou direto!")
elif mf >= 3 and mf < 6:
for count in np.arange(0, 10, 0.1):
AF = count + 0.1
maf = (mf + AF) / 2
if maf >= 5:
print(
f"Se você tirar a nota mínima para ir para a AF precisará de, no mínimo, {AF: .2f} para passar")
break
else:
print("Você reprovou")
print(linha())
print("Operação Concluída")
input("Confirme para voltar ao menu")
print("Retornando ao menu...")
time.sleep(2)
# Reportar Bugs e Sugestões
if opcao == 5:
print("Loading...")
time.sleep(5)
print("Reporte o bug")
print("Após enviar, espere alguns segundos para confirmação")
assunto_email = input("Digite o assunto do email:\n")
def enviar_email():
corpo_email = input("""
Para criar um parágrafo utilize:
<p>Parágrafo1</p>
<p>Parágrafo2</p>
""")
msg = email.message.Message()
msg['Subject'] = assunto_email
msg['From'] = 'Nota.necessaria2023#gmail.com'
msg['To'] = 'Nota.necessaria2023#gmail.com'
password = 'cbxhznbyqqeiovcw'
msg.add_header('Content-Type', 'text/html')
msg.set_payload(corpo_email)
s = smtplib.SMTP('smtp.gmail.com: 587')
s.starttls()
s.login(msg['From'], password)
s.sendmail(msg['From'], [msg['To']], msg.as_string().encode('utf-8'))
print('Email enviado')
enviar_email()
print(linha())
print("Operação Concluída")
input("Confirme para voltar ao menu")
print("Retornando ao menu...")
time.sleep(2)
# Créditos
if opcao == 6:
cabeçalho("Créditos")
print("Criado por: Enzo Gabriel (ManoKondz)")
print("Data de lançamento: 05/02/2023")
print("Versão: beta(v1.0)")
print("Agradecimentos: Matheus Pereira; Isaias do Amaral; João Vitor")
print(linha())
print("Operação Concluída")
input("Confirme para voltar ao menu")
print("Retornando ao menu...")
time.sleep(2)

Related

Finding the cause of a tab error inside a Class

I was coding this simple 'Bank' program for my first exercise with classes in Python but when I run it, says:
tabError: inconsistent use of tabs and spaces in indentation
line 45
if self.datos[x]['nombre'] == nombre and self.datos[x]['idnum'] == idnum and self.datos[x]['email'] == email:^
I understand what it means, and I took a look on my code and tried to find if there was some problem with the methods, nevertheless I couldn't understand what is causing it, I believe something about the dictionaries has something to do with it. So this is my code:
class Cliente:
def __init__(self):
self.datos = []
def opciones(self):
menu = ['1: Mostrar saldo',
'2: Ingresar monto',
'3: Retirar monto',
'4: Cerrar']
for option in range(len(menu)):
print(option)
opc_escoger = int(input('Escriba el número de la opción que desee: '))
if opc_escoger == 1:
self.mostrar()
elif opc_escoger == 2:
self.Ingresar()
elif opc_escoger == 3:
self.retirar()
elif opc_escoger == 4:
print('Saliendo...')
exit()
elif opc_escoger == 5:
self.registrarse
self.opciones()
def registrarse(self):
print('REGISTRO')
nombre = input('Ingrese su nombre de usuario: ')
idnum = input('Ingrese su número de documento de identificación: ')
email = input('Ingrese su dirección de correo electrónico: ')
self.datos.append({'nombre':nombre, 'idnum':idnum, 'email':email, 'monto': 0})
def ingresar(self):
print('INGRESAR')
nombre = input('Ingrese su nombre de usuario: ')
idnum = input('Ingrese su número de documento de identificación: ')
email = input('Ingrese su dirección de correo electrónico: ')
for x in range(len(self.datos)):
if self.datos[x]['nombre'] == nombre and self.datos[x]['idnum'] == idnum and self.datos[x]['email'] == email:
print('Dinero actual: ', self.datos[x]['monto'])
monto = input('¿Cuál es el monto a ingresar?: ')
self.datos[x]['monto':monto]
else:
print('Los datos ingresados no coinciden con los de un usuario registrado')
self.registrarse()
#Here's some more code for the other methods, but are pretty similar to the 'ingresar' method

Can't turn my .py file in to a WORKING .exe file

I've been struglying to convert my .py file in to a working .exe file. This is my first time doing it and I can't seem to find my mistake.
I've tryed two methods, pyinstaller and cx_Freeze, and both times the conversion would occur without any error, but when I try to open the .exe file, it blinks a CMD window and nothing happens.
Can any one, please, help me?
my program:
import numpy as np
import pandas as pd
verde='\033[1;32m'
vermelho='\033[1;31m'
preto='\033[0;30m'
'DATA FRAME FROTA'
Empilhadeiras={'Paletrans':['PR20','PR16'],'STILL':['FMX','EGU'], 'Ameise':['EJC','X']}
Modelos= pd.DataFrame(Empilhadeiras, columns=['Paletrans','STILL','Ameise'])
print(Modelos)
Custos={'Impostos':[]}
print()
print()
'VALOR DO MAQUINÁRIO'
num_maquinário = float(input("Digite o valor do maquinário: "))
str(float(num_maquinário))
print('R$'+str(float(num_maquinário)))
print()
'VALOR DOS IMPOSTOS'
num_txs = float(input("Digite a alíquota (sem %): "))
print(str(float(num_txs)) + '%')
txs=num_maquinário*(num_txs/100)
str(txs)
print('R$'+ str(txs))
print()
'DEPRECIAÇÃO DO MAQUINÁRIO'
num_depre = float(input("Digite o percentual de depreciação por ano (sem %): "))
print(str(float(num_depre)) + '%')
depre=num_maquinário*(num_depre/100)
str(depre)
print('R$'+ str(depre))
print()
'VALOR DO FRETE'
num_frete = float(input("Digite o valor do frete: "))
str(float(num_frete))
print('Frete trajeto único: R$'+ str(float(num_frete)))
num_frete*2
str(num_frete*2)
print('Frete ida e volta: R$' + str(num_frete*2))
print()
'DURAÇÃO DO CONTRATO'
num_dur = float(input("Digite o tempo de duração do contrato em meses( de 12 a 60): "))
str(float(num_dur))
print(str(float(num_dur))+' meses')
print()
'CUSTO COM SUBSTITUIÇÃO DE PEÇAS'
num_pec = float(input("Digite o custo médio para substituição de peças por mês: "))
str(float(num_pec))
print('R$'+str(float(num_pec)))
num_peças= num_pec*num_dur
print('Custo total com peças ao longo do contrato:R$'+str(num_peças))
print()
'NÚMERO DE VISITAS TÉCNICAS'
num_vis= float(input("Digite o número de visitas técnicas mensais planejadas: "))
str(float(num_vis))
print('R$'+str(float(num_vis)))
num_visit = num_vis*num_dur
print('Custo total com visitas ao longo do contrato: R$'+str(num_visit))
print()
'NÚMERO DE HORAS TÉCNICAS'
num_htec = float(input("Número médio de horas técnicas por atendimento: "))
if num_htec < 4:
if num_htec < 4:
print("R$100,00")
elif 8> num_htec >4:
print("R$200,00")
elif 12> num_htec >8:
print("R$300,00")
else:
print("R$500,00")
else:
print("R$100,00")
m = num_htec*num_vis
def totTec(m):
m = num_htec*num_vis
if m < 4:
if m < 4:
htec = 100
elif 8> m>4:
htec = 200
elif 12> m>8:
htec = 300
elif 16> m>=12:
htec = 500
elif 20> m>16:
htec = 750
elif 24> m>20:
htec = 1200
else:
htec = 1500
else:
htec = 250
return htec
print('Valor Tempo total: R$'+str(totTec(m)))
print()
'CUSTO DAS HORAS DE DESLOCAMENTO'
num_dtemp = float(input("Tempo de deslocamento em horas até o cliente: "))
if num_dtemp < 4:
if num_dtemp < 4:
print("R$100,00")
elif 8> num_dtemp >4:
print("R$200,00")
elif 12> num_dtemp >8:
print("R$300,00")
else:
print("R$400,00")
else:
print("R$100,00")
str(num_dtemp*num_vis)
print('Total de horas:'+str(num_dtemp*num_vis))
a=num_dtemp*num_vis
def totTemp(a):
a=num_dtemp*num_vis
if a < 4:
if a < 4:
temp= 100
elif 8> a>4:
temp= 200
elif 12> a>8:
temp= 300
elif 16> a>12:
temp= 400
elif 20> a>16:
temp= 500
elif 24> a>20:
temp= 600
else:
temp= 400
else:
temp= 100
return temp
print('Valor Tempo total: R$'+str(totTemp(a))+',00')
print()
'CUSTO DA DISTÂNCIA DE DESLOCAMENTO ATÉ O CLIENTE'
num_distância = float(input("Digite a distância até o cliente em KM: "))
if num_distância*2 < 100:
if num_distância*2 < 100:
print("R$40,00")
elif 250> num_distância*2 >100:
print("R$100,00")
elif 400> num_distância*2 >250:
print("R$160,00")
elif 550> num_distância*2 >400:
print("R$220,00")
elif 700> num_distância*2 >550:
print("R$500,00")
else:
print("R$750,00")
else:
print("R$50,00")
k = (num_distância*2)*num_vis
def distTot(k):
k = (num_distância*2)*num_vis
if k < 100:
if k < 100:
dist = 40
elif 250> k>100:
dist = 160
elif 400> k>250:
dist = 220
elif 550> k>400:
dist = 280
elif 700> k>550:
dist = 340
elif 1000>= k>850:
dist = 400
else:
dist = 500
else:
dist = 40
return dist
print('Valor Distância total: R$'+str(distTot(k))+',00')
print()
'CUSTO COM PEDÁGIO'
num_pedágio = float(input("Digite o gasto com pedágio: "))
str(float(num_pedágio))
print('Pedágios por visita: R$'+str(float(num_pedágio)))
num_tped = num_pedágio*num_vis
print('Gasto total com pedágio: R$'+str(num_tped))
print()
'CUSTO COM HOSPEDAGEM'
num_hospedagem = float(input("Digite o gasto com hospedagem: "))
str(float(num_hospedagem))
print('Hospedagem por visita: R$'+str(float(num_hospedagem)))
num_thost = num_hospedagem*num_vis
print('Gasto total com hospedagem: R$'+str(num_thost))
print()
'CUSTO COM ALIMENTAÇÃO'
num_alimentação = float(input("Digite o gasto com alimentação: "))
str(float(num_alimentação))
print('Gasto com alimentação por vista: R$'+str(float(num_alimentação)))
num_tal= num_alimentação*num_vis
print('Gasto total com alimentação: R$'+str(num_tal))
print()
'CUSTO TOTAL INICIAL'
cti= num_maquinário + txs + num_frete
print('Custo inicial: R$'+str(cti))
print()
'CUSTO TOTAL ANUAL'
cta= totTec(m) + num_pec + distTot(k) + totTemp(a) + num_tped + num_thost + num_tal
print('Custo anual: R$'+str(cta))
print()
'CUSTO TOTAL'
CustoTotal= num_maquinário + txs + depre + + (num_frete*2) + totTec(m) + num_pec + distTot(k) + totTemp(a) + num_tped + num_thost + num_tal
print('Custo total: R$'+str(CustoTotal))
'VALOR DO ALUGUEL'
num_alg = float(input("Digite o valor da Parcela Aluguel: "))
str(float(num_alg))
print('R$'+str(float(num_alg)))
rend_anual= num_alg*12
print('Receita Anual:R$'+ str(rend_anual))
print()
'TAXA MÍNIMA DE ATRATIVIDADE'
num_tma = float(input("Digite a Taxa Mínima de Atratividade: "))
str(float(num_tma))
print(str(float(num_tma))+'%')
num_TMA=num_tma/100
print()
dep1= num_maquinário - depre
dep2=dep1 - (dep1*num_depre)
dep3=dep2 - (dep2*num_depre)
dep4=dep3 - (dep3*num_depre)
dep5=dep4 - (dep4*num_depre)
ano_X=(rend_anual- cta)
ano_1=(rend_anual- cta + dep1 + num_frete)
ano_2=(rend_anual- cta + dep2 + num_frete)
ano_3=(rend_anual- cta + dep3 + num_frete)
ano_4=(rend_anual- cta + dep4 + num_frete)
ano_5=(rend_anual- cta + dep5 + num_frete)
n_1=12
n_2=24
n_3=36
n_4=48
n_5=60
Hipotese_1 = np.array([-cti,ano_1])
Hipotese_2 = np.array([-cti,ano_X,ano_2])
Hipotese_3 = np.array([-cti,ano_X,ano_X,ano_3])
Hipotese_4 = np.array([-cti,ano_X,ano_X,ano_X,ano_4])
Hipotese_5 = np.array([-cti,ano_X,ano_X,ano_X,ano_X,ano_5])
VPL_1=np.npv(rate=num_TMA, values=Hipotese_1)
VPL_2=np.npv(rate=num_TMA, values=Hipotese_2)
VPL_3=np.npv(rate=num_TMA, values=Hipotese_3)
VPL_4=np.npv(rate=num_TMA, values=Hipotese_4)
VPL_5=np.npv(rate=num_TMA, values=Hipotese_5)
print(VPL_1)
print(VPL_2)
print(VPL_3)
print(VPL_4)
print(VPL_5)
vpla_1=(VPL_1)*((num_TMA*(1+num_TMA)**n_1)/((1+num_TMA)**(n_1-1)))
vpla_2=(VPL_2)*((num_TMA*(1+num_TMA)**n_2)/((1+num_TMA)**(n_2-1)))
vpla_3=(VPL_3)*((num_TMA*(1+num_TMA)**n_3)/((1+num_TMA)**(n_3-1)))
vpla_4=(VPL_4)*((num_TMA*(1+num_TMA)**n_4)/((1+num_TMA)**(n_4-1)))
vpla_5=(VPL_5)*((num_TMA*(1+num_TMA)**n_5)/((1+num_TMA)**(n_5-1)))
print()
print('vpla_1 (12 meses)')
print(vpla_1)
if vpla_1>0:
print(verde+'Viável')
else:
print(vermelho+'Inviável')
print(preto+'vpla_2 (24 meses)')
print(vpla_2)
if vpla_2>0:
print(verde+'Viável')
else:
print(vermelho+'Inviável')
print(preto+'vpla_3 (36 meses)')
print(vpla_3)
if vpla_3>0:
print(verde+'Viável')
else:
print(vermelho+'Inviável')
print(preto+'vpla_4 (48 meses)')
print(vpla_4)
if vpla_4>0:
print(verde+'Viável')
else:
print(vermelho+'Inviável')
print(preto+'vpla_5 (60 meses)')
print(vpla_5)
if vpla_5>0:
print(verde+'Viável')
else:
print(vermelho+'Inviável')
How I tried to convert it from cx:
from cx_Freeze import setup, Executable
setup(name='VPLA',
version='0.1',
description='Análise de viabilidade para aluguel de empilhadeiras
elétricas',
executables= [Executable("VPLA.py")])
Then went to the Anaconda CMD and typed:
python setup.py build

Tic Tac Toe project_I am stuck

I currently doing this tic tac toe project, but I am stuck because it does not work, so I need help identifying what errors I made. In addition, I need to allow the user to choose one letter ("X" o "O") and the "X" goes first. I don't know how can I code this. I hope that someone help me, please.
This is the code that I have developed:
# Variables globales
# Tablero vacio
board = ["_", "_", "_",
"_", "_", "_",
"_", "_", "_",]
# Si juego continua
juego_continua = True # El juego continua desde el inicio.
# Quien gana o empata
ganador = None
# Turno asignado
actual_jugador = "X"
# Funcion que defin juego tic tac toe.
def jugar_juego (): #
display_board() # Se va a representar el tablero inicial en pantalla.
# Mientras el juego continua.
while juego_continua: # Booleano
# Definir un solo turno para un jugador arbitrario
handle_turn (actual_jugador)
# Verificar si se acabo el juego
verificar_si_termino_juego()
# Cambiar al otro jugador
cambio_jugador()
# El juego ha terminado
if ganador == "Jugador - X" or ganador == "Jugador - O":
print(ganador + "Ganaste.")
elif ganador == None:
print ("Hay empate.")
def display_board():
print ("\n")
print (board[0] + " | " + board[1] + " | " + board[2] + " 1 | 2 | 3")
print (board[3] + " | " + board[4] + " | " + board[5] + " 4 | 5 | 6")
print (board[6] + " | " + board[7] + " | " + board[8] + " 7 | 8 | 9")
print ("\n")
# Define un turno para el jugador arbitrariamente.
def handle_turn(jugador):
print(jugador + "turno.")
posicion = input("Elegir una posicion desde 1 hasta 9 para comenzar: ")
valid = False
while not valid:
while posicion not in ["1", "2", "3", "4", "5", "6", "7", "8" ]:
posicion = input("Por favor elegir una posicion desde 1 hasta 9 para jugar: ")
posicion = int(posicion) - 1
if board (posicion) == "_":
valid = True
else:
print ("Esta posición ya esta ocupada, elegir otra: ")
board[posicion] = jugador
display_board()
def verificar_si_termino_juego():
verificar_si_gano()
verificar_si_empate()
def verificar_si_gano():
# Establecer variable global
global ganador
# verificar filas
ganador_filas = check_filas()
# verificar columnas
ganador_columnas = check_columnas()
# verificar diagonales
ganador_diagonales = check_diagonales()
if ganador_filas:
ganador = ganador_filas
elif ganador_columnas:
ganador = ganador_columnas
elif ganador_diagonales:
ganador = ganador_diagonales
else:
#No hay ganador
ganador = None
def check_filas():
# Establecer variable global
global juego_continua
# Revisa si las filas son iguales, exceptuando "_"
fila_1 = board[0] == board[1] == board[2] != "_"
fila_2 = board[3] == board[4] == board[5] != "_"
fila_3 = board[6] == board[7] == board[8] != "_"
# Si alguna fila es igual, indica que hay un ganador
if fila_1 or fila_2 or fila_3:
juego_continua = False
# Devuelve el ganador (X o O)
if fila_1:
return board[0]
elif fila_2:
return board[3]
elif fila_3:
return board[6]
# Retorna ninguna si no hay ganador
else:
return None
def check_columnas():
# Establecer variable global
global juego_continua
# Revisa si las columnas son iguales, exceptuando "_"
columnas_1 = board[0] == board[3] == board[6] != "_"
columnas_2 = board[1] == board[4] == board[7] != "_"
columnas_3 = board[2] == board[5] == board[8] != "_"
# Si alguna columna es igual, indica que hay un ganador
if columnas_1 or columnas_2 or columnas_3:
juego_continua = False
# Devuelve el ganador (X o O)
if columnas_1:
return board[0]
elif columnas_2:
return board[1]
elif columnas_3:
return board[2]
else:
return None
def check_diagonales():
# Establecer variable global
global juego_continua
# Revisa si las diagonales son iguales, exceptuando "_"
diagonal_1 = board[0] == board[4] == board[8] != "_"
diagonal_2 = board[2] == board[4] == board[6] != "_"
# Si alguna diagonal es igual, indica que hay un ganador
if diagonal_1 or diagonal_2:
juego_continua = False
# Devuelve el ganador (X o O)
if diagonal_1:
return board[0]
elif diagonal_2:
return board[2]
else:
return None
def verificar_si_empate():
global juego_continua
if "_" not in board:
juego_continua = False
return True
else:
return False
def cambio_jugador():
global actual_jugador
# Si actual jugador fue X, luego cambia a O
if actual_jugador == "X":
actual_jugador = "O"
# Si actual jugador fue O, luego cambia a X
elif actual_jugador == "O":
actual_jugador = "X"
jugar_juego()
The indentation is incorrect.
Here is the updated code:
def handle_turn(jugador):
print(jugador + "turno.")
posicion = input("Elegir una posicion desde 1 hasta 9 para comenzar: ")
valid = False
while not valid:
while posicion not in ["1", "2", "3", "4", "5", "6", "7", "8" ,"9"]:
posicion = input("Por favor elegir una posicion desde 1 hasta 9 para jugar: ")
posicion = int(posicion) - 1
if board[posicion] == "_":
valid = True
else:
print ("Esta posicion ya esta ocupada, elegir otra: ")
board[posicion] = jugador
display_board()

Python - Select 2 columns in a Dataframe and classify them

I'm new in the programming world, and I'm doing some studies to gain knowledge in the area of Data Science.
I have a Dataframe with a lot of information, among it gender and age. I want to bring the amount of lines of each gender (male and female) and classify them as children (0 to> 12 years), young (12 to> 18 years) and adults (18+ years).
The result would be something like:
Children Female: x amount
Young Female: y amount
Adult Female: z amount
Children Male: n amount
Young Male: k amount
Adult Male: j amount
I'm lost to the point of not knowing if I have started correctly... I have created another dataframe with the two columns I need.
df2 = df[["Sex", "Age"]].copy()
Little stuck from here
EDIT (sorry about some terms in the code, they are in portugues but the code is understandable
I could solve the problem.
Here what I did from begining:
Creation of a new DF with only the informations I need:
df2 = df[["Sex", "Age"]].copy()
Creation of a function to classify the values:
def definition(age):
if age >= 18:
return 'Adulto'
elif age >= 12:
return 'Jovem'
return 'Criança'
Add the new column to the DF
df2['Classification'] = df2['Age'].map(definition)
and PRINT
print("A quantidade de crianças do sexo masculino é de {}".format(len(df2.loc[df2['Classification'] == 'Criança'].loc[df2['Sex'] == 'male'])))
print("A quantidade de crianças do sexo feminino é de {}".format(len(df2.loc[df2['Classification'] == 'Criança'].loc[df2['Sex'] == 'female'])))
print("A quantidade de jovens do sexo masculino é de {}".format(len(df2.loc[df2['Classification'] == 'Jovem'].loc[df2['Sex'] == 'male'])))
print("A quantidade de jovens do sexo feminino é de {}".format(len(df2.loc[df2['Classification'] == 'Jovem'].loc[df2['Sex'] == 'female'])))
print("A quantidade de adultos do sexo masculino é de {}".format(len(df2.loc[df2['Classification'] == 'Adulto'].loc[df2['Sex'] == 'male'])))
print("A quantidade de adultos do sexo feminino é de {}".format(len(df2.loc[df2['Classification'] == 'Adulto'].loc[df2['Sex'] == 'female'])))
Result:
A quantidade de crianças do sexo masculino é de 36
A quantidade de crianças do sexo feminino é de 32
A quantidade de jovens do sexo masculino é de 22
A quantidade de jovens do sexo feminino é de 23
A quantidade de adultos do sexo masculino é de 519
A quantidade de adultos do sexo feminino é de 259
I would create the classes for age using pandas.cut and then group by the two columns and check the size. Let me know if I can elaborate on anything.
bins = [1, 5, 10, 15]
group_names = ['Children', 'Young', 'Adult']
age_groups = pandas.cut(df2.Age, bins, labels=group_names)
df2['Age Groups'] = age_groups.tolist()
df2.groupby(['Gender','Age Groups']).size()
My familiarity with the nuances of pandas.cut is a bit rusty so the above bins are not exactly what you want. I suggest playing around with the data in a notebook to get them where you want them. The docs here are helpful https://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html

Why I receive this TypeERROR:'str' object is not callable, in python?

I'm doing my first currency Convertor in python, only with two currencies, and I don't understand why that doesn't work properly? I decide to define all in functions and then call them back, but that isn't working.
I'm doing it in portuguese.
This is my code:
from decimal import Decimal as dec
def menu_conv():
print(" ")
print("»»»»»»»»»»»»»»» Bem-vindo ««««««««««««««")
print("»»»»»»»»»» Conversor de Moeda ««««««««««")
print(" ")
print("**** Selecione a conversao desejada ****")
print(" ")
print("********* 1. Euros -> Dólares **********")
print("********* 2. Dólares -> Euros **********")
print("*************** 3. Saír ****************")
print(" ")
def opcao():
opcao = int(input("Insira a sua opçao: "))
if opcao == 1:
dolar()
elif opcao == 2:
euro()
else:
nao()
def dolar():
print(" ")
montante = dec(input("Qual o montante que deseja converter? €"))
DOLAR = dec(1.39)
cambioDolar = dec(montante / DOLAR)
print(" ")
print("O Valor em Dólares é: ${:.2f}".format(cambioDolar))
print(" ")
print("Deseja fazer nova conversao?")
print(" ")
opcao_txt()
def euro():
print(" ")
montante = dec(input("Qual o montante que deseja converter? $"))
EURO = dec(1.39)
cambioEuro = dec(montante / EURO)
print(" ")
print(" O Valor em Euros é: €{:.2f}".format(cambioEuro))
print(" ")
print("Deseja fazer nova conversao?")
print(" ")
opcao_txt()
def opcao_txt():
opcao = input("» S/N: ")
if opcao == 'S'or's':
menu_conv()
opcao()
else:
nao()
def nao():
print("Até à próxima!")
exit()
menu_conv()
opcao()
This is the ERROR I get when I try to do other convertion:
»»»»»»»»»»»»»»» Bem-vindo ««««««««««««««
»»»»»»»»»» Conversor de Moeda ««««««««««
**** Selecione a conversao desejada ****
********* 1. Euros -> Dólares **********
********* 2. Dólares -> Euros **********
*************** 3. Saír ****************
Insira a sua opçao: 1
Qual o montante que deseja converter? €1000
O Valor em Dólares é: $719.42
Deseja fazer nova conversao?
» S/N: s
»»»»»»»»»»»»»»» Bem-vindo ««««««««««««««
»»»»»»»»»» Conversor de Moeda ««««««««««
**** Selecione a conversao desejada ****
********* 1. Euros -> Dólares **********
********* 2. Dólares -> Euros **********
*************** 3. Saír ****************
Traceback (most recent call last):
File "conversor_moeda.py", line 68, in <module>
opcao()
File "conversor_moeda.py", line 20, in opcao
dolar()
File "conversor_moeda.py", line 37, in dolar
opcao_txt()
File "conversor_moeda.py", line 57, in opcao_txt
opcao()
TypeError: 'str' object is not callable
It's because in your function opcao_txt you have a string variable named opcao which is also a function. So when you call opcao() you're actually trying to call the string.
In opcao_txt you created a local variable named opcao, which takes precedence. It has a string value. You then try to call it with calling syntax () and you get that error. Use a different name for the variable should fix it.

Resources