-1

我无法让我的功能正常工作。我的函数需要是一个接受*Asterisk字符的参数,并将在后续行中打印出 1 个星号、3 个 ast.、5 个任何奇数。所以第一行将有 1 个 ast,第二行有 3 个 ast,依此类推。该参数将接受任何奇数int

我的尝试:

def arrowHead(n):
    spaces = n / 2
    for x in range(1, n+2, 2):
        string_ln = ''
    for num in range(spaces):
        string_ln = string_ln + ' '
    for num2 in range(x): string_ln = string_ln + '*'
        spaces = spaces - 1
        print string_ln
        final_string = ''
    for x in range(n / 2):
        final_string = final_string + ' '
        final_string = final_string + '*'
    for x in range(3):
        print final_string
4

3 回答 3

4

您将无法以这种方式打印箭头,因为您无法在空格之间打印字符!

你可以试试这样的东西吗?

def arrow(n):
  for x in range(n+1):
    print (' '*n)+(' *'*x)
    n -= 1

>> arrow(7)
>> 
       *
      * *
     * * *
    * * * *
   * * * * *
  * * * * * *
 * * * * * * * 
于 2012-09-15T00:19:03.233 回答
2

如果要调试 Python 脚本,可以使用pdb. 例如,在系统的 shell 或命令行中:

python -m pdb yourscript.py

然后,您可以使用n(跳过函数调用)、s(进入函数调用)单步执行脚本,使用 打印变量的状态p yourvarname,并使用其他几个命令(尝试使用help以查看所有命令,然后help somecommand查看详细帮助)。

于 2012-09-15T00:25:23.213 回答
0

您的问题不清楚,但如果您想打印星号奇数次,请使用此

def arrowHead(n):
   print '*' * (2*n-1)

更新:-

>>> def arrow(n,flag=1):
    if flag<n:
        print (' '*(arrow(n,flag+1))+' * '*(n-(2*flag-1)))
    return 2*flag-1

>>> arrow(10)




            * 
          *  *  * 
        *  *  *  *  * 
      *  *  *  *  *  *  * 
    *  *  *  *  *  *  *  *  * 
于 2012-09-15T00:11:28.883 回答