2016-09-08 12 views
-1

何かをコンパイラに入力しても何も印刷されないので、Pythonコードに問題があります。Pythonはwhileループで自分の入力を印刷していません

whileループを使用して、ユーザーがアルバムのアーティストとタイトルを入力できるようにするコードを作成しようとしています。それで、私はmake_albumにユーザの入力を呼んで、作成された辞書を印刷することができます。

ただし、アーティストとタイトルを入力すると、何も印刷されません。ここで

が私のpythonのコードです:

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() 

while True: 
    print("\nEnter album's artist and title: ") 
    print("\nEnter 'q' at anytime to quit") 

    a_name = input("Artist name: ") 
    if a_name == 'q': 
     break 

    a_title = input("Album title: ") 
    if a_title == 'q': 
     break 

make_album(a_name, a_title) 
formatted_album = make_album(a_name, a_title) 
print(formatted_album) 

誰も私が間違っていることができるものをするように任意のアイデアを持っていますか?どんなフィードバックも高く評価されます。

+0

最後の3行を一度にインデントする必要がありますか? –

+2

ループ内に下の3つのステートメントを入れます – Li357

+0

title属性はどこから来たのですか?あなたはエラー(おそらくAttributeError)を取得していますか?もしそうなら、完全なトレースバック(コメントではなく、質問そのもの)でここで受け取ったエラーを再現してください。ループ内に入るために最後のステートメントをインデントする必要があると思われます。おそらく多くの問題があるので、デバッガでこれを実行する必要があります。 – Dan

答えて

0

"a_name"の種類を印刷して、それが何を表示するかを確認することをお勧めします。

私の推測によれば、inputの使用は期待通りにはできません。代わりにraw_inputを試してください。

、ユーザの入力が解釈されます:

Pythonのコースはinputに言って、次のい。例えばユーザ。 の整数値を入力すると、入力関数はこの整数値を返します。一方、 ユーザーがリストを入力すると、関数はリストを返します。

つまり、文字列が必要な場合は、 'q'の場合は、文字通り'q'と入力する必要があります。

あなたの入力があなたの入力に関係なく文字列として受け取り、解釈をあなたの実装に任せることができます。その後、raw_inputに電話してください。

関連する問題