所以我做了一个家庭作业,我遇到了一些麻烦。
我们应该使用嵌套for循环以各种不同的方式显示一组数字。我需要以下4种模式中的3种,我只知道如何制作1。
模式A
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
模式B
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
模式C
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
模式D
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
(我不知道为什么C和D不能正确显示,但你应该有这个想法)
我已经获得了以下代码来制作模式A:
for x in range(5):
for y in range(1, x + 2):
print(y, end = '\r')
print()
任何帮助将不胜感激!
答案 0 :(得分:0)
您可以使用" " * y
另一种方法是迭代所有25个点并选择在每个位置打印空格或数字
for y in range(1, 6):
for x in range(1, 6):
print(" " if x > y else x, end=" ")
print()
注意如果将x > (6 - y)
替换为比较
也尝试颠倒范围。例如
for y in reversed(range(1, 6)):
答案 1 :(得分:0)
你认为C和D部分有什么变化?数字会随着第一个数字之间的初始空间而变化,对吗?这意味着您需要跟踪循环中的空格数。对于A和B,如果您可以将算法拼凑为1,则可以执行另一个算法。提示:每种模式的起始起点是什么?它是如何变化的?
答案 2 :(得分:0)
由于您使用的是Python 3的print()
函数,因此您可以使用range
运算符解包*
个对象,并利用print()
方便的sep
和end
个参数:
模式A:
for i in range(5):
print(*range(1, i+2), sep=' ', end='\n\n')
模式B:
for i in range(5, 0, -1):
print(*range(1, i+1), sep=' ', end='\n\n')
模式C:
for i in range(5):
print(' '*(4-i), end='')
print(*range(i+1, 0, -1), sep=' ', end='\n\n')
模式D:
for i in range(5, 0, -1):
print(' '*(5-i), end='')
print(*range(1, i+1), sep=' ', end='\n\n')