调试python函数
我有麻烦让我的函数工作。我的功能需要是一个接受*Asterisk
字符的参数,并且会在随后的行中打印出1个星号,3个星号,5个任意奇数。所以第一行将有1次,2次3次,等等。该参数将接受任何奇数int
。调试python函数
我尝试:
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)
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
谢谢!但是,我怎样才能让箭头看起来像钻石,而不是一个pryamind?就像它是箭头(9),你将有一个ast。第一行,第二行,第三行,第二行和第一行中的第一行? –
@queensmatin: - 更新了答案......... – user1655481
你不能用这种方式打印箭头,因为你不能在空格之间打印字符!
你可以尝试这样的事情?
def arrow(n):
for x in range(n+1):
print (' '*n)+(' *'*x)
n -= 1
>> arrow(7)
>>
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
哇,非常感谢!我明白我做错了什么。最后一个问题,我怎么能让箭头看起来像一颗钻石而不是一颗镰刀呢? –
我很肯定你可以从这里弄清楚,我给你的代码是3行,你需要做相反的事情。如果这个答案对于原始问题是正确的,那么接受它,并在需要时询问另一个问题。 – Aesthete
是否有一个原因是它是歪斜而不是没有额外空间的'('*'* x)'? –
如果要调试Python脚本,可以使用pdb
。例如,在系统的shell或命令行:
python -m pdb yourscript.py
然后你可以通过你的脚本中使用n
(其中跳过函数调用),s
(其步入函数调用)步骤,打印使用p yourvarname
的变量状态,并使用其他几个命令(尝试使用help
查看它们,然后help somecommand
查看详细帮助)。
这功课吗? – mVChr
你还没有告诉我们什么不起作用。 – Aesthete
@mVChr不,它的样本测试问题我在星期一的测试之前就要完成了。 –