Python - Problema con python

   
Vista:

Problema con python

Publicado por Miguel miguel.bofi@riseup.net (1 intervención) el 11/09/2013 04:09:42
Hola amigos de la web del programador:
Les cuento, estoy iniciandome en la programación y he decidido comenzar con python, el punto es que estoy en la construcción de mi primer programa que consiste en una herramienta para obtener los valores de la funcion cuadrática...

El problema es cuando quiero que python reconozca un valor errado al momento de tener que ingresar los valores, y en vez de arrojar un error de valor tome el bucle y vuelva a intentarlo. Lo que no se exactamente es como decirle que si ingresa un valor !n de un numero entero tome el bucle...

Les dejo el código a ver si pueden ayudarme, y también si me pueden hacer alguna otra crítica u aporte para continuar mejorando (y no sean duros es la primera vez que programo xD):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import math
#introduccion
print chr(27)+"[1;96m"+""
print """
                ========================================
                |   |\/| _ _|_ _  _ _  _ _|_. _ _  _   |
                |   |  |(_| | (/_| | |(_| | |(_(_|_\   |
                ========== funcion cuadratica ==========
"""
print chr(27)+"[0;96m"+" "
print 'Esta herramienta permite derteminar las intersecciones con el eje X e Y'
print '    ademas de la conacvidad en la variable independiente (ax2+bx+c)'
print '    identifique e ingrese los coeficientes de la funcion (a, b y c)'
print '                  Debe ingresar solo numeros enteros'
print chr(27)+"[1;36m"+" "
#bucle
while 1:
  #Consulta de valores necesarios
  while 2:
    a = float(raw_input('Ingrese el valor de a: '))
    b = float(raw_input('Ingrese el valor de b: '))
    c = float(raw_input('Ingrese el valor de c: '))
    if a != #AQUIIII ESTA EL PROBLEMAAAAA !!!!
      print 'Ingrese solo numeros enteros'
 
    print ' '
 
  #Aqui se determina la concavidad
  valora = a
  if valora > 0:
    print '> La concavidad es positiva y la parabola se abre hacia arriba'
    print ' '
  if valora < 0:
    print '> La concavidad es negativa y la parabola se abre hacia abajo'
    print ' '
 
  #Aqui se calcula la discriminante y la cuadratica, y por lo tanto las intersecciones con X
  discriminante = b ** 2 - 4 * a * c
  print '> El valor de la discriminante es', discriminante
  print ' '
  if discriminante < 0:
    print '> Las soluciones son complejas conjugadas y no hay interseccion con el eje X'
    print ' '
  elif discriminante == 0:
    x = -b / (2 * a)
    print '> Las soluciones son reales e iguales y haun una sola interseccion que es x =', x
    print ' '
  else:
    x1 = (-b - (discriminante ** 0.5)) / (2 * a)
    x2 = (-b + (discriminante ** 0.5)) / (2 * a)
    print '> Las soluciones son reales y distintas por lo tanto hay dos intersecciones:'
    print '      x1 =', x1
    print '      x2 =', x2
    print ' '
 
  #Aqui se calcula la interseccion con el eje Y y el vertice
  print '> El punto de interseccion con el eje Y es:', c
  print ' '
  print '> El vertice es', ( - b / (2 * a) , - discriminante / (4 * a) )
  print ' '
 
  if a < 0:
    print '>', - discriminante / (4 * a), 'Es el minimo de la funcion'
    print ' '
  if a > 0:
    print '>', - discriminante / (4 * a), 'Es el maximo de la funcion'
    print ' '
 
  #Aqui se realiza la consulta de salida
  while 3:
    print ' '
    print '> Desea resolver otro ejercicio? (s/n)'
    deseo = raw_input()
    print ' '
 
    if deseo.lower()=='n':
      print chr(27)+"[0;96m"+"     > > > Hasta pronto! < < <"
      break
 
    if deseo.lower()!='n':
      print 'Letra incorrecta, vuelve a intentarlo'
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problema con python

Publicado por xve (1235 intervenciones) el 11/09/2013 08:03:45
Hola Miguel, hay varias maneras de hacerlo, aqui te pongo unos ejemplos:
1
2
3
4
5
6
7
8
9
10
while True:
    try:
        val = int(raw_input("indica un numero:"))
        if val%2==0:
            print "par"
        else
            break;
    except:
        # no es un numero
        break;
o
1
2
3
4
5
6
7
8
9
m1=0
while m1<=0:
    try:
        m1=float(raw_input("Ingrese nuevamente masa ceniza con crisol:"))
    except:
        print "Tiene que ser un valor numérico"
    else:
        if m1<=0:
            print "Ingrese número mayor que cero"

Coméntanos si te sirve, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar