Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: CATBro en 5 Enero 2011, 23:41 pm



Título: [Python]Tablas de Multiplicar
Publicado por: CATBro en 5 Enero 2011, 23:41 pm
Muy buenas tardes  ;D eh aqui mi problema
Código
  1. 1.x=0   #Operando
  2. 2.y=0   #Operando e inicializo la variable
  3. 3.res=0 #Resultado
  4. 4.c=0   #Para tener el control del ciclo
  5. 5.
  6. 6.while c!="no":          #Se repite el bucle hasta que tecleo "no"
  7. 7.   x=int(raw_input("Ingresa el numero de la tabla #:"))   #Ingreso la tabla....
  8. 8.   #que quiero, ejemplo: la tabla del 2 . 2X1 ,2X2 etc..
  9. 9.
  10. 10.  while y <11:     #Le digo que la tabla solo llegue hasta multiplicar al 10
  11. 11.      res=x * y     #Multiplicacion
  12. 12.      print "%d X %d = %d" % (x,y,res)  #Muestra
  13. 13.      y+=1           #Incremento
  14. 14.  c=raw_input("Quieres continuar si/no:")
  15. 15.
  16.  
  17.  


Se supone que ingreso el numero de la tabla que quiero, y este me muestra la tabla resuelta hasta el 10 pero en el caso que quiera otra tabla por eso puse el bucle, pero el problema es que ingreso la tabla , me muestra el resultado, pero se supone que cuando le digo que si quiero continuar me pide otra vez el numero de la tabla ...lo hace pero no me muestra el resultado del segunda tabla se brinca a preguntarme si quiero continuar.

Saludos

PD: Me estoy apenas enseñando a programar ,unas disculpas si esta muy facil o revoltoso mi programa  jeje..  Gracias


Título: Re: [Python]Tablas de Multiplicar
Publicado por: leogtz en 6 Enero 2011, 00:11 am
Porque "y" se queda con un valor que no cumple la condición del segundo bucle.

Saliendo del bucle interno while, inicializa de nuevo la variable "y".


Título: Re: [Python]Tablas de Multiplicar
Publicado por: CATBro en 6 Enero 2011, 06:33 am
Gracias si era eso ;D
Pero no entiendo porque inicializar otra vez la "y" antes del segundo while , si ya lo inicialise antes...



Saludos


Título: Re: [Python]Tablas de Multiplicar
Publicado por: kerith en 6 Enero 2011, 11:36 am
Porque sino estará empezando el bucle con y = 11 (o el valor que sea que tuviera al acabar el bucle), por lo tanto cumple la condición del segundo bucle ('y' no es menor que 11) y el segundo while no se inicia.


Título: Re: [Python]Tablas de Multiplicar
Publicado por: ChicoMaravilla en 17 Enero 2011, 05:44 am
mira por si no lo sacaste
yo lo hice así  ;-)

Código
  1. try:
  2.    x=0
  3.    c="si"
  4.    l=0
  5.    while c!="no":
  6.        x=input("Quiero la tabla del: ")
  7.        while l!=11:
  8.            print "%d x %d = %d" % (x,l,x*l)
  9.            l+=1
  10.        l=0
  11.        c=raw_input("Quieres continuar si/no:")
  12. except:
  13.    print "Solo se aceptan numeros"

mira tenes que entender como funcionan los bucles while,

(http://www.cinesonline.com/tutorial_php/imagenes/while.gif)

lo que hace es que si cierta condición se cumple se ejecuta una sentencia, cuando la sentencia termina vuelve al inicio del bucle while y vuelve a revisar si se cumple la condición y así sucesivamente hasta que la condición se cumpla.                       
 


Título: Re: [Python]Tablas de Multiplicar
Publicado por: fallout20xx en 17 Enero 2011, 09:01 am
Código
  1. 1.x=0   #Operando
  2. 2.y=0   #Operando e inicializo la variable
  3. 3.res=0 #Resultado
  4. 4.c=0   #Para tener el control del ciclo
  5. 5.
  6. 6.while c!="no":          #Se repite el bucle hasta que tecleo "no"
  7. 7.   x=int(raw_input("Ingresa el numero de la tabla #:"))   #Ingreso la tabla....
  8. 8.   #que quiero, ejemplo: la tabla del 2 . 2X1 ,2X2 etc..
  9. 9.
  10. 10.  while y <11:     #Le digo que la tabla solo llegue hasta multiplicar al 10
  11. 11.      res=x * y     #Multiplicacion
  12. 12.      print "%d X %d = %d" % (x,y,res)  #Muestra
  13. 13.      y+=1           #Incremento
  14. 14.  c=raw_input("Quieres continuar si/no:")
  15. 15.
  16.  

Código
  1. c = 'si'
  2. while c == 'si':
  3.     x= int(raw_input("ingresa....\n"))
  4.     for n in range(1, 11):
  5.         print "%s X %s = %s" % (x, n, x*n)
  6.     c = raw_input("continuar si / no\n")
  7.  
aqui lo tienes mas corto y lo que te falla en tu ejemplo es el sangrado del probrama, el c = ... tiene que estar dentro del while si no nunca se repetira.

Un saludo