在Python中以金字塔模式打印

时间:2013-08-16 19:39:04

标签: python python-2.7

我无法删除for - 循环中的间距,因为数字在制作模式时并不相同。

我的代码:

for i in range(1,5):
    for j in range(1,i):
       print(j)

但我想要的输出是:

1
12
123
1234

9 个答案:

答案 0 :(得分:5)

试试这个:

print(j, end='')
默认情况下,

end\n(请参阅print())。另外,请务必在每个外循环迭代结束时打印换行符:

for i in range(1,6):  # notice that I changed this to 6
    for j in range(1,i):
        print(j, end='')  # added end=''
    print()  # printing newline here
1
12
123
1234

编辑我刚刚注意到您使用的是Python 2.7。既然如此,您可以使用print j,代替print(j, end='')print代替print()。请注意,print j,会在j之间留出空格。如果您不想这样做,可以import sys并改为使用sys.stdout.write(j)(请参阅sys)。

此外,如果您想使用如上所示的Python 3打印功能,您始终可以

from __future__ import print_function

答案 1 :(得分:1)

一线解决方案,如果您有兴趣:

print('\n'.join([''.join(['{}'.format(i) for i in range(1,j)]) for j in range(2,6)]))

1
12
123
1234

答案 2 :(得分:1)

for r in range(1,5):
    for c in range (1,r+1):
        print c,
    print

这里,没有参数的打印导致在下一行打印

答案 3 :(得分:0)

为了获得一行中的所有数字,您必须每行使用一个打印语句。一种方法是:

for i in range(1, 5):
    print(''.join([str(n) for i in range(1, i)]))

保持嵌套的for循环:

for i in range(1, 5):
    temp = ''
    for j in range(1, i):
        temp += str(j)
    print(temp)

答案 4 :(得分:0)

尝试:

def RTN():
    x = 1
    num = int(input('Type any integer besides 0: '))
    if num == 0:
        return 'Try again!'
    while x < num + 2:
        print('')
        for y in range(1, x):
            print(str(y) + ' ', end = '')
        x += 1

答案 5 :(得分:0)

我认为@Shiva的想法真的很好,并且使金字塔功能更加通用,也许有人可以使用/享受它:

SELECT `id`, `name`, `img`, `safe_name`, `sku`, `productstatusid` FROM `products` 
WHERE `id` IN (SELECT `product_id` FROM `product_category` WHERE 
`category_id` IN (?, ?)) AND `active` = ?

答案 6 :(得分:-1)

def pentagon(num):

    j = num
    for i in range(0, num + 1):
        print('{}{}'.format(' ' * j, ' *' * i))
        j -= 1

pentagon(2)

输出

 *  
* *

答案 7 :(得分:-1)

num = int(input())

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

答案 8 :(得分:-3)

x =输入(&#39;输入一些数值&#39;)

S =&#39;&#39;

表示范围(0,x)中的i:

     for j in range(0,i+1):

              s=s+str(j+1)
     print s
     s=''