0

要求された情報を使用して、10 個のリストから名前を取得する、Python を使用した「単純な」辞書/データベースを見つけようとしています。つまり、入力は「ジョンの電話」です。出力は「ジョンの電話番号は 0401」です。

この特定の情報の取得に完全に行き詰まっていることは別として、python は name = raw_input 行で突然構文エラーを出しました。

以下は、「友達」として保存したファイルです。

#!/usr/bin/python

friends = {'John' : {'phone' : '0401',
        'birthday' : '31 July',
        'address' : 'UK',
        'interests' : ['a', 'b', 'c']},
    'Harry' : {'phone' : '0402',
        'birthday' : '2 August',
        'address' : 'Hungary',
        'interests' : ['d', 'e', 'f']}}
name = raw_input ('Who are you looking for? ')
if name in friends: 
print friends[name]"'s phone number is: "['phone']
    # this line is something I haven't tested
    # and so I have a big hunch it's not going to work
else: 
    print 'no data'

そして、これは私に与えているエラーです:

$ ./friends
File "./friends", line 11
name = raw_input ('Who are you looking for? ')
     ^
SyntaxError: invalid syntax

これは、数時間前に imac のターミナルを使用してまったく同じファイルで作業していたときに発生していなかったことに注意してください。私はその行を変更していませんが、なぜそれが再生されているのか完全に困惑しています!

  • また、私の PC の cygwin や別の借りた Mac でも動作しません。
  • はい、ターミナルに chmod +x friends と入力しました。

これはおそらく最も単純で最もばかげたことであり、おそらく何かを完全に見落としているか、誤ってキーをぶつけてしまった可能性があります (午前 1 時です。これは月曜日に予定されています...)。

4

2 に答える 2

2

このraw_input()行はここで正常に機能します。

「unsure」行に構文エラーがあります。それはこのように読むことができます:

print name + "'s phone number is: " + friends[name]['phone']

フォーマット文字列を使用することもできます。

print "%s's phone number is: %s" % (name, friends[name]['phone'])

フルifブロック:

if name in friends: 
    print "%s's phone number is: %s" % (name, friends[name]['phone'])
else: 
    print 'no data'

それ以外の場合は、投稿から直接コピー/貼り付けした後、コードが機能しました。

于 2012-05-04T15:31:13.507 に答える
1

メッセージを出力する行に構文エラーがあり、メッセージをインデントするのを忘れました(Pythonではオプションではありません!)。

いくつかの修正バージョンは次のとおりです。

print name + "'s phone number is: " + friends[name]['phone']
print "%s's phone number is: %s" % (name, friends[name]['phone'])

他の行は完全に問題ないので、発生するエラーはかなり奇妙です。

于 2012-05-04T15:29:14.803 に答える