web-dev-qa-db-fra.com

Boucle imbriquée Python

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

J'écris un programme qui devrait avoir la sortie qui ressemble à ceci.

1

22

333

4444

55555

666666

7777777

88888888

999999999

Avec le code que j'ai écrit, je suis assez proche, mais la façon dont mon compte fonctionne fonctionne littéralement de plus en plus. J'ai juste besoin d’aide pour que cela ne compte que pour 9 mais affiche comme ci-dessus. Merci.

enter image description here

3
iMaxPrime

Vous incrémentez count dans la boucle intérieure, raison pour laquelle vous continuez à obtenir de plus grands nombres avant de vouloir

Vous pouvez simplement faire ça.

>>> for i in range(1, 10):
        print str(i) * i


1
22
333
4444
55555
666666
7777777
88888888
999999999

ou si vous voulez la boucle imbriquée pour une raison quelconque

from __future__ import print_function

for i in range(1, 10):
    for j in range(i):
        print(i, end='')
    print()
7
Dannnno
for i in range(1,10):
    for j in range(0,i):
        print i,
print "\n"
2
Raghav Chadha

Cela fonctionne à la fois dans python2 et python3:

for i in range(10):
  print(str(i) * i)
2
darkcharl

Ceci est une solution en une seule ligne. Un peu long:

print ('\n'.join([str(i)*i for i in range(1,10)]))
1
Coskun Soysal
"""2. 111 222 333 printing"""

for l in range (1,10):
    for k in range(l):
        print(l,end='')
print()
0
Harit Singh

Remplacez print(count, end='') par print(i + 1, end='') et supprimez count. Assurez-vous simplement de comprendre pourquoi cela fonctionne.

0
David Ehrmann

L'erreur simple dans votre code est l'emplacement de count = count + 1. Il devrait être placé après la seconde pour le bloc de boucle. J'ai apporté une simple modification à votre propre code pour obtenir le résultat souhaité.

    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()

Cela donnera la sortie que vous voulez avec le code que vous avez écrit. :)

0

Ce que vous essayez de faire implique un concept mathématique appelé numéros de repunit

vous pouvez aussi le faire comme suit:

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

C'est ce que tu veux:

for i in range(10):
    print(str(i) * i)
0
Zacrath
count = 1
for i in range(9):
    for j in range (-1, i):
        print (count, end = '')
    count = count + 1
    print (" ")
0
Arvind T

J'ai réalisé que le problème était résolu, mais voici comment vous voulez que votre code ressemble.

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

je pense que la réponse de @Dannnno est plus courte et va droit au but :)

0
Tejumade