-1

機能を動作させるのに問題があります。*Asterisk私の関数は、文字を受け入れ、後続の行に 1 つのアスタリスク、3 つの ast.、5、任意の奇数を出力するパラメーターである必要があります。したがって、最初の行には 1 つの ast.、2 番目の行には 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. たとえば、システムのシェルまたはコマンド ラインで次のようにします。

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 に答える