【问题标题】:Functions and for loops函数和 for 循环
【发布时间】:2020-06-15 13:26:03
【问题描述】:

这里是 Python 新手。 我有一个练习来编写一个接收2个参数的函数,第一个是单个音符字符串,另一个是中间行的最大长度(int)。 (即箭头(my_char,max_length) 基本上该函数应该返回一个“箭头结构”。 我应该为此使用for循环。 例如。 print(arrow("*", 5)) 的打印应该是:

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

到目前为止我做了什么:

for i in range(1, max_length + 1):
    print (my_char * i)

for i in range(max_length, 1, -1):
    print (my_char * i)

我得到了正确的编队,但是编队没有返回,我需要在星号之间添加空格。

【问题讨论】:

  • 你的问题是什么?
  • 寻找一个大致的工作方向,要求一个完整的答案对我没有好处
  • 请展示你到目前为止所做的事情。
  • 在我尝试过的内容中编辑
  • 感谢您提供更多详细信息,我投票决定重新提出问题。

标签: python loops


【解决方案1】:

根据您的问题描述和您所做的事情,看来要正常工作,第二个 for 循环中 print() 的参数必须是 my_char*(i-1) 而不是 my_char*i。然后,您可以在星号之间添加空格,并将所有内容绑定到一个带有 2 个参数的函数中,如下所示:

def arrow(my_char, max_length):
    for i in range(1, max_length + 1):
        print(" ".join(my_char * i))

    for i in range(max_length, 1, -1):
        print(" ".join(my_char * (i-1)))

例子:如果取my_char = "*"max_length = 5,函数arrow(my_char, max_length)会输出:

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

【讨论】:

    【解决方案2】:

    许多答案之一是这样的:

    def arrow(char, length):
        for i in range(length):
            for j in range(i):
                print(char + ' ', end='')
            print ()
        for i in range(length,0,-1):
            for j in range(i,0,-1):
                print(char + ' ', end='')
            print ()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多