Python de bucle nested

count = 1 for i in range(10): for j in range(0, i): print(count, end='') count = count +1 print() input() 

Estoy escribiendo un progtwig que debería tener la salida que se ve así.

1

22

333

4444

55555

666666

7777777

88888888

999999999

Con el código que he escrito, estoy bastante cerca, pero la forma en que funciona mi cuenta es literalmente cuenta hacia arriba y hacia arriba. Solo necesito ayuda para que solo cuente hasta 9 pero se muestre como arriba. Gracias.

introduzca la descripción de la imagen aquí

Estás incrementando el count en el bucle interno, por lo que sigues obteniendo números más grandes antes de querer

Usted podría simplemente hacer esto.

 >>> for i in range(1, 10): print str(i) * i 1 22 333 4444 55555 666666 7777777 88888888 999999999 

O si quieres el bucle nested por alguna razón.

 from __future__ import print_function for i in range(1, 10): for j in range(i): print(i, end='') print() 

Esto funciona tanto en python2 como en python3:

 for i in range(10): print(str(i) * i) 
 for i in range(1,10): for j in range(0,i): print i, print "\n" 

El error simple en su código es la colocación de count = count + 1. Se debe colocar después del segundo bloque de bucle. He realizado un simple cambio en su propio código para obtener la salida que desea.

  from __future__ import print_function count = 0 for i in range(10): for j in range(0, i): print(count,end='') count = count +1 print() 

Esto le dará la salida que desea con el código que escribió. 🙂

Esta es una solución de línea. Un poco largo:

 print ('\n'.join([str(i)*i for i in range(1,10)])) 

Cambie print(count, end='') para print(i + 1, end='') y elimine el count . Solo asegúrate de entender por qué funciona.

Es esto lo que quieres:

 for i in range(10): print(str(i) * i) 
 """2. 111 222 333 printing""" for l in range (1,10): for k in range(l): print(l,end='') print() 
 count = 1 for i in range(9): for j in range (-1, i): print (count, end = '') count = count + 1 print (" ") 

Lo que estás tratando de hacer involucra un concepto matemático llamado números de repunit

También puedes hacerlo de la siguiente manera:

 for i in range(1,n): print (int(i*((10**i)-1)/9)) 

Me di cuenta de que el problema se resolvió, pero así es como quería que se viera su código.

 count=0 for i in range(10): for j in range(0, i): print (count, end='') count +=1 print() 

Creo que la respuesta de @Dannnno es más corta y directa al punto 🙂

Otros han sugerido algunas soluciones interesantes, pero esto también se puede hacer matemáticamente usando una observación simple. Darse cuenta de:

1 – 1 * 1

22 – 2 * 11

333 – 3 * 111

4444 – 4 * 1111

y así ….

Podemos tener una fórmula general para producir 1,11,111,1111, … en cada iteración. Observa eso:

1 = 9/9 = (10 – 1) / 9 = (10 ^ 1 – 1) / 9

11 = 99/9 = (100 – 1) / 9 = (10 ^ 2 – 1) / 9

111 = 999/9 = (1000 – 1) / 9 = (10 ^ 3 – 1) / 9

……

es decir, tenemos (10 ^ i – 1) / 9 para la iteración.

Ahora es bastante simple de implementar. Multiplicaremos i con la fórmula anterior en cada iteración. Por lo tanto, la fórmula general es:

i * (10 ^ i – 1) / 9 (para cada iteración) . Aquí está el código de python:

 for i in xrange(1,10): print i*(10**i-1)/9 

Espero que esto ayude.