1

我需要输出这个

1
22
333
4444
55555
666666
7777777
88888888
999999999

到目前为止,我所拥有的是:

def main():
    for i in range(10):
        for n in range(i):
            print(i)

    return
main()

我得到了所有正确的数字,只是格式不正确。如果你们能以我的方式提出一些提示,我将不胜感激。

4

5 回答 5

13

只需将字符串版本相乘:

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

输出:

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

1
22
333
4444
55555
666666
7777777
88888888
999999999

如果您必须使用嵌套循环,请通过将选项设置为空字符串来告诉print()函数不要在内循环中打印换行符;endprint()循环中的空调用就足以添加必要的换行符:

for i in range(10):
    for n in range(i):
        print(i, end='')
    print()
于 2013-10-17T21:51:32.283 回答
2

几乎上面提到的每个答案都使用字符串来解决这个问题。还有另一种方法,更简单的方法是使用公式 a_n= n * ((10^n - 1)/9) for n<=9 应用简单的数学。请参考下面的代码片段(使用 Python 3)

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

n = 4

输出

1 
22
333
4444
于 2015-08-27T19:48:20.200 回答
1
def main():
    for i in range(10):
        for n in range(i):
            print(i, end='')

        print()

main()
于 2013-10-17T22:03:37.690 回答
0
def main(n):
  for x in range(n):
    if x>0:
      print(str(x)*x+'\n')

main(n)
于 2013-10-17T22:46:59.253 回答
0

一行,不要使用str:

print((10**(i)//9)*i)
于 2021-01-06T07:31:26.523 回答