将字符串,空格乘以零,仍然提供空格

时间:2015-03-18 17:08:31

标签: python

我正在开发一个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:
 *************
  ***********
   *********
    *******
     *****
      ***
       *
       *
      ***
     *****
    *******
   *********
  ***********
 *************

所以,正如你从结果中看到的那样。山上左侧没有多余的空间,但三角形和沙漏都有。这可能只是我逻辑中的错误,但我已经尝试纠正它并且还没有找到答案。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:6)

Python在术语之间插入一个空格(这是print的默认值)

print(" " * ynum, "*" * y)

您可以使用

print(" " * ynum, "*" * y, sep="")

或连接字符串

print(" " * ynum + "*" * y)