I have created the matrix, but when the data entered by the user is added the board loses the initial structure
I need the board to continue printing in the same format as when the game starts.
This is the code:
tablero = []
NUM_FILAS = 6
NUM_COLUM = 7
jugador = 1
for fila in range(NUM_FILAS):
filas = []
for j in range(NUM_COLUM):
filas.append([])
tablero.append(filas)
print("\nJueguemos CONECTA 4\n")
for i in range(6):
for j in range(7):
print(tablero[i][j], end=" ")
print()
while True:
usuario = input('Jugador, elige una columna: ')
if usuario.isdigit():
usuario = int(usuario)
for pos in tablero:
if usuario == 1:
tablero.append([jugador])
print(tablero)
break
else:
print('El juego solo funciona con numeros')
I am having some trouble with my code. I need to count how many values in the list are lower than 20. The problem is that my list has both str and int values.
I tried the following but it is not working:
from numpy import mean
import sys
mylistidade = []
mylistmen = []
mylistwomen = []
count = sum(map(lambda x : x<20, mylistwomen[1::2]))
for x in range (1, 5):
print(f'----- {x}ª PESSOA -----')
nome = str(input('Nome: ')).strip().title()
idade = int(input('Idade: '))
sexo = str(input('Sexo [M/F}: ')).upper()
if sexo == 'M' or sexo == 'F':
pass
else:
print('Digite um valor válido no campo Sexo!')
sys.exit()
if sexo == 'M':
mylistmen.append(nome)
mylistmen.append(idade)
else:
mylistwomen.append(nome)
mylistwomen.append(idade)
mylistidade.append(idade)
print(mylistmen)
print(mylistwomen)
print(f'The average age for the group is {mean(mylistidade)}!')
position = mylistmen.index(max(mylistmen[1::2]))
print(f'The oldest man has {max(mylistmen[1::2])} years and it is called', end=' ')
print(f'{mylistmen[position-1]}')
print(f'There is {count} women that has less than 20 years!')
I would like to stick with my solution of sum(map()). Just need some help to figure out what I'm missing.
You have to move count under the for loop
from numpy import mean
import sys
mylistidade = []
mylistmen = []
mylistwomen = []
for x in range (1, 5):
print(f'----- {x}ª PESSOA -----')
nome = str(input('Nome: ')).strip().title()
idade = int(input('Idade: '))
sexo = str(input('Sexo [M/F}: ')).upper()
if sexo == 'M' or sexo == 'F':
pass
else:
print('Digite um valor válido no campo Sexo!')
sys.exit()
if sexo == 'M':
mylistmen.append(nome)
mylistmen.append(idade)
else:
mylistwomen.append(nome)
mylistwomen.append(idade)
mylistidade.append(idade)
count = sum(map(lambda x : x<20, mylistwomen[1::2]))
print(mylistmen)
print(mylistwomen)
print(f'The average age for the group is {mean(mylistidade)}!')
position = mylistmen.index(max(mylistmen[1::2]))
print(f'The oldest man has {max(mylistmen[1::2])} years and it is called', end=' ')
print(f'{mylistmen[position-1]}')
print(f'There is {count} women that has less than 20 years!')
Try this
count = sum(map(lambda x : x if type(x)== 'int' and x<20, mylistwomen[1::2]))
Hey guys im trying to create N objects inside a for loop, but it gives me an error TypeError: cannot unpack non-iterable Jugador object.
can u help me pls?
what im doing wrong?
This is my code:
from Jugador import Jugador
class Juego():
tipoJuego = ""
nJugadores = ""
def __init__(self,tipoJuego, nJugadores):
self.tipoJuego = tipoJuego
self.nJugadores = nJugadores
nJugadoresInt = int(nJugadores)
tipoJuegoInt = int(tipoJuego)
if tipoJuegoInt == 1 or tipoJuegoInt == 2 or tipoJuegoInt == 3:
print("Has elegido el tipo de juego ",tipoJuegoInt, ", y van a jugar ", nJugadores, " Personas")
else:
print("Error: Tipo de juego invalido")
exit()
for i in range(1,nJugadoresInt):
print("Jugador",i, "introduzca el nombre de usuario:")
nUsu = input()
print("Introduzca la edad:")
age = input()
print("Introduzca la palabra elegida:")
word = input()
J,i = Jugador(nUsu, age, word)
If you intend to create a way to assign the N objects to find them back later, I can propose to store them in a list J :
from Jugador import Jugador
class Juego():
tipoJuego = ""
nJugadores = ""
def __init__(self,tipoJuego, nJugadores):
self.tipoJuego = tipoJuego
self.nJugadores = nJugadores
nJugadoresInt = int(nJugadores)
tipoJuegoInt = int(tipoJuego)
if tipoJuegoInt == 1 or tipoJuegoInt == 2 or tipoJuegoInt == 3:
print("Has elegido el tipo de juego ",tipoJuegoInt, ", y van a jugar ", nJugadores, " Personas")
else:
print("Error: Tipo de juego invalido")
exit()
J = []
for i in range(1,nJugadoresInt):
print("Jugador",i, "introduzca el nombre de usuario:")
nUsu = input()
print("Introduzca la edad:")
age = input()
print("Introduzca la palabra elegida:")
word = input()
J.insert(i,Jugador(nUsu, age, word))
For reference : https://docs.python.org/3.8/tutorial/datastructures.html
Sorry if my English is bad but it is not my native language
I'm starting my programming studies in Python, And I need to make this code for my class.
Basically consists of a checklist of the workers of a company to calculate their salary, applying some discounts and bonuses. In Option 4 of the menu, I must show all registered ID's with their final salary
I need to put the variable Sueldo Descontado Which is in the function Def Calcular_Sueldo() within the function Def Liquidaciones_Rut
Someone told me to define it as a class and add it to the registry List [] but I don't know how to do this :/
PS: If I define the variable SueldoDescontado as global Prints the same value for all ID's :/
I hope someone can help me
Heres my code
Lista = [] #<----- Array
Mess = ['enero', 'febrero', 'marzo', 'abril','mayo', 'junio', 'julio',
'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre',
'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio',
'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre',
'ENERO', 'FEBRERO', 'MARZO', 'ABRIL', 'MAYO', 'JUNIO', 'JULIO',
'AGOSTO', 'SEPTIEMBRE', 'OCTUBRE', 'NOVIEMBRE', 'DICIEMBRE']
Rank = ['novato', 'experto', 'supervisor', 'administrativo',
'Novato', 'Experto', 'Supervisor', 'Administrativo',
'NOVATO', 'EXPERTO', 'SUPERVISOR', 'ADMINISTRATIVO']
SistemaSalud = ['a', 'b', 'c',
'A', 'B', 'C']
class Trabajador: #Class <----
Mes = ''
Año = 0
Rut = ''
Nombre = ''
Categoria = ''
DiasOff = 0
AFP = ''
SSalud = ''
SueldoBruto = 0
SueldoDescontado = 0
def Ingresar_Datos():
Elementos = int(input('Ingrese cantidad de trabajadores que desea agregar: \n')) #<--- How many people do you want to add
for Trabajadores in range(Elementos):
dato = Trabajador()
while True:
Nombre = input("Ingrese un nombre: ") #<--- Name
if vacio(Nombre):
print ('No puede dejar el campo vacio')
else:
dato.Nombre = Nombre
break
while True:
Rut = input('Ingrese Rut: ') # <---- ID Number
if vacio(Rut):
print ('No puede dejar el campo vacio')
else:
dato.Rut = Rut
break
while True:
Mes = input('Ingrese mes: ') # <---- Month when start at work
if vacio(Mes):
print ('No puede dejar el campo vacio')
elif Mes in Mess:
dato.Mes = Mes
break
else:
print('Mes invalido')
while True:
Año = input('Ingrese año: ') # <---- Year when start at work
if vacio(Año):
print ('No puede dejar el campo vacio')
else:
dato.Año = Año
break
while True:
AFP = input('Ingrese AFP: ') # <---- NVM just a company name can be put here, not relevant
if vacio(AFP):
print ('No puede dejar el campo vacio')
else:
dato.AFP = AFP
break
while True:
SSalud = input('Sistema de salud A B o C\nDigite opcion: ') # <---- System Health, Here is A, B or C, This make a discount%
if vacio(SSalud):
print ('No puede dejar el campo vacio')
elif SSalud in SistemaSalud:
dato.SSalud = SSalud
break
else:
print ('::::::::::::::::::::ERROR Opcion Invalida::::::::::::::::::::')
while True:
Categoria = input('Categoria; Novato, Supervisor, Experto o Administrativo: ') # <---- Worker rank, Expert have a 2xBonus for 0 days off
if vacio(Categoria):
print ('No puede dejar el campo vacio')
elif Categoria in Rank:
dato.Categoria = Categoria
break
else:
print ('::::::::::::::::::::ERROR Categoria invalida::::::::::::::::::::')
while True:
DiasOff = input('Ingrese cantidad de dias de ausencia: ') #<------ Days of absence, 0 days have a bonus$
if dato.DiasOff < 0 or dato.DiasOff > 30:
print ('Dias de ausencia no puede ser negativo o mayor a 30')
else:
dato.DiasOff = DiasOff
break
while True:
try:
SueldoBruto = int(input('Ingrese sueldo bruto: ')) # <------- Gross Salary
if dato.SueldoBruto < 0:
print ('El monto del sueldo bruto no puede ser negativo')
else:
dato.SueldoBruto = SueldoBruto
break
except ValueError:
print('error')
print("------------------------------------------------")
Lista.append(dato)
def vacio(x):
if x and x.strip():
return False
return True
def Calcular_Sueldo():
Bono = 50000 #<-------- Bonus for 0 Days of absence
for Trabajadores in Lista:
print('Nombre trabajador: ',Trabajadores.Nombre,'\n')
if Trabajadores.DiasOff == '0' and Trabajadores.Categoria == ('experto') or Trabajadores.DiasOff == '0' and Trabajadores.Categoria == ('Experto') or Trabajadores.DiasOff == '0' and Trabajadores.Categoria == ('EXPERTO'):
SueldoBono = Trabajadores.SueldoBruto + Bono*2 #<-------- There is if 0 days absence and rank experto, 2xBonus
print('Sueldo bruto + Bono (Experto) por 0 faltas: ',SueldoBono)
elif Trabajadores.DiasOff == '0': #<-------- Bonus for 0 Days of absence, nvm about rank here
SueldoBono = Trabajadores.SueldoBruto + Bono
print('Sueldo bruto + Bono por 0 faltas: ',SueldoBono)
else:
SueldoBono = Trabajadores.SueldoBruto #<-------- No bonus for days absence
print('Tiene faltas/ausencia, no tiene derecho a Bono: ',SueldoBono)
DctoAFP = SueldoBono - (SueldoBono * 0.1) #<-------- This makes a 10% descuento for AFP, the nvm'company name
print('Sueldo bruto + Recorte del 10% por AFP ',Trabajadores.AFP,': ',DctoAFP)
if Trabajadores.SSalud == 'a' or Trabajadores.SSalud == 'A': #<-------- If Sistem Health is A, make a 5,7% discount
DctoSalud = (DctoAFP/100) * 5.7
print('Recorte del sistema de salud A: ',DctoSalud)
SueldoDescontado = DctoAFP - DctoSalud #<-------------------------- This Variable --------- !"#$"!#%!"#%!#"%"#$%$"#----------
print('Total a pagar: ',SueldoDescontado)
if Trabajadores.SSalud == 'b' or Trabajadores.SSalud == 'B': #<-------- If Sistem Health is B, make a 6.1% discount
DctoSalud = (DctoAFP/100) * 6.1
print('Recorte del sistema de salud B: ',DctoSalud)
SueldoDescontado = DctoAFP - DctoSalud #<-------------------------- This Variable --------- !"#$"!#%!"#%!#"%"#$%$"#----------
print('Total a pagar: ',SueldoDescontado)
if Trabajadores.SSalud == 'c' or Trabajadores.SSalud == 'C': #<-------- If Sistem Health is C, make a 6.5% discount
DctoSalud = (DctoAFP/100) * 6.5
print('Recorte del sistema de salud C: ',DctoSalud)
SueldoDescontado = DctoAFP - DctoSalud #<-------------------------- This Variable --------- !"#$"!#%!"#%!#"%"#$%$"#----------
print('Total a pagar: ',SueldoDescontado)
print('--------------------------------------')
def Liquidaciones_Rut(): #<------- Here I need to print all the ID's number's with his Final Salary (SueldoDescontado)
for Trabajadores in Lista:
print('Rut: ',Trabajadores.Rut,'Total a pagar: $',SueldoDescontado) #<----- To here --------- !"#$"!#%!"#%!#"%"#$%$"#----------
def Listar_Empleados(): #<------------------ Here just print the names of all workers
for Trabajadores in Lista:
print("Empleados registrados: ", Trabajadores.Nombre)
opcion = 7
while (opcion != 6):
print(' ========== Administracion NovaVision ========== ')
print('Menu')
print('1.- Ingresar Datos') #<-------------------------- Enter Data
print('2.- Calcular Sueldo') #<-------------------------- Calculate Salary
print('3.- Listar Empleados') #<----------------------------- List employees (by his name)
print('4.- Mostrar Liquidaciones por RUT') # <--------- List numbers ID with his Respective Salary
print('5.- Salir')
opcion = int(input('Ingrese su opcion: '))
if (opcion == 1):
Ingresar_Datos()
elif (opcion == 2):
Calcular_Sueldo()
elif (opcion == 3):
Listar_Empleados()
elif (opcion == 4):
Liquidaciones_Rut()
elif (opcion == 5):
print('Saliendo .. ')
else:
print ('Opcion no valida')
Small example
class Trabajador:
def __init__(self, number, month, year):
self.number = number
self.month = month
self.year = year
Mess = ['enero', 'febrero', 'marzo', 'abril','mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre']
T1 = Trabajador(10, Mess[0] , 1979)
print (T1.number)
print (T1.month)
print (T1.year)
__init method is class constructor,but read the link I gave you
Run this from command line in Linux
python example1.py
You will get
10
enero
1979
This question already has answers here:
I'm getting a TypeError. How do I fix it?
(2 answers)
Closed 6 months ago.
I'm a benginner, so this might be a very easy mistake, yet it got me.
I get "TypeError: unsupported operand type(s) for -: 'str' and 'int'" when I try to compare len(Conjunto) <= N-1, in a while cycle.
Blockquote< N = int(input("Ingrese n : "))
while len(Conjunto)<=N-1:>
I don't understand what am I doing wrong, here's my code, where you can see that both len(Conjunto) and N are int.
from math import factorial
class Permutacion:
P3=""
def SinR(self):
P4=""
N=0
OK = False
Conjunto = []
Cont=1
Add=None
while OK==False:
try:
N = int(input("Ingrese n : "))
while len(Conjunto)<=N-1:
Add = input("Ingrese el Elemento N\xfamero "+str(Cont)+" : ")
if Add in Conjunto:
print("El elemento no puede repetise")
else:
Conjunto.append(Add)
Cont+=1
while True:
P4 = input("\xbfSe Identifica al Primer Elemento? (Y/N)")
P4 = P4.upper()
if P4=="Y" or P4=="N":
break
if P4=="N":
N=(N-1)
N = factorial(N)
N = str(N)
print("Hay " +N+" Posibles Permutaciones sin Repetici\xf3n")
OK=True
except:
print("Ha ocurrido un error :(")
print("\xbfSegugo de que has introducido un n\xfamero?")
return N
def ConR(self):
Conjunto = ["A"]
Dict = {"A":1}
Cont = 1
Aux=None
AUX=None
Add = None
OK=False
N=0
while OK == False:
#try:
N = int( input("Ingrese n : ") )
while len(Conjunto)<=N-1:
Add = input("Ingrese el Elemento N\xfamero " + str(Cont) + " : ")
if Add in Conjunto:
Aux = Dict.get(Add)
AUX = Aux + 1
Dict.update({Add:AUX})
print(Dict)
Conjunto.append(Add)
Cont+=1
else:
Conjunto.append(Add)
Dict.update({Add:1})
Cont+=1
N = factorial(N)
N = str(N)
print("Hay " + N + " Posibles Permutaciones con Repetici\xf3n")
OK = True
#except:
print("Ha ocurrido un error :(")
print("\xbfSegugo de que has introducido un n\xfamero?")
return N
def Asignar(self):
while True:
P3 = input("\xbfSe Repite Alg\xfan Elemento? (Y/N) : ")
P3 = P3.upper()
if P3 == "N":
Permutacion.SinR(self)
break
elif P3 == "Y":
Permutacion.ConR(self)
break
else:
print("Por favor, presione 'Y' o 'N'")
#class Combinacion
#class Variacion
if __name__ == "__main__":
while True:
P1 = "X"
P2 = "X"
while P1 != "Y" and P1 != "N":
print(" ")
print("Programa Que Ejecuta T\xe9cnicas de Conteo")
P1 = input("\xbfImporta el Orden? (Y/N) : ")
P1 = P1.upper()
if P1 == "Y":
while P2 != "Y" and P2 != "N":
P2=input("\xbfSe Toman Todos los Elementos? (Y/N) : ")
P2=P2.upper()
if P2 == "Y":
print("Permutaci\xf3n")
Per = Permutacion()
Per.Asignar()
elif P2 == "N":
print("Variaci\xf3n")
#Variacion()
break
elif P1 =="N":
print("Combinaci\xf3n")
#Combinacion()
Variable N in your program should be integer, if you want to use it in expression (N-1).
But after factorial calculation you cast it to str:
N = factorial(N)
N = str(N)
print("Hay " + N + " Posibles Permutaciones con Repetici\xf3n")
Do not change type of N, just provide print function with string, like that:
N = factorial(N)
print("Hay " + str(N) + " Posibles Permutaciones con Repetici\xf3n")
Or, better, use .format():
N = factorial(N)
print("Hay {Number} Posibles Permutaciones con Repetici\xf3n".format(Number=N))