2016-10-04 62 views
1

我想要做的是创建一个字符串对象的星号,可以通过用户输入缩放。例如,用户输入4:功能的组合

**** 
* * 
* * 
**** 

因此,我不得不2个独立的功能,其中一个产生的顶部和底部部分“****” 和一个其产生中间。它有效,当我让他们分开时,我会打印topbottom,打印中间,打印tobbottom。但我只想使用打印一次,所以我将3个函数组合到了下面的代码中。

user = input("How many times?") 
def hollow(user): 
    # top 
    var = "" 
    for s in range(user): 
     var += "*" 

    # middle 
    output = "" 
    middle = "*" 
    for x in range(1, user - 1): 
     middle += " " 
    middle += "*" 
    amount = user - 2 
    for i in range(0, amount): 
     if i == (amount - 1): 
      output += middle 
     else: 
      output += middle 
      output += "\n" 

    # bottom 
    var2 = "" 
    for z in range(user): 
     var2 += "*" 

    final = var + output + var2 
    print(final) 

hollow(user) 

这是输出我使用此代码获取:

How many times?4 
***** * 
* ***** 

所以这里的问题是:我怎么得到这个代码运行的形状我在这篇文章的开头显示?

+2

那么究竟是什么问题? – Mureinik

+0

如果你只想使用'''print''' *一次*,你是否考虑过*返回字符串*? –

回答

0

你需要换行添加到您的最后一个变量:

final = var + '\n' + output + '\n' + var2 

请注意,您的代码可以减少到这一点:

def hollow(user): 
    print ('*' * user + '\n' + ('*' + ' ' * (user-2) + '*\n') * (user-2) + '*' * user) 

hollow(4) 
+0

你是对的,我忽略了顶线和底线的换行符,因为我认为我已经实现了它们。 – Vitalynx