2011-10-17 8 views
1

Possible Duplicate:
Is there any reason why lVals = [1, 08, 2011] throws an exception?なぜこの辞書定義は構文エラーを起こしますか?

曜日の数字をそれぞれの単語にマッピングする辞書を定義しています。

:以下のコードのように、08と09が98になり、99はすべてのエラーを停止するようにコードを修正し、ハイライト「08」

days = {01:"first", 02:"second", 03:"third", 04:"fourth", 05:"fifth", 06:"sixth", 07:"seventh", 08:"eighth", 09:"nineth", 10:"tenth", 
    11:"eleventh", 12:"twelvth", 13:"thirteenth", 14:"fourteenth", 15:"fifteenth", 16:"sixteenth", 17:"seventeenth", 18:"eighteenth", 
    19:"nineteenth", 20:"twentieth", 21:"twenty-first", 22:"twenty-second", 23:"twenty-third", 24:"twenty-fourth", 25:"twenty-fifth", 
    26:"twenty-sixth", 27:"twenty-seventh", 28:"twenty-eighth", 29:"twenty-nineth", 30:"thirtieth", 31:"thirty-first"} 

:次のコードは、「無効なトークンにSyntaxError」を上げるいくつかの理由

days = {01:"first", 02:"second", 03:"third", 04:"fourth", 05:"fifth", 06:"sixth", 07:"seventh", 98:"eighth", 99:"nineth", 10:"tenth", 
    11:"eleventh", 12:"twelvth", 13:"thirteenth", 14:"fourteenth", 15:"fifteenth", 16:"sixteenth", 17:"seventeenth", 18:"eighteenth", 
    19:"nineteenth", 20:"twentieth", 21:"twenty-first", 22:"twenty-second", 23:"twenty-third", 24:"twenty-fourth", 25:"twenty-fifth", 
    26:"twenty-sixth", 27:"twenty-seventh", 28:"twenty-eighth", 29:"twenty-nineth", 30:"thirtieth", 31:"thirty-first"} 

と出力は次のようになります。

{1: 'first', 2: 'second', 3: 'third', 4: 'fourth', 5: 'fifth', 6: 'sixth', 7: 'seventh', 10: 'tenth', 11: 'eleventh', 12: 'twelvth', 13: 'thirteenth', 14: 'fourteenth', 15: 'fifteenth', 16: 'sixteenth', 17: 'seventeenth', 18: 'eighteenth', 19: 'nineteenth', 20: 'twentieth', 21: 'twenty-first', 22: 'twenty-second', 23: 'twenty-third', 24: 'twenty-fourth', 25: 'twenty-fifth', 26: 'twenty-sixth', 27: 'twenty-seventh', 28: 'twenty-eighth', 29: 'twenty-nineth', 30: 'thirtieth', 31: 'thirty-first', 98: 'eighth', 99: 'nineth'} 

以前に誤ったキーは、辞書の最後に移動しました。ここで何が起こっているかスポット者へ

多くのおかげで、

ジェームズ

答えて

9

は数0が、それはPythonで進数であることを示す整数リテラルの接頭辞です。私は誤って省略して

...、と@larsmansはとても親切に彼のコメントで指摘したように、89除く数字のみ70を含むの数を制限します。

これはPython 2.xの構文ですが、これはPython 3.0の時点では、あなたがここに来たという正確な理由で表面的に変更されています。 PEP 3127には変更の詳細が含まれています。

最も関連ビット:Pythonで

Almost all currently popular computer languages, including C/C++, Java, Perl, and JavaScript, treat a sequence of digits with a leading zero as an octal number. Proponents of treating these numbers as decimal instead have a very valid point -- [...] the entire non-computer world uses decimal numbers almost exclusively.

+0

...明らかに、「08」は有効な8進数ではありません。 +1。 –

1

、オクタルあるとしてそれを表す0と番号を付けます。したがってと9の数字は8進数ではないので、0809はエラーとなります。先頭の0を取り除くだけでうまくいくでしょう。

1

0から始まり数字のみを含む数字はoctalと解釈されます。 8と9は有効な8進数ではありません。 08と09を8と9に置き換えると、コードが機能します。

関連する問題