嵌套循环Python

时间:2014-07-06 01:25:57

标签: python python-3.x nested-loops

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

我正在编写一个程序,其输出应该是这样的。

1

22

333

4444

55555

666666

7777777

88888888

999999999

使用我编写的代码,我非常接近,但是我的计数工作方式只是字面数字上升。我只是需要帮助才能使它只计数到9但显示如上。感谢。

enter image description here

13 个答案:

答案 0 :(得分:8)

你在内循环中递增count这就是为什么你想要在你想要之前继续得到更大的数字

你可以这样做。

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


1
22
333
4444
55555
666666
7777777
88888888
999999999

或者由于某种原因你想要嵌套循环

from __future__ import print_function

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

答案 1 :(得分:2)

这适用于python2和python3:

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

代码中的简单错误是count = count + 1的位置。它应该放在第二个for循环块之后。我在您自己的代码中进行了一个简单的更改,以获得您想要的输出。

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

这将根据您编写的代码提供您想要的输出。 :)

答案 4 :(得分:1)

这是一线解决方案。 有点长:

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

答案 5 :(得分:0)

print(count, end='')更改为print(i + 1, end='')并删除count。只要确保你理解它的工作原理。

答案 6 :(得分:0)

这就是你想要的:

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

答案 7 :(得分:0)

"""2. 111 222 333 printing"""

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

答案 8 :(得分:0)

您要做的是涉及一个名为repunit numbers

的数学概念

你也可以这样做:

empirical

答案 9 :(得分:0)

我意识到问题已经解决了,但这就是你希望代码看起来像的样子。

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

我认为@Dannnno的答案更短,更直接:)

答案 10 :(得分:0)

count = 1
for i in range(9):
    for j in range (-1, i):
        print (count, end = '')
    count = count + 1
    print (" ")

答案 11 :(得分:0)

这可能是您要解决的一行代码

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

答案 12 :(得分:-1)

其他人提出了一些有趣的解决方案,但这也可以通过简单的观察在数学上完成。请注意:

1 - 1 * 1

22 - 2 * 11

333 - 3 * 111

4444 - 4 * 1111

依旧......

我们可以在每次迭代时都有一个生成1,11,111,1111,...的通用公式。观察:

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

...

对于第i次迭代,我们有(10 ^ i - 1)/ 9。

现在它很容易实现。我们将在每次迭代中将i乘以上面的公式。因此总体公式是:

i *(10 ^ i - 1)/ 9 (对于每次迭代)。 这是python代码:

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

希望这有帮助。