n=int(input('enter no of rows\n'))
for row in range(0,n):
for col in range(0,n):
if row==0 or col==(n-1):
print("A",end="")
else:
print(end="")
print()
我需要如下所示的输出。我没有得到它。任何人都可以帮我解决,代码有问题吗?
AAAAA
A A
A A
AA
A
答案 0 :(得分:1)
如果要使用自己的方式:
n=int(input('enter no of rows\n'))
for row in range(0,n):
for col in range(0,n):
if row == 0 or col == (n-1) or row == col:
print ("A",end ="")
else:
print(" ", end ="")
print()
输出:
enter no of rows
5
AAAAA
A A
A A
AA
A
答案 1 :(得分:0)
您可以使用python“功能”并通过1个循环来实现:
n = int(input('enter no of rows\n'))
print("A" * n)
for row in range(n - 2):
print(" " * (row + 1) + "A" + " " * (n - row - 3) + "A")
print(" " * (n - 1) + "A")
为什么起作用?
首先,让我们看一下您想要获得的结果。您要在用符号A
构建的控制台三角形中进行打印。
要创建带有循环的算法,我们应该在每个打印行中找到一些共同点。让我们再次看一下输出:
0 row: AAAAA # no spaces, 5 'A' chars
1 row: A A # 1 space + 'A' + 2 spaces + 'A'
2 row: A A # 2 spaces + 'A' + 1 space + 'A'
3 row: AA # 3 spaces + 'A' + 0 spaces + 'A'
4 row: A # 4 spaces + 'A'
我添加了一些注释以显示如何分析此输出。在这里,我们看到第一和最后行与其他行没有遵循相同的逻辑。因此,让我们在循环外打印它们。现在,让我们尝试创建用于构建“中央”行的算法:
row index
; amount of rows
-row index
-2
(每行的总长度应等于amount of rows
;我们应减去{{1} },因为除空格外,我们打印2个'A'字符); 在python中,string和int的乘积会创建新的字符串,该复制的次数由int值提供。示例:2
将返回新字符串"A" * 10
。我们将在代码中使用此技巧。
现在让我们编码。首先,让我们打印第一行,其中包含重复"AAAAAAAAAA"
次的'A'符号:
n
然后让我们编写循环。在我的代码中,我使用了range()
和1个参数。但是我们应该记住,我们已经打印了0行,并且应该从1开始。在我的代码中,它不是很清楚,所以让我们以其他方式进行操作:
print("A" * n)
现在让我们为打印行编写代码:
for row in range(1, row - 1):
最后打印最后一行:
print(" " * row # amount of spaces equals row index
+ "A" # 'A' char
+ " " * (n - row - 2) # amount of spaces between 'A' chars equals
# length of row - row index - 2
+ "A") # 'A' char
完整代码:
print(" " * (n - 1) # amount of spaces on the start of last line
# equals length of row - 1
+ "A") # 'A' char