Operadores en Python: muchos ejemplos reales y propios!!

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

Desorden del operador

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:

 

Operador
Función
Ejemplos
Resultado
«+»
Sumar
2 + 24
«-«
Restar3 – 21
«*»
Multiplicar2 * 24
«/»
Dividir4 / 22
«%»
Módulo: Devolverá el resto de la división4 % 20
«**»
Exponente: Exponencial de un número3**29
«//»
División devuelve el entero de la misma8//42

 

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!

 

Operador
Función
Ejemplos
Resultado
«==»
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 True4 > 2
1 > 2
True
False
«<«
Si el valor de la izquierda es menor que el de la derecha devuelve True1 < 2
4 < 2
True
False
«>=»
Si el valor de la izquierda es mayor o igual que el de la derecha devuelve True4 >= 2
1 >= 2
4 >= 4
True
False
True
<=
Si el valor de la izquierda es menor o igual que el de la derecha devuelve True4 <= 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.

 

Operador
Función
Ejemplos
Resultado
«=»
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 += 1b = 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 -= 1b = 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 *= 2b = 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 /= 2b = 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 %= 2b = 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 **= 2b = 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.Lógica

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!

 

 

Operador
Función
Ejemplos
Resultado
«And»
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
«Or»
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
«Not»
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..

 

Operador
Función
Ejemplos
Resultado
«In»
El operador In (en) devuelve True si un elemento se encuentra dentro de otro.a = [3, 4] 3 in aTrue
Porque «3» se encuentra en «a»
«Not in»
El operador Not In (en) devuelve True si un elemento no se encuentra dentro de otro.a = [3, 4] 5 in aTrue
Porque «5» no se encuentra en «a»
«Is»
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.
«Not Is»
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

 

ojoAtenció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!!

Abrir Spoiler
#!/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' : 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
}
#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 == dni and PPr != 0:
                PPr = PPr - 1
                print (("Es"), (k), ("dejale entrar!"))
                print (("Restan"), (PPr), ("invitados."))
                break
        if PPr <= 0:
            print ("Ya entraron todos")
        if v != dni:
            print ("Llame a seguridad, esa persona no se encuentra!")
    except:
        print ("No está ingresando un numero")

#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!

Adiooos!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!!

 

 


 

Sigue leyendo!
Entrada anterior! Siguiente entrada!

Compartir es agradecer! :)

27 comentarios en “Operadores en Python: muchos ejemplos reales y propios!!”

  1. 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.?

    1. 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!

        1. 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.

          1. 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!

  2. 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

    1. 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

        1. 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

  3. 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… =(

    1. 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

  4. 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»)

  5. 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.

  6. 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.

  7. 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

  8. 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,

  9. 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!

  10. 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

  11. 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

  12. 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!

  13. Pues me estoy volviendo loco.
    Hasta aquí lo iba entendiendo pero me atasqué.
    Voy a repasar otra vez las lecciones, que por cierto, enhorabuena!!

  14. 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

  15. 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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.