2011-10-28 9 views
1

は、私は、新しい行を作成する上の例で関数を定義についてのチュートリアルを行っていた、そしてあなたが書かなければならなかったコードは、このでした:これで何が問題になりますか?

def new_line(): 
    print 

def three_lines(): 
    new_line() 
    new_line() 
    new_line() 

def nine_lines(): 
    three_lines() 
    three_lines() 
    three_lines() 

print "hello world" 

print nine_lines() 

print "goodbye" 

誰もが、それは「さよなら」の前に「なし」を含んでいない理由を説明してもらえますか?

答えて

6
print nine_lines() 

あなたはnine_lines()関数を呼び出した結果を印刷しています。この関数はを明示的にに戻していないので、値が返されない場合は、returnステートメントを使用してください。まだ見ていないのであれば、Pythonは特別な値Noneを返します。あなたは戻り値を指定していないので、この問題を解決するには

、単に

nine_lines() 
+0

チュートリアルhahaにヘルプがありませんでしたが、そこに「プリント」を入れている理由がわかりません。 –

1

nine_lines()にその行を変更するには、デフォルトではNoneを返します。

ちょうどあなたに所望の出力を与えるべきである

nine_lines() 

を使用して、またはその代わりに、あなただけの

print "\n" * 8 

EDITを使用することができます。私はその印刷も忘れて8に9を変更し、新規に追加されますライン文字。 Svenがそれを指摘してくれてありがとう。

+0

最後の行は改行文字10個を出力します。 :) –

+0

助けてくれてありがとう –

+1

もしあなたがもっと読みやすくしたいのなら、常に 'print '\ n' * 9、' –

1

nine_lines()を実行すると、何も返されません。つまり、Noneを返します。戻り値が出力されたため、コンソールにNoneが表示されます。

+0

ああ、9つのスペースを返します。 –

+0

いいえ、9行の空白行を返しません*印字*します。それから、* Noneを返す(何も返さなければ、すべての関数が 'None'を返すので)。これが印刷されます。 – kindall

+0

ええ、申し訳ありませんが、私は印刷を意味し、助けを感謝します。 –

関連する問題