Autor Tema: Python:Validar ingreso de datos.  (Leído 5668 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Python:Validar ingreso de datos.
« en: 16 de Octubre de 2017, 13:18:35 »
Hola amigos, ¿como están?.
Tengo una duda con el código que dejo a continuación, con estos videos estoy aprendiendo a programar en python:https://www.youtube.com/watch?v=2MaAs7XU2T0 y he llegado a las excepciones, la consulta es como resulta más conveniente validar los datos ingresado por teclado, utilizando try/except o con if, para validar un dato float no se debe permitir el ingreso de otra cosa que no sean números del 0 al 9 y que las variables op1 y op2 no pueden valer cero, creo que es todo -
Otra cosita, me podrían dar alguna idea para mejorar el código. -

Código: Python
  1. import os
  2.  
  3. def sum(num1, num2):
  4.         return num1+num2
  5.  
  6. def res(num1, num2):
  7.         return num1-num2       
  8.  
  9. def div(num1, num2):
  10.         return num1/num2
  11.        
  12. def mul(num1, num2):
  13.         return num1*num2
  14.        
  15. while True:    
  16.         op1=(float(input("\n Introduce el primer número...: ")))
  17.         op2=(float(input("\n Introduce el segundo numero..: ")))
  18.  
  19.         print("\n ====================================")
  20.         print("\n 1 - Suma\n 2 - Resta\n 3 - División\n 4 - Multiplicación\n ")
  21.         operacion=(int(input("\n Introduce opción..: ")))
  22.  
  23.         if operacion == 1:
  24.                 print("\n " + str(op1) + " + " + str(op2) + " = ",  sum(op1,op2))
  25.         if operacion == 2:
  26.                 print("\n " + str(op1) + " - " + str(op2) + " = ",  res(op1,op2))
  27.         if operacion == 3:
  28.                 print("\n " + str(op1) + " / " + str(op2) + " = ",  div(op1,op2))
  29.         if operacion == 4:
  30.                 print("\n " + str(op1) + " x " + str(op2) + " = ",  mul(op1,op2))
  31.  
  32.         print("\n ====================================")
  33.         print("\n 1 - Otra operación\n 2 - Finalizar\n ")
  34.         salSeg=(int(input("\n Introduce opción..: ")))
  35.  
  36.         if salSeg == 1:
  37.                 os.system('clear')
  38.         else:
  39.                 break


Desde ya muchas gracias.-
Un abrazo. Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Python:Validar ingreso de datos.
« Respuesta #1 en: 17 de Octubre de 2017, 12:19:52 »
Hola Daniel,

Las excepciones se suelen utilizar cuando una instrucción puede dar error inesperado, no para validar datos.

Por ejemplo, si quieres evitar la división por cero, puedes hacerlo de dos formas.

Una es comprobar el divisor y si vale cero, no dividir e imprimir error:

Código: Python
  1. a = 10
  2. for d in [2, 1, 0]:
  3.    print('\ndivide {} por {}'.format(a, d))
  4.    if d == 0:
  5.       print('   error: División por cero')
  6.    else:      
  7.       b = a / d
  8.       print('  igual a {}'.format(b))

Otra es con una excepción:

Código: Python
  1. a = 10
  2.  
  3. for d in [2, 1, 0]:
  4.    print('\ndivide {} por {}'.format(a, d))
  5.    try:
  6.       b = a / d
  7.       print('  igual a {}'.format(b))
  8.    except ZeroDivisionError:
  9.       print('   error: División por cero')

Saludos.
« Última modificación: 17 de Octubre de 2017, 12:29:15 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Python:Validar ingreso de datos.
« Respuesta #2 en: 17 de Octubre de 2017, 12:25:10 »
Deberías comenzar a utilizar la función main()
Para salir del programa simplemente usas return en main()

Código: Python
  1. def main():
  2.    while True:
  3.       print('Hola mundo')
  4.       opt = int(input(' 1: Salir '))
  5.       if opt == 1:
  6.          return
  7.  
  8. main()
« Última modificación: 17 de Octubre de 2017, 12:30:09 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Python:Validar ingreso de datos.
« Respuesta #3 en: 17 de Octubre de 2017, 12:44:09 »
Creo que en tu mensaje te refieres a esto:

Código: Python
  1. def to_int(x):
  2.    try:
  3.       return int(x)
  4.    except:
  5.       None

Saludos.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Python:Validar ingreso de datos.
« Respuesta #4 en: 17 de Octubre de 2017, 14:37:36 »
Hola Picuino, no te das una idea lo que agradezco cada vez que veo una respuesta de Udes. Por Dios cuanto se aprende, gracias amigo, gracias a todos. -
Con respecto a tus códigos voy a repasarlo unas cuantas veces y si me queda alguna duda te consulto, lo que me intriga por el momento es la función main, no la veo mucho en los ejemplos de videos y manuales, ¿me podrías dar algo de teoría al respecto?.-
Por último dejo mi código que parece no tener fallas, parece.-

Código: Python
  1. numeros = puntos = otros = 0
  2. convertido = 0.0
  3.  
  4. operando = input("\n Introduzca operando (No puede ser cero)...:")
  5.  
  6. for i in operando:
  7.         if i.isdigit() and i != '0':
  8.                 numeros +=1    
  9.         elif i == '.':
  10.                 puntos +=1
  11.         elif i != '0':
  12.                 otros +=1
  13.  
  14. if numeros == 0 or puntos > 1 or otros > 0:
  15.         print("\n No se puede convertir " , operando + " a float")
  16. else:
  17.         convertido = float(operando)
  18.         print("\n Operando convertido...: %.3f" % convertido)

Un abrazo.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Python:Validar ingreso de datos.
« Respuesta #5 en: 17 de Octubre de 2017, 16:30:40 »
main es una función como cualquier otra.

Conviene utilizarla como función principal, la primera que se llama.
Es simplemente una convención para agrupar el código mejor.

Saludos.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Python:Validar ingreso de datos.
« Respuesta #6 en: 17 de Octubre de 2017, 16:35:08 »
Te aconsejo que comiences a hacer programas reales. Es más útil y divertido.

Por ejemplo leer un fichero de texto y contar el número de palabras que contiene.
O imprimir todos los ficheros con extensión *.py que hay en el directorio actual.
O renombrar todos los ficheros *.jpg para que su nombre siempre comience por la fecha de creación.
O leer una página web e imprimir un resumen.
O cualquier otra cosa que se te ocurra.

Saludos.


Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Python:Validar ingreso de datos.
« Respuesta #7 en: 17 de Octubre de 2017, 17:27:57 »
Te cuento el porque de mi deseo en aprender a programar, desde que conocí las bases de datos de Foxpro me apasionaron (esas cosas que te ocurren en la vida y no le encontrás explicación o si) y me puse a estudiar C para hacer mis propias tablas/bases de datos y después de un largo periodo es como que me resultó un tanto frustrante y lo deje y me puse a estudiar python que realmente tiene una sintaxis amigable y tengo muchas ganas de aprender a programar con este lenguaje, luego veré si retomo C (eso de trabajar cerca de la memoria me atrae muchísimo), te cuento todo esto porque te darás una idea como quiero aprender a manejar los archivos con python pero todavía no llegue a ese video, seguramente estará más adelante. -

Un saludo.
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Python:Validar ingreso de datos.
« Respuesta #8 en: 18 de Octubre de 2017, 11:05:20 »
Es bastante sencillo para empezar.
Si buscas la instrucción open, encontrarás muchos ejemplos.

Un saludo.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Python:Validar ingreso de datos.
« Respuesta #9 en: 18 de Octubre de 2017, 11:12:34 »
Código: Python
  1. file = open('words.txt', 'r')
  2. texto = file.read()
  3. file.close()
  4.  
  5. words = {}
  6. for word in texto.split():
  7.     if word not in words:
  8.         words[word] = 1
  9.     else:
  10.         words[word] += 1
  11.  
  12. for word, count in words.items():
  13.     print(word, ' ', count)
« Última modificación: 18 de Octubre de 2017, 11:15:18 por Picuino »


 

anything