在python中打印数字模式,结尾不留空格和新行
其目的是根据用户输入打印图案半三角形,例如,如果用户输入为3,则图案将为在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):
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)))
这已经类似于其他人提出的解决方案