调试python函数

调试python函数,python,Python,我很难让我的功能正常工作。My functions需要是一个参数,它接受*星号字符,并在后续行中打印出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_

我很难让我的功能正常工作。My functions需要是一个参数,它接受
*星号
字符,并在后续行中打印出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

不清楚你的问题,但如果你想打印星号奇数次,就用这个

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)




            * 
          *  *  * 
        *  *  *  *  * 
      *  *  *  *  *  *  * 
    *  *  *  *  *  *  *  *  * 
def箭头(n,标志=1): 如果标志>>箭头(10) * * * * * * * * * * * * * * * * * * * * * * * * *
您将无法以这种方式打印箭头,因为您无法在空格之间打印字符

你可以试试这样的吗

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

>> arrow(7)
>> 
       *
      * *
     * * *
    * * * *
   * * * * *
  * * * * * *
 * * * * * * * 

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

python -m pdb yourscript.py

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

您还没有告诉我们什么不起作用。@mVChr没有,我将在周一测试之前检查它的样本测试问题。范围(x)内num2的行
:string_ln=string_ln+'*'
是一个明显的错误。
string\u ln=string\u ln+'*'
应该是它下面缩进代码块的一部分。哇,非常感谢!我明白我做错了什么。最后一个问题,我如何让箭头看起来像钻石而不是白兰地?我很确定你可以从这里看出,我给你的代码是3行,你需要做相反的事情。如果这个答案对原来的问题是正确的,那么接受它,如果需要的话,再问另一个。它是歪斜的,而不是没有多余空间的
('*'*x)
?哇哦,是的,对不起,从解释器复制了错误的测试。谢谢!但是,我怎样才能让箭头看起来像钻石而不是白兰地呢?就像箭头(9)一样,你会有一个ast。第一行,第二行2行,第三行3行,第四行2行,最后一行1行?