cambiar valor variable ciclo for duda

Iniciado por asdexiva, 7 Febrero 2015, 20:41 PM

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

asdexiva

Código (python) [Seleccionar]
valor = input ('Ingrese cantidad a repetir: ')
valor1 = 2160

# se inicia el ciclo
for i in range(0,valor):
   
   #se eleva al cuadrado
   cuadrado=valor1** 2
   # se guarda en otra variable llamada elevado
   elevado=cuadrado
   #se mide el tamaño
   tamano=len(str(elevado))
   if tamano==7:
       elevado1= "0" + str(elevado)
   if tamano==6:
       elevado= "00" + str(elevado)
   if tamano==5:
       elevado1= "000" + str(elevado)
   if tamano==4:
       elevado1= "0000" + str(elevado)
   if tamano==5:
       elevado1= "000" + str(elevado)
   if tamano==4:
       elevado1= "0000" + str(elevado)
   if tamano==3:
       elevado1= "00000" + str(elevado)
       #se acorta
   xd = elevado1[2:-2]
  #se convierte a numero
   lol=int(xd)
   #se eleva al cuadrado
   xad=lol** 2
   valor1=xad
   print  xd
   


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

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

asdexiva

#2
Cita de: 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

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

engel lex

#3
para que tu codigo se vea bien usa las etiqeutas GeSHi...

Citary 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 (python,8,9,28) [Seleccionar]
valor = input ('Ingrese cantidad a repetir: ')
valor1 = 2160

# se inicia el ciclo
for i in range(0,valor):
   
   #se eleva al cuadrado
   cuadrado=valor1** 2 #<- aqui asignas valor
   # se guarda en otra variable llamada elevado
   elevado=cuadrado #<- aquí pasas a otra variable
   #se mide el tamaño
   tamano=len(str(elevado))
   if tamano==7:
       elevado1= "0" + str(elevado)
   if tamano==6:
       elevado= "00" + str(elevado)
   if tamano==5:
       elevado1= "000" + str(elevado)
   if tamano==4:
       elevado1= "0000" + str(elevado)
   if tamano==5:
       elevado1= "000" + str(elevado)
   if tamano==4:
       elevado1= "0000" + str(elevado)
   if tamano==3:
       elevado1= "00000" + str(elevado)
       #se acorta
   xd = elevado1[2:-2] #<- pasas elevado1 a xd, pero si el numero era más lago de 7 nunca fue asignado
   #por lo tanto elevado1 tiene un valor inesperado y no controlado, ya que nunca se asignó
   #por lo tanto el interprete asume que fue el ultimo usado
   #se convierte a numero
   lol=int(xd)
   #se eleva al cuadrado
   xad=lol**
   valor1=xad
   print  xd
 



para corregir eso, y mejorar la eficiencia del programa usa elif y else
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.