对 Python 和一般编码非常陌生! 尝试获得如下所示的星形图案:
*
**
***
****
*****
****
***
**
*
使用 for 循环工作,但我只允许使用单个 for 循环,并在其中嵌入 if/else 语句以使其工作。如果我可以使用 2 个 for 循环,我会知道如何做到这一点,但不确定为什么我当前的解决方案不起作用,因为它只输出前 5 行星星,然后停止。任何帮助表示赞赏:)
我当前的代码库:
print("Pattern: ")
# Stores the * as a variable, not entirely necessary but negates having to type out "*"
star = "*"
for i in range(9):
if i in range(5):
print(star * (i + 1))
elif i in range(4, 0, -1):
print(star * i)
range(4, 0, -1)
包含整数[4, 3, 2, 1]
,所有这些都已经是range(5)
的一部分,因此elif
分支中的代码永远不会执行。您可以直接使用else
来处理i
中不在range(5)
中的值。然而,star * i
是错误的打印表达式,因为星号的数量会随着循环的继续而增加,但图案的下半部分的星星数量应该减少; star * (9 - i)
就能达到这个效果。
您也可以使用
min
来避免显式分支,如下所示:
star = "*"
size = 9
for i in range(size):
print(star * min(i + 1, size - i))