1
こんにちは私は、関数、3つの辞書、およびオプションの引数を含むコードを記述するよう練習問題を抱えています。ここでコンパイラがPythonでオプションの引数を理解していない
が私のコードです:私の第二の印刷文の「num_tracks」:私はしかし、私のコードを実行しようとするたびに
def make_album(artist_name, album_title, num_tracks):
"""Return artist and album title name."""
CD1 = {'sonic': artist_name, 'his world': album_title}
CD2 = {'shadow': artist_name, 'all hail shadow': album_title}
CD3 = {'silver': artist_name, 'dream of an absolution': album_title}
if num_tracks:
CD = artist_name + ' ' + album_title + ' ' + num_tracks
else:
CD = artist_name + ' ' + album_title
return CD.title()
disc = make_album('sonic', 'his world', '15')
print(disc)
disc = make_album('shadow', 'all hail shadow')
print(disc)
disc = make_album('silver', 'dream of an absolution')
print(disc)
、私のコンパイラは1つの必要な位置引数が欠落していると述べています。
私のコードを間違って書き、コンパイラがif-else文を読んでいない限り、これは私のif-else文のために問題ではありませんか?どんなフィードバックも大変ありがとうございます。ありがとうございました。
ありがとうございます。私は省略可能な引数にデフォルトを追加しました。私のコードを実行すると、もう構文エラーが出ませんが、2番目と3番目の印刷機能にインクルードしていないのに、2番目と3番目の印刷文に '15'が表示されてしまい、 num_trackをオプションにするif-elseステートメント誰かが私が間違っていたことを知っていますか? – PhantomDiclonius
@PhantomDiclonius:(今削除された)他の回答のやり方で、デフォルトを 'num_tracks =" 15 "'に設定しましたか?それが原因です。それは 'num_tracks = None'(" not provided/not set "のための標準的なセンチネル)であり、' num_tracks is not'のテストチェックを行います。したがって、実際の値が与えられたときだけ使用されます。 – ShadowRanger
はい、最初はnum_tracks = '15 'だったので、あなたが言ったようにNoneに設定しました。それはうまくいきました。ありがとうございます。 :) – PhantomDiclonius