为什么我得到一行数字?

时间:2011-06-22 23:58:53

标签: python

num = int(input('Enter a number:'))

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

for i in range(num, 0, -1):
    for j in range(0, i):
        print(num, end=" ")

2 个答案:

答案 0 :(得分:9)

因为end=" "会覆盖默认行为,即打印换行符\n

这样做的效果是用空格而不是换行符\n分隔每个数字。

答案 1 :(得分:1)

此行print(num, end=" ")只会打印初始号码num。您是否想要一个迭代数字(i或j)?

同样end=" "会抑制将\n附加到打印语句末尾的正常行为。


修改

根据你的评论,我认为你想要这个(假设是num=3):

3 
3 3 
3 3 3 
3 3 
3 

您可以通过添加仅提供如此新行的打印语句来获得:

def diamond(number):
    for i in range(0, number, 1):
        for j in range(0,i):
            print(number, end=" ")
        print("")

    for i in range(number, 0, -1):
        for j in range(0, i):
            print(number, end=" ")
        print("")

如果您希望每行的数字等于行大小,请将打印语句中的number更改为i


编辑2

你的意思是你想要这个吗?

Enter a number:5

1 
2 2 
3 3 3 
4 4 4 4 
5 5 5 5 5 
4 4 4 4 
3 3 3 
2 2 
1 

之前用户输入的原因不起作用可能是由于python文件的排序或您调用方法的方式。如果您将其写入.py文件并通过IDLE运行,则可以获得该文件。

def diamond(number):
    for i in range(0, number, 1):
        for j in range(0,i):
            print(i, end=" ")
        print("")

    for i in range(number, 0, -1):
        for j in range(0, i):
            print(i, end=" ")
        print("")


num = int(input('Enter a number:'))
diamond(num)

如果您的意思是

1
1 2
1 2 3
1 2
1

然后你需要用j+1替换那些i(记住,范围从0开始)。