Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: asdexiva en 7 Febrero 2015, 20:41 pm



Título: cambiar valor variable ciclo for duda
Publicado por: asdexiva en 7 Febrero 2015, 20:41 pm
Código
  1. valor = input ('Ingrese cantidad a repetir: ')
  2. valor1 = 2160
  3.  
  4. # se inicia el ciclo
  5. for i in range(0,valor):
  6.  
  7.    #se eleva al cuadrado
  8.    cuadrado=valor1** 2
  9.    # se guarda en otra variable llamada elevado
  10.    elevado=cuadrado
  11.    #se mide el tamaño
  12.    tamano=len(str(elevado))
  13.    if tamano==7:
  14.        elevado1= "0" + str(elevado)
  15.    if tamano==6:
  16.        elevado= "00" + str(elevado)
  17.    if tamano==5:
  18.        elevado1= "000" + str(elevado)
  19.    if tamano==4:
  20.        elevado1= "0000" + str(elevado)
  21.    if tamano==5:
  22.        elevado1= "000" + str(elevado)
  23.    if tamano==4:
  24.        elevado1= "0000" + str(elevado)
  25.    if tamano==3:
  26.        elevado1= "00000" + str(elevado)
  27.        #se acorta
  28.    xd = elevado1[2:-2]
  29.   #se convierte a numero
  30.    lol=int(xd)
  31.    #se eleva al cuadrado
  32.    xad=lol** 2
  33.    valor1=xad
  34.    print  xd
  35.  

espero y me puedan ayudar se supone que en cada vuelta tiene que agarrar el valor elevado al cuadrado y acortarlo e imprimirlo
pero lo unico que hace es repetir el mismo valor inicial :S


Título: Re: cambiar valor variable ciclo for duda
Publicado por: engel lex en 7 Febrero 2015, 21:15 pm
supondré que es python por la primer linea...

tu error está en "elevado1" si tu valor es muy grande no entra a los if

en la primera vuelta xad vale 44302336 por lo tanto en la sgunda vuelta cuadrado vale 1962696975056896 que es mucho más largo que 7...

varias recomendaciones...
1- usa else if (elif) ya que así el programa se salta los casos innecesarios
2- range por defecto es desde 0 así que puedes hacer range(valor)


realmente no se que desastre intentas hacer con los 0 o lograr... pero si arreglas elevado1 resuelves tu problema


Título: Re: cambiar valor variable ciclo for duda
Publicado por: asdexiva en 7 Febrero 2015, 21:31 pm
supondré que es python por la primer linea...

tu error está en "elevado1" si tu valor es muy grande no entra a los if

en la primera vuelta xad vale 44302336 por lo tanto en la sgunda vuelta cuadrado vale 1962696975056896 que es mucho más largo que 7...

varias recomendaciones...
1- usa else if (elif) ya que así el programa se salta los casos innecesarios
2- range por defecto es desde 0 así que puedes hacer range(valor)


realmente no se que desastre intentas hacer con los 0 o lograr... pero si arreglas elevado1 resuelves tu problema

los 0 son por la formula metodo cuadrado medio,  pero aun asi cuando imprime sigue mostrando solo la primera cifra al cuadrado las demas no :S

y a proposito de que el valor es largo no importa que sea largo por que se lo salta y lo tendria que imprimir no necesito entrar a los ifs a menos que sea menor a 8 es la regla del metodo


Título: Re: cambiar valor variable ciclo for duda
Publicado por: engel lex en 7 Febrero 2015, 21:50 pm
para que tu codigo se vea bien usa las etiqeutas GeSHi...

Citar
y a proposito de que el valor es largo no importa que sea largo por que se lo salta y lo tendria que imprimir no necesito entrar a los ifs a menos que sea menor a 8 es la regla del metodo

ya que no lo ves, te comento los errores en el codigo



Código
  1. valor = input ('Ingrese cantidad a repetir: ')
  2. valor1 = 2160
  3.  
  4. # se inicia el ciclo
  5. for i in range(0,valor):
  6.  
  7.    #se eleva al cuadrado
  8.    cuadrado=valor1** 2 #<- aqui asignas valor
  9.    # se guarda en otra variable llamada elevado
  10.    elevado=cuadrado #<- aquí pasas a otra variable
  11.    #se mide el tamaño
  12.    tamano=len(str(elevado))
  13.    if tamano==7:
  14.        elevado1= "0" + str(elevado)
  15.    if tamano==6:
  16.        elevado= "00" + str(elevado)
  17.    if tamano==5:
  18.        elevado1= "000" + str(elevado)
  19.    if tamano==4:
  20.        elevado1= "0000" + str(elevado)
  21.    if tamano==5:
  22.        elevado1= "000" + str(elevado)
  23.    if tamano==4:
  24.        elevado1= "0000" + str(elevado)
  25.    if tamano==3:
  26.        elevado1= "00000" + str(elevado)
  27.        #se acorta
  28.    xd = elevado1[2:-2] #<- pasas elevado1 a xd, pero si el numero era más lago de 7 nunca fue asignado
  29.    #por lo tanto elevado1 tiene un valor inesperado y no controlado, ya que nunca se asignó
  30.    #por lo tanto el interprete asume que fue el ultimo usado
  31.    #se convierte a numero
  32.    lol=int(xd)
  33.    #se eleva al cuadrado
  34.    xad=lol**
  35.    valor1=xad
  36.    print  xd
  37.  


para corregir eso, y mejorar la eficiencia del programa usa elif y else