En la última entrada habíamos visto los condicionales y en ellos utilizamos algunos operadores, vamos a ver que y cuales son, en qué casos los utilizamos y para que nos van a servir!
Definición de operadores en python
Los operadores son símbolos matemáticos que llevan a cabo una operación específica entre los operandos y tienen una función en específico. Los operadores reciben pueden recibir operandos variables.
Los operandos serian aquellos argumentos que reciben los operadores para realizar su función..
Podríamos entenderlo más fácilmente con un ejemplo:
En el caso de una SUMA el operador utilizado es el símbolo «más» (+) y podemos sumar tanto números, como letras o variables como hemos visto anteriormente. Estos números o variables serían los Operandos y cuando decimos que pueden ser dinámicos nos referimos a variables, que pueden cambiar su valor, pero el operando realizará la misma operación! comprendes?
Tipos de operadores en python
Hay diferentes operadores y mas te vale conocerlos a todos!! Porque son de gran utilidad en el uso de condiciones y funciones entre otras cosas como dije son un elemento crucial en la programación! Veamos los tipos y cuales son:
Aritméticos
Los operadores aritméticos son aquellos que se utilizan para realizar operaciones matemáticas sencillas:
2 + 2 | 4 | ||
Restar | 3 – 2 | 1 | |
Multiplicar | 2 * 2 | 4 | |
Dividir | 4 / 2 | 2 | |
Módulo: Devolverá el resto de la división | 4 % 2 | 0 | |
Exponente: Exponencial de un número | 3**2 | 9 | |
División devuelve el entero de la misma | 8//4 | 2 |
Ejemplo:
#!/usr/bin/env python # -*- coding: utf-8 -*- # # operadores.py # # Copyright 2018 https://pythones.net # print ((12), ('+'), (14)) print (('Operando'), ('Operador'), ('operando')) print (('resultado:'), (12 + 14)) #Aqui los numeros 12 y 14 son Operandos y #el símbolo (+) es el Operador a = 12 b = 145 print ((a), ('+'), (b)) print (('Operando'), ('Operador'), ('operando')) print (('resultado:'), (a + b))#Aqui estas variables a y b son Operandos y #el símbolo (+) es el Operador
Aquí como bien puedes ver el operador suma se mantiene en ambos códigos igual, solo cambiaron los operadores pero el segundo código nos permite cambiar los valores de las variables y realizar la misma operación.
Comparación
Los operadores de comparación son aquellos que se utilizan para comparar valores y nos devolverá True / False como resultado de la condición. También se los conoce como operadores relaciones! Veamos cuales son y algunos ejemplos!
Si dos valores son exactamente iguales! | 2 == 2 2 == 3 | True False | |
Si dos valores son diferentes devuelve True! | 2 != 5 2 != 2 | True False | |
Si el valor de la izquierda es mayor que el de la derecha devuelve True | 4 > 2 1 > 2 | True False | |
Si el valor de la izquierda es menor que el de la derecha devuelve True | 1 < 2 4 < 2 | True False | |
Si el valor de la izquierda es mayor o igual que el de la derecha devuelve True | 4 >= 2 1 >= 2 4 >= 4 | True False True | |
Si el valor de la izquierda es menor o igual que el de la derecha devuelve True | 4 <= 6 1 <= 0 4 <= 4 | True False True |
Ejemplo:
Como vimos en la entrada de sentencias if, elif, else utilizamos operadores de comparación, veamos de vuelta el código del ejemplo de sentencia remarcando el operador!
#!/usr/bin/env python # -*- coding: utf-8 -*- # # operadores.py # # Copyright 2018 https://pythones.net # Comprador_Dinero = 100 if (Comprador_Dinero >= 25): print ("Has comprado un libro") Comprador_Dinero = Comprador_Dinero - 25 print (("Tu saldo es"), (Comprador_Dinero)) else: print ("Usted no tiene dinero suficiente. Seguridad!!") #Resultado: "Has comprado un libro" #Resultado: "Tu saldo es 75"
En este código utilizamos el operador de asignación «=» para la variable Comprador_Dinero y de comparación «mayor o igual a» (>=)
Asignación
Los operadores de asignación son aquellos que utilizamos para asignarle un valor a variable, lista, tupla, conjunto, etc. Y no solo existe el símbolo igual «=» como operador de asignación, hay también otras combinaciones de símbolos al igual que las anteriores que vimos que nos van a permitir ahorrar código.
Asigna un valor a un elemento. Puede ser variable, lista, diccionario, tupla, etc. | a = 2 + 2 | «a» vale 4 | |
El primer elemento es igual a la suma del primer elemento con el segundo. Se suele utilizar como contador.. | b += 1 | b = b + 1 Cada vez que se ejecute esta instrucción se le sumara 1 a «b» | |
El primer elemento es igual a la resta del primer elemento con el segundo. Se suele utilizar como contador negativo.. | b -= 1 | b = b – 1 Cada vez que se ejecute esta instrucción se le restara 1 a «b» | |
El primer elemento es igual a la multiplicación del primer elemento con el segundo. | b *= 2 | b = b * 2 Cada vez que se ejecute esta instrucción «b» se multiplicará por dos y se le asignará el valor del resultado.. | |
El primer elemento es igual a la división del primer elemento con el segundo. | b /= 2 | b = b / 2 Cada vez que se ejecute esta instrucción «b» se dividirá por dos y se le asignará el valor del resultado.. | |
El primer elemento es igual a el Módulo: resto de la división del primer elemento con el segundo. | b %= 2 | b = b % 2 Cada vez que se ejecute esta instrucción «b» se dividirá por dos y se le asignará el valor del resultado (resto).. | |
El primer elemento es igual a el resultado de la exponente del primer elemento con el segundo. | b **= 2 | b = b ** 2 Cada vez que se ejecute esta instrucción «b» se expondrá por dos y se le asignará el valor del resultado (exponencial).. |
Ejemplo:
#!/usr/bin/env python # -*- coding: utf-8 -*- # # operadores.py # # Copyright 2018 https://pythones.net # año_nacimiento = 1999 #Año en que nacio la persona mes_nacimiento = 10 #Mes en que nacio año_actual = 2018#Año actual mes_actual = 8#Mes actual #Condicion: Si el año actual es 2018 y el mes actual es menor al de nacimiento #entonces imprimimos la edad normal, calculada con una resta (Año actual - Año nacimiento) if año_actual == 2018 and mes_actual < mes_nacimiento: edad = año_actual - año_nacimiento print (("la edad es"), (edad)) #Condicion: Si el año actual es 2018 y el mes actual es mayor al de nacimiento #entonces calculamos la edad con una resta normal (Año actual - Año nacimiento) #pero también le agregamos 1 año porque ya habría cumplido otro año mas. if año_actual == 2018 and mes_actual > mes_nacimiento: edad = año_actual - año_nacimiento edad += 1 print (("la edad es"), (edad), ("porque nació en mes"), (mes_nacimiento), ("y estamos en mes"), (mes_actual))
En este caso veremos un programa que determina la edad según el año pero también el mes de nacimiento, porque si ese mes ya paso, la persona habría cumplido años y por ende tendría un año más!
Lógicos
Los operadores lógicos son and (y) or (o) not (no) y sirven para comprobar si dos o más operandos son ciertos (True) o falsos (false) y nos devolverá como resultado True o False. Normalmente los solemos utilizar mucho en los condicionales para devolver un booleano comparando varios elementos.
En cambio el operador Not sirve para indicar el contrario de un booleano como True / False. Si colocamos un Not True estaríamos diciendo «No verdadero» y Not False «No falso». En una condición si no es verdadero nos devolverá false y si no es false nos devolverá verdadero!
Si y sólo si todos los elementos son True dará por resultado True. Sino False | True and True False and False True and False False and True | True True False False | |
Si algún elemento es True dará por resultado True. Sino False | True and True False and False True and False False and True | True False True True | |
El operador «not» es unario, de negación por ende solo dará True si su elemento es False y viceversa. | not True not False | False True |
Ejemplo:
En un boliche regalaron 3 entradas gratis, pero solo pueden entrar los ganadores que tengan la mayoría de edad, si son hombres deben ser mayores de 21 y si son mujeres mayores de 18. Caso contrario no los dejaremos pasar!
#!/usr/bin/env python # -*- coding: utf-8 -*- # # operadores.py # # Copyright 2018 https://pythones.net # Hombres_edad = 21 Mujeres_edad = 18 Carlos_edad = 23 Juan_edad = 18 Marita_edad = 29 #Comprobamos si los 3 cumplen la edad mínima if Carlos_edad > Hombres_edad and Juan_edad > Hombres_edad and Marita_edad > Mujeres_edad: print ("Pueden pasar los tres porque cumplen la edad minima") #Comprobamos si alguno no la cumple if Carlos_edad < Hombres_edad or Juan_edad < Hombres_edad or Marita_edad < Mujeres_edad: print ("Alguno no cumple la condicion de edad, no pueden entrar juntos") #Pero, ¿Quien se está haciendo el listillo y queriendo pasar? if Carlos_edad > Hombres_edad: print ("Carlos puedes pasar") else: print ("Carlos no puedes pasar") if Juan_edad > Hombres_edad: print ("Juan puedes pasar") else: print ("Juan no puedes pasar") if Marita_edad > Mujeres_edad: print ("Marita puedes pasar") else: print ("Marita no puedes pasar")
Venga juan no te pases de listo que estoy programado en python y te voy a dar una de madrasos!
Especiales
Existen otros operadores especiales que veremos y utilizaremos comúnmente en bucles o para comprobar si una variable es exactamente igual a otra o no, o por ejemplo para saber si un elemento se encuentra dentro de otros, etc..
El operador In (en) devuelve True si un elemento se encuentra dentro de otro. | a = [3, 4] 3 in a | True Porque «3» se encuentra en «a» | |
El operador Not In (en) devuelve True si un elemento no se encuentra dentro de otro. | a = [3, 4] 5 in a | True Porque «5» no se encuentra en «a» | |
El operador «Is» (es) devuelve True si los elementos son exactamente iguales. | x = 10 y = 10 x is y | True Porque ambas variables tienen el mismo valor, son iguales. | |
El operador «not is»(no es) devuelve true si los elementos no son exactamente iguales. | x = 10 y = 111 x not is | True Porque estas variables no tienen el mismo valor, por ende son diferentes. |
Ejemplo:
Veamos ahora un ejemplo clásico, tenemos una lista de invitados muy larga y queremos saber si quien intente entrar se encuentra en la lista:
#!/usr/bin/env python # -*- coding: utf-8 -*- # # operadores.py # # Copyright 2018 https://pythones.net # lista_invitados = ['Marcos','Angelica', 'Matias', 'Jose', 'Gaston', 'Nahuel', 'Ricardo', 'Roberto', 'Mariano', 'Mauricio', 'Leonel', 'Leonardo', 'Aldo', 'Raquel', 'Hernan', 'Sofia', 'Juan', 'Antonio', 'Marcelo', 'Juan cruz', 'Pedro', 'Pepe', 'Luisina', 'Celeste', 'Zulma', 'Irma', 'Diana', 'Daiana', 'Wally', 'Ruben', 'Rosendo', 'Joaquin'] x = 'Antonio' if x in lista_invitados: print ("Si está en la lista") else: print ("No se encuentra") #Resultado: "Si está en la lista"
Ufff.. Vaya lío de símbolos y ejemplos tenemos aquí! Puedes utilizar estas tablas y ejemplos de guia cuando lo necesites!!
El conocimiento de los operadores es elemental en la programacion debido a que no solo nos permiten realizar operaciones matemáticas sino también de comparación, comprobación, asignación, entre otras.
Ejemplo de usos de operadores en python
Atención! Este código contiene bucles y Try/Except que aun no vimos en entradas anteriores.. Y aquí en este ejemplo los estoy utilizando!.
La fiesta de Jorge (Programa de ejemplo)
Mi amigo Jorge desea realizar una fiesta vip; pero el año anterior una persona se coló utilizando el mismo nombre de otra. Y por eso Jorgue decidió este año que el portero pidiera número de documento. Pero es muy difícil para este hombre estar comprobando uno por uno los números, entonces entramos nosotros a hacer la magia del programador!!
Mensaje del pedido de Jorge!
El programa deberá permitirle al portero ingresar el número de documento de quien intente entrar y comprobar si existe en su lista, y una vez que se le dio un PERMITIDO ENTRAR debe mostrar cuántas personas restan entrar. Si la persona no está en la lista debe informar a seguridad!
Venga ese programa!! Prueba y si quieres puedes mejorarlo!!
Esto ha sido todo, no olvides que:
Intenté presentar ejemplos simples, pero lo más acercados a un programa real.
Espero te haya sido útil y hayas comprendido el uso de operadores! Gracias por visitar mi sitio!! Un gustazo!!
Entrada anterior! | Siguiente entrada! |
De estar aprendiendo a programar.. tu lo has llevado a un nivel medio.. no se entendio lo de ppr = 0.. como es que razonaste esa variable.?
Hola Alberto, gracias!. Con lo de la variable PPr te refieres a su función o al nombre de la misma?. Fíjate en el bucle que itera sobre el diccionario:
for (k) in iter(JorgeLista.items()):
PPr = PPr + 1
Lo que se realiza es sumar 1 a la variable por cada vuelta del bucle de iteración..
También puede hacerse PPr +=1 lo que es equivalente a PPr = PPr + 1, pero te evita volver a escribir la variable. Espero haber resuelto tu duda!
Y esta variable corresponde a la cantidad de elementos en el diccionario.. Lo que haríamos es contarlos mediante una iteración..
Gracias amigo por responder.. sí, lo de las variables lo entendí como me lo explicas.. lo que todavía no logro entender es lo de la parte del código cuando llamas al bucle for: haber si me explico..
for (k, v) in iter(JorgeLista.items()): # invocas (for) para que almacene en las variables (k,v) la iteracion de el diccionario(JorgeLista.)
ahora ¿por que luego de las variables (k,v) pones «in iter», (in) lo vimos que es (en) pero «iter.. y después de JorgeLista. escribes «.items())» eso tampoco lo hemos visto.. perdona por favor que sea tan molesto pero es que he leído libros y visto videos y este blog es el primero que explica de tal forma que he logrado entender muchas cosas.. perdon si se me hizo largo, es que soy muuyyy novato. pero me apasiona Python.
Hola alberto perdon la demora en responder!.
Iter es una función que permite iterar los objetos que le demos como argumento. En este caso los items de un diccionario utilizando «.items()» como método de iteración. Recordemos que tambien podemos trabajar con claves o valores unicamente usando métodos de diccionarios. Aquí te dejo un articulo en ingles pero con ejemplos secillos que puedes explorar!
Un saludo!
Por cierto exelente contenido y muy buen blog.. es el mejor y el mas completo que he encontrado.. he aprendido un monton..
Hola, soy nuevo en Python y la verdad es que me está ayudando mucho este blog. Lo que mas me está costando el la parte de «indentacion» y como sugerencia si pudieras hacer un apartado estaria genial, o si tienes algun articulo para aprender de eso me servirira tambien. Gracias
Hola Cristian !. ¿Qué IDE utilizas o programas en bloc de notas?. Podrías permitirle al IDE marcarla con puntos para que te quede bien reglada y no te pierdas. No recuerdo como se llama esa opción… Veré si puedo escribir algo o completar algún articulo viejo, si es así te avisare aquí.. Saludos
Hola, uso Geany, ya que es la que recomendabas en el blog.
Gracias
Hola nuevamente @disqus_msE1Kzqkpw:disqus he tratado de añadirlo dentro un post existente. Fíjate si te resulta de utilidad para comprender mejor el identado que es clave en Python.
Aunque en un principio pensaba recomendarte algún ide o plugin que remarcara los identados creo que en realidad no es necesario puesto que normalmente quien comprende su utilidad en Python y su correcto uso no necesita un remarcado.
Los errores de identación solo son comunes al inicio, se corrige con la practica y el entendimiento de los conceptos que permiten diferenciar una instrucción simple de una compuesta, un bloque de código de otro y demás..
Todo ello lo he añadido aquí, espero no sea de mayor dificultad!
https://pythones.net/sintax…
Te dejo un saludo y si quieres me comentas si lo has comprendido mejor!. Saluu
Hola Bro, tengo una duda… en la programación de la fiesta de Jorge, en efecto descuenta el numero de invitados que faltan por presentar sus DNI, pero si ingresamos dos (2) veces el mismo DNI, a demás de permitir la entrada descuenta un lugar de la lista ¿Cómo puedo evitar que algún colado intente entrar con el DNI de alguien mas? es decir 1 que el mismo DNI no pueda ser utilizado mas de una vez. Se me ocurre agregar un «.remove», pero no sé en qué línea colocarlo, ni como sería la sintaxis…
En el ejercicio anterior los comandos .append y .pop no me responden, me dan error en sintaxis… =(
Hola Eduardo he colocado:
El programa se puede mejorar aún más lanzando un mensaje si la misma persona
intenta entrar 2 veces, almacenando el dni cuando es correcto.
Se me ocurrió en ese momento porque ya ni recuerdo bien pero creo que había pensado ir almacenando el dni en una lista aparte cada vez que el DNI es correcto. Por ende cada vez que se compruebe un dni también se compruebe si ya existe en esta otra lista aparte. Si existe en ambas, pues tienes un colado jaja.. O bien podrías ir borrando de la lista como tu dices debajo de la línea 36.
Por otro lado respecto a los errores de sintaxis creo que deberías revisar que versión de python estás usando y corroborar en el intérprete de python abriendolo desde la terminal o consola si realmente tienes un error de sintaxis o es algún otro tipo de error.. Cualquier cosa enviame un mail desde el apartado de contacto!. Saludos
Hola Profesor Mariano, muchas gracias por su Blog, estoy empezando en esto y obvio es un dolor de cachimba… quise pulirme con los pocos conocimientos que he ido adquiriendo con su blog, sé que usé funciones que no hemos visto y cambié algún contenido, pero lo que hice fue investigar mucho y esforzarme un poco más… tristemente me ha llevado 9Hrs hacer lo siguiente:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# 12 Operadores.py
#
PPr = 0
Res = 0
Ingresaron = {
}
Invitados = {
‘Daniel’ : 101,
‘Luciana’ : 102,
‘Ricardo’ : 103,
‘Leonel’ : 104,
‘Pepe’ : 105,
‘Rogelio’ : 106,
‘Coco’ : 107,
‘Melisa’ : 108,
‘Lisa’ : 109,
‘Homero’ : 110,
}
for k in iter(Invitados.items()): #Se itera el diccionario Invitados para saber cuantas keys/personas
PPr += 1 #Asigna un valor a la Variable PPr por cada item en «Invitados»
import os
def clear():
if os.name == «nt»:
os.system(«cls»)
else:
os.system(«clear»)
def Nueva():
str(input(«Digite ENTER para un nuevo INGRESO»))
clear()
while True: #Se inicia el bucle while infinito
try :
Cedula = int(input(«NUMERO DE CEDULA=»)) #Se le pide al usuario ingresar un numero de documento y se almacena en «Cedula»
for (Nom, ced) in iter(Ingresaron.items()):
if Cedula == ced :
print(«»)
print ((Nom), «YA HABIA INGRESADO»)
print(«»)
Nueva()
for (k, v) in iter(Invitados.items()): #Se itera el diccionario y se extrae key y value
if Cedula == v : #Mediante CONDICIONAL se comprueba si value es igual cedula
Ingresaron [Invitados.get(v,k)] = v #Agrega el nombre y cedula a la lista de los que ya ingresaron
del (Invitados[k])
print («»)
print ((«El invitado»), (v), («es»), (k),(«, puede pasar»))
PPr -= 1 #Si lo es se procede a mostrar quien es y se resta 1 a la variable PPr que
#determina la cantidad faltante de personas
print ((«Faltan»), (PPr), («invitados por ingresar»))
print («»)
Nueva()
if PPr <= 0 : #Revisa que entraron todos los invitados
print(«»)
print(«YA ENTRARON TODOS LOS INVITADOS»)
print («»)
if Cedula != v and Cedula != ced:#Si la cédula digitada no corresponde a Invitado, lo rechaza
print(«NO ESTA INVITADO»)
print («»)
else:
print(«»)
except:
print («DEBE DIGITAR UNA CEDULA VALIDA»)
buenas, el último ejemplo donde úsas try y except por ejemplo, me da error de identación. me temo que es por la versión de python aunque he intentado modificar sintáxis para la versión que tengo y nada, mísmo error. mi comentario es mas que nada por si le pasa igual a otro. me quedaré sin poder probarlo en el intérprete hasta que aprenda más sobre el lenguaje en python. saludos.
Hola, te aviso que en la tabla de lógicos en la parte de ejemplos para «or» colocaste «and», es un pequeño error que puede confundir a algún despistado. Saludos.
esta es mi forma de resolverlo aunque no es la mejor obviamente ya que borro la (K) del diccionario y paso el value a una lista pero evito que si pones otra vez el dni igual me deje entrar a «Daniel» de nuevo y me descuente otra persona
while True:
try:
dni = int(input(«Ingrese el numero de documento!»))
for (k, v) in iter(JorgeLista.items()):
if v == dni and PPr != 0:
PPr = PPr – 1
# hace la comprobacion en la lista y comprueba si el dni ya ha sido introducido y comprueba compara dni si es dieferente v
if dni in (dniListacomprobacion) and v != dni:
print («Esa persona ya ha entrado»)
# si no esta en la lista le da la bienvenida
print ((«Es»), (k), («dejale entrar!»))
print ((«Restan»), (PPr), («invitados.»))
# Mete el dni en el listado de comprobacion
dniListacomprobacion.append(dni)
# Me imprimo la lista para comprobar que dnis han entrado
print(dniListacomprobacion)
# Borramos el key del diccionario para no poder acceder a el pero antes lo hemos pasado a una lista.
del JorgeLista[k]
break
Hola Mariano! Muy buenas tus clases y ejercicios, te felicito. Yo tuve una base en la universidad, pero de Java. Ahora viendo como funciona Python me volvió a bajar el interés por a programación, apuntando a trabajar con bases de datos enormes en algún momento.
Por ahora estoy en este paso y mi última meta era resolver este problema en la menor cantidad de líneas como me fuera posible y lo logré con lo siguiente:
PPr = 0
Res = 0
JorgeLista = {
‘Daniel’ : 34445445,
‘Luciana’ : 34449442,
‘Ricardo’ : 34354345,
‘Leonel’ : 32544532,
‘Pepe’ : 32443897,
‘Rogelio’ : 29992192,
‘Coco’ : 34234598,
‘Melisa’ : 36228190,
‘Lisa’ : 29001921,
‘Homero’ : 33238591,
‘Eduardo’ : 34698124,
‘Santos’ : 34213514,
‘Cossety’ : 34556442,
‘Carla’ : 34214554,
‘Lapicito’ : 34445245
}
Ingresados = [
]
#Funcion que cuenta las personas en el diccionario:
for (k) in iter(JorgeLista.items()):
PPr = PPr + 1
while True:
try:
dni = int(input(«Ingrese el numero de documento!»))
if dni in Ingresados:
print(«La persona ya ingresó!»)
for (k, v) in iter(JorgeLista.items()):
if v == dni and PPr != 0 and dni not in Ingresados:
PPr = PPr – 1
print ((«Es»), (k), («dejale entrar!»))
Ingresados.append(dni)
print ((«Restan»), (PPr), («invitados.»))
break
if PPr <= 0:
print ("Ya entraron todos")
if v != dni and dni not in Ingresados:
print ("Llame a seguridad, esa persona no se encuentra en la lista!")
except:
print ("No está ingresando un numero")
Ojalá que alguien me ayude con retroalimentación de cualquier tipo!
Saludos,
Excelente Curso.
Revisar el resultado del operador AND, ejemplo False and False. Dice True en vez de False
Saludos José Miguel
Esta leccion la he sentido algo pesada, sobre todo en el manejo de for y while
Aqui mi codigo mejorado. Agrega espacios entre cada ingreso de DNI, y verifica si ya ha entrado el invitado.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# programando-la-fiestita-de-jorge.py
#
# Copyright 2018 https://pythones.net
#Aqui empieza el programa++++++++++++++++++++++++++++>
PPr = 0
Res = 0
JorgeLista = {
‘Daniel’ : [1,1],
‘Luciana’ : [2,1],
‘Ricardo’ : [3,1],
‘Leonel’ : [4,1],
‘Pepe’ : [5,1],
‘Rogelio’ : [6,1],
‘Coco’ : [7,1],
‘Melisa’ : [8,1],
‘Lisa’ : [9,1],
‘Homero’ : [10,1],
‘Eduardo’ : [11,1],
‘Santos’ : [12,1],
‘Cossety’ : [13,1],
‘Carla’ : [14,1],
‘Lapicito’ : [15,1],
}
#Funcion que cuenta las personas en el diccionario:
for (k) in iter(JorgeLista.items()):
PPr = PPr + 1
while True:
try:
dni = int(input(«Ingrese el numero de documento!»))
for (k, v) in iter(JorgeLista.items()):
if v[0] == dni and PPr != 0:
if v[1]==1:
PPr -= 1
print ((«Es»), (k), («dejale entrar!»))
print ((«Restan»), (PPr), («invitados.»))
print («»»
«»»)
v[1]=0
break
else:
print (k,» ya entro, no trates de engañarnos, POLICIA!!!!»)
print («»»
«»»)
break
if PPr <= 0:
print ("Ya entraron todos")
print ("NO DEJEN ENTRAR A NADIE MAS")
print ("""
""")
break
if v[0] != dni:
print ("Llame a seguridad, esa persona no se encuentra!")
print ("""
""")
except:
print ("No está ingresando un numero")
print ("""
""")
#Se itera el diccionario JorgeLista para saber cuantas keys/personas
#hay en la lista sumando uno a la variable PPr por cada key/persona
#Se inicia el bucle while infinito
#Se le pide al usuario ingresar un numero de documento y se almacena en dni
#Se itera el diccionario y se extrae key y value
#Mediante CONDICIONAL se comprueba si value es igual a dni
#Si lo es se procede a mostrar quien es y se resta 1 a la variable PPr que
#determina la cantidad faltante de personas
#Por supuesto si ingresa texto el programa dará error, esto se corrigió
#usando try/except
#El programa se puede mejorar aún más lanzando un mensaje si la misma persona
#intenta entrar 2 veces, almacenando el dni cuando es correcto
#en una lista o en otro diccionario y comprobando cuando vuelva a ingresar
#un dni, si te animas, mejorale el programa a Jorge!
Buenos Señores… Despues de un mes… Al fin logre hacer esta tarea. Al final despues de tanto darle y darle me percate que cualquier cambio que se haga en una linea… esta afecta las indentiones de alguna otra. Y me percate de que tenia que llevar las lineas a cero y luego identarlas una a una para lograr que funcionara. No se si eso solo de GEANY pero me sucedio y por eso demoreeee en hacer esta tarea pues yo pensaba que estaba escribiendo mal el codigo pero no.,.. Internamente algo se fregaba y no daba muestra de tal error. Pero bueno… aqui les dejo la tarea usando el Tkinter para el frame y sus pantallas. Si ya la semana pasada vi que hay un programa que te crea todo el front end y solo hay que agregarle el codigo… pero ya eso sera para otra tarea. a los que kieran ver como me quedo… desde ya les digo que los breaks aparecen identados antes del print deben quedar asi. de otra forma no logre que funcionara. y nadie que me explicara.
——————————————————————–CODIGO————————————————————————————-
from tkinter import*
from tkinter import ttk
import time;
root = Tk()
root.geometry(«650×550+0+0»)
root.title(«Control de Invitados»)
text_Input = StringVar()
operator=»»
#========================================FONDOS Y MARCOS=========================================
Fondos = Frame(root, width = 500, height= 100, bg= «Gray», relief = FLAT)
Fondos.pack(side = TOP)
f1 = Frame(root, width = 300, height = 200, bg= «Light Gray», relief = FLAT)
f1.pack(side = RIGHT)
f2 = Frame(root, width = 200, height = 200, bg= «Light Gray», relief = FLAT)
f2.pack(side = LEFT)
#====================================LABEL INFO y TIME============================================
localtime=time.asctime(time.localtime(time.time()))
lblInfo = Label(Fondos, font = (‘arial’, 24, ‘bold’), text = «Control de Invitados», fg = «RED», bd = 0, anchor = ‘e’)
lblInfo.grid(row=0,column=0)
lblInfo = Label(Fondos, font = (‘arial’, 14, ‘bold’), text = localtime, fg = «DARK BLUE», bd = 0, anchor = ‘e’)
lblInfo.grid(row=1,column=0)
#==================================PANTALLAS=====================================================
txtDisplay = Entry(f2, font=(‘arial’, 22, ‘bold’), textvariable=text_Input, bd = 2, insertwidth=2, bg = «orange», justify = ‘right’)
txtDisplay.grid(columnspan=3)
lblInfo = Label(f1, font = (‘arial’, 18, ‘bold’), text = «RESULTADO:», fg = «Green», bd = 0, anchor = ‘e’)
lblInfo.grid(row=1,column=1)
txtDisplay0 = Entry(f1, font=(‘arial’, 22, ‘bold’), bd = 2, insertwidth=2, bg = «Light Blue», justify = ‘center’)
txtDisplay0.grid(columnspan=3)
txtDisplay0.insert(0,str(»))
lblInfo = Label(f1, font = (‘arial’, 18, ‘bold’), text = «ACCION A TOMAR:», fg = «BLACK», bd = 0, anchor = ‘e’)
lblInfo.grid(row=4,column=1)
txtDisplay1 = Entry(f1, font=(‘arial’, 22, ‘bold’), bd = 2, insertwidth=2, bg = «Light Blue», justify = ‘center’)
txtDisplay1.grid(columnspan=3)
txtDisplay1.insert(0,str(»))
lblInfo = Label(f1, font = (‘arial’, 18, ‘bold’), text = «CONTADOR:», fg = «BLUE», bd = 0, anchor = ‘e’)
lblInfo.grid(row=6,column=1)
txtDisplay2 = Entry(f1, font=(‘arial’, 22, ‘bold’), bd = 2, insertwidth=2, bg = «Light Blue», justify = ‘center’)
txtDisplay2.grid(columnspan=3)
txtDisplay2.insert(0,str(»))
txtDisplay3 = Entry(f1, font=(‘arial’, 22, ‘bold’), bd = 2, insertwidth=2, bg = «white», justify = ‘center’)
txtDisplay3.grid(columnspan=3)
txtDisplay3.insert(0,str(»))
#==================================BOTONES=====================================================
def btnClick(numeros):
global operator
operator=operator + str(numeros)
text_Input.set(operator)
def btnBorrar():
global operator
operator=»»
text_Input.set(«»)
txtDisplay0.delete(0,END)
txtDisplay1.delete(0,END)
txtDisplay2.delete(0,END)
txtDisplay3.delete(0,END)
JorgeLista = {
‘Daniel’ : 34445445,
‘Luciana’ : 34449442,
‘Ricardo’ : 34354345,
‘Leonel’ : 32544532,
‘Pepe’ : 32443897,
‘Rogelio’ : 29992192,
‘Coco’ : 34234598,
‘Melisa’ : 36228190,
‘Lisa’ : 29001921,
‘Homero’ : 33238591,
‘Eduardo’ : 34698124,
‘Santos’ : 34213514,
‘Cossety’ : 34556442,
‘Carla’ : 34214554,
‘Lapicito’ : 34445245
}
def btnBuscar():
PPr = 0
Res = 0
for (k) in iter(JorgeLista.items()):
PPr = PPr + 1
while True:
try:
dni = int(txtDisplay.get())
for (k, v) in JorgeLista.items():
if v == dni and PPr !=0:
JorgeLista.pop (k,v)
PPr = PPr – 1
print(txtDisplay0.insert(0,(«Es»,(k))))
print(txtDisplay1.insert(0,(«PERMITIR ENTRAR!»)))
print(txtDisplay2.insert(0,(«Restan», (PPr), «Invitados.»)))
break
if v != dni:
print(txtDisplay1.insert(0,(«Llamar a seguridad!»)))
print(txtDisplay0.insert(0,(«DNI INVALIDO»)))
break
if PPr <= 0:
print(txtDisplay3.insert(0,("Ya entraron todos")))
break
except:
print(txtDisplay0.insert(0,("Ingresar Solo Numeros")))
break
btn7 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "7",
bg = "Light Gray", command = lambda: btnClick(7)).grid(row=1, column=0)
btn8 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "8",
bg = "Light Gray", command = lambda: btnClick(8)).grid(row=1, column=1)
btn9 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "9",
bg = "Light Gray", command = lambda: btnClick(9)).grid(row=1, column=2)
btn4 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "4",
bg = "Light Gray", command = lambda: btnClick(4)).grid(row=2, column=0)
btn5 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "5",
bg = "Light Gray", command = lambda: btnClick(5)).grid(row=2, column=1)
btn6 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "6",
bg = "Light Gray", command = lambda: btnClick(6)).grid(row=2, column=2)
btn1 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "1",
bg = "Light Gray", command = lambda: btnClick(1)).grid(row=3, column=0)
btn2 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "2",
bg = "Light Gray", command = lambda: btnClick(2)).grid(row=3, column=1)
btn3 = Button(f2, padx = 28, pady=28, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "3",
bg = "Light Gray", command = lambda: btnClick(3)).grid(row=3, column=2)
btn0 = Button(f2, padx = 28, pady=6, bd = 2, fg = "black", font = ('arial', 20, 'bold'), text = "0",
bg = "Light Gray", command = lambda: btnClick(0)).grid(row=4, column=1)
btnBorrar = Button(f2, padx = 21, pady=20, bd = 2, fg = "black", font = ('arial', 10, 'bold'), text = "Borrar",
command=btnBorrar, bg = "RED").grid(row=4, column=0)
btnBuscar = Button(f2, padx = 21, pady=20, bd = 2, fg = "black", font = ('arial', 10, 'bold'), text = "Buscar",
command=btnBuscar, bg = "Light Green").grid(row=4, column=2)
root.mainloop()
#se que hay una MANERA mas CORTA para hacer los botones… pero ya para cuando domine esta forma…
saludos
if v != dni:
if PPr <= 0:
except:
los 3 llevan el break al mismo nivel de idention de if y except.
JorgeLista.pop (k,v)
PPr = PPr – 1
llevan la misma idention
si no les sale… llevenlo a '0' y vayan identandolo linea x linea.
si desean ver como me quedo me facilitan un metodo para compartir el archivo py.
saludos
Hola @ABDUL me alegra mucho que nos compartas tu programa utilizando Tkinter!!. Y me alegra mucho saber que tienes tal persistencia hasta lograr algo que quieres y no abandones fácilmente!. Normalmente la gente así llega muy lejos!. Te envío mis saludos y a seguir dándole!
Pues me estoy volviendo loco.
Hasta aquí lo iba entendiendo pero me atasqué.
Voy a repasar otra vez las lecciones, que por cierto, enhorabuena!!
hola abdul no me deja correr tu programa pero tiene GUI verdad
hola necesito ayuda con este código es un script hecho para decir cuantos días tienes el problema es que no consigo implementar los años bisiestos
mi código por aquí ->
dia = input(«Dia de nacimiento –> «)
mes = input(«Mes de nacimiento (en número) –> «)
año = input(«Año de nacimiento –> «)
bisiesto = int(año) % 4
if mes == «1» or «3» or «5» or «7» or «8» or «10» or «12»:
suma = int(dia) + 31
if mes == «4» or «6» or «9» or «11»:
suma = int(dia) + 30
if mes == ‘2’:
suma = int(dia) + 28
si tienes un linux haz en la terminal un sudo apt-get upgrade o un sudo apt-get update
Hola a todos. Quizas la solución más fácil para saber si una persona ha entrado o no, sea agregando un campo booleano al diccionario que tenga por defecto «FALSE» y la cambiemos a «TRUE» cada vez que ingresa una persona. Y luego comparamos ese campo. Si es «TRUE» es porque ya ha ingresado. Saludos