我正在开发一个Python项目,用于打印从星号(*)创建的山丘,三角形和沙漏。下面是我正在使用的代码,它正确打印出山丘,但三角形和沙漏在每一行都有一个额外的空间,尽管while循环的第一次迭代乘以零。
oddn = int(input("Enter an odd number width: "))
oddn2 = oddn
oddn3 = oddn
x = 1
y = 1
z = 1
h = 1
g = 0
print("Hill:")
while oddn >= x:
print("*" * x )
x = x+2
print("Triangle:")
while (oddn * 7)+10 >= y:
ynum = int(oddn/2)
print(" " * ynum,"*" * y)
y = y + 2
oddn = oddn - 2
print("Hourglass:")
while oddn2 >= z:
print(" " * g,"*" * oddn2)
oddn2 = oddn2-2
g = g + 1
while (oddn3 * 7)+10 >= h:
ynum2 = int(oddn3/2)
print(" " * ynum2,"*" * h)
h = h + 2
oddn3 = oddn3 - 2
目前的结果如下:
Enter an odd number width: 13
Hill:
*
***
*****
*******
*********
***********
*************
Triangle:
*
***
*****
*******
*********
***********
*************
Hourglass:
*************
***********
*********
*******
*****
***
*
*
***
*****
*******
*********
***********
*************
所以,正如你从结果中看到的那样。山上左侧没有多余的空间,但三角形和沙漏都有。这可能只是我逻辑中的错误,但我已经尝试纠正它并且还没有找到答案。任何帮助将不胜感激!
答案 0 :(得分:6)
Python在术语之间插入一个空格(这是print
的默认值)
print(" " * ynum, "*" * y)
您可以使用
print(" " * ynum, "*" * y, sep="")
或连接字符串
print(" " * ynum + "*" * y)