在python中打印数字模式,结尾不留空格和新行

在python中打印数字模式,结尾不留空格和新行,python,python-3.x,Python,Python 3.x,其目的是根据用户输入打印图案半三角形,例如,如果用户输入为3,则图案将为 1 1 2 1 2 3 但在执行时,最后一列的每个元素后面都有一个空格,最后一行后面有一个新行(\n)。我想删除,请帮助 1 \n 1 2 \n 1 2 3 \n 同样,鉴于预期输出为 1\n 1 2\n 1 2 3 这是我写的代码 rows = int(input()) num = 1 for i in range (0, rows): num = 1 for j in range(0, i + 1):

其目的是根据用户输入打印图案半三角形,例如,如果用户输入为3,则图案将为

1
1 2
1 2 3
但在执行时,最后一列的每个元素后面都有一个空格,最后一行后面有一个新行(\n)。我想删除,请帮助

1 \n
1 2 \n
1 2 3 \n
同样,鉴于预期输出为

1\n
1 2\n
1 2 3
这是我写的代码

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

这比您编写的代码要简单得多:

a = int(input("Enter a num: "))

for i in range(a+1):
    print(" ".join(list(map(str,range(1,i+1)))),end="")
    if i != a:print("")
执行:

Enter a num: 3

1
1 2
1 2 3
>>> 

我建议您采用以下解决方案,首先构建整个结果字符串,然后再打印,最后不使用新行字符:

my_input = int(input("Enter a num: "))

s = ""
for i in range(my_input):
    s += " ".join([str(j) for j in range(1,i+2)])
    s += "\n" if i != my_input-1 else ""

print(s, end="")

我对你的要求的看法

rows = int(input('Enter a number - '))
num = 1
for i in range(0, rows):
    num = 1
    tmp = []
    for j in range(0, i + 1):
        tmp.append(str(num))
        num = num + 1
    if i + 1 == rows:
        print(repr("{}".format(' '.join(tmp))))
    else:
        print(repr("{}\n".format(' '.join(tmp))))
p、 s-如果不需要,请删除
repr()

输出

Enter a number - 3
'1\n'
'1 2\n'
'1 2 3'

Python中常用且有效的方法是将要打印的所有值放入一个列表中,然后使用
join
将它们连接起来,而不是逐行打印,或通过重复添加来构建字符串

此外,您不需要两个叠瓦循环:只需将最新编号附加到每个循环的现有列表中,如下所示:

rows = int(input())
values = []

for i in range(1, rows + 1):
    values.append(str(i))
    print(' '.join(values))
rows = int(input())
num = 1
for i in range (0, rows):
    num = 1
    for j in range(0, i):
        print(num, end=' ')
        num = num + 1
    print(num)
输出:

3
1
1 2
1 2 3

其他人已经展示了替代方案。无论如何,我相信你正在学习,你想了解确切的情况。所以,这里是我的评论

你打印空间。如果已打印,则无法取消打印。有更多的方法来解决这个问题。如果要保留解决方案的精神,则不得打印最后一个
num
之后的空格。您可以少转一圈内部循环,然后单独打印最后一个num,如下所示:

rows = int(input())
values = []

for i in range(1, rows + 1):
    values.append(str(i))
    print(' '.join(values))
rows = int(input())
num = 1
for i in range (0, rows):
    num = 1
    for j in range(0, i):
        print(num, end=' ')
        num = num + 1
    print(num)
在本例中,可以删除第一行
num
。此外,您还可以将计数循环与自己的计数(num)相结合。这通常意味着它可以简化。像这样:

rows = int(input('Type the number of rows: '))
for i in range (0, rows):
    for j in range(1, i + 1):
        print(j, end=' ')
    print(i + 1)
现在,做一些实验。外部循环下的所有内容实际上都在打印一行数字。序列由
范围生成
——生成序列的生成器。当序列被
list()
包装时,您将获得一个数字列表,并且可以打印其表示形式:

rows = int(input('Type the number of rows: '))
for i in range (1, rows + 1):
    print(list(range(1, i + 1)))
它将结果打印为

[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
相反,您希望打印由空格连接的相同数字的序列。为此,您可以使用
join
。但是,必须将每个元素转换为字符串:

rows = int(input('Type the number of rows: '))
for i in range (1, rows + 1):
    print(' '.join(str(e) for e in range(1, i + 1)))
这已经类似于其他人提出的解决方案