在Python中以金字塔模式打印

问题描述 投票:3回答:7

我无法删除for循环中的间距,因为数字不是用来制作模式的。

我的代码:

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

但我想要的输出是:

1
12
123
1234
python python-2.7
7个回答
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,将在js之间留出空格。如果你不想要这个,你可以使用import sys并使用sys.stdout.write(j)(参见sys)。

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

from __future__ import print_function

1
投票

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

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

1
12
123
1234

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

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


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)

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

-1
投票
def pentagon(num):

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

pentagon(2)

产量

 *  
* *

-3
投票

x =输入('输入一些数值')

S = ''

对于范围(0,x)中的i:

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

              s=s+str(j+1)
     print s
     s=''
© www.soinside.com 2019 - 2024. All rights reserved.