2017-01-15 34 views
-3

このコードでは、単純な乗算表を生成しようとしています。プログラムは入力を要求し、15までの範囲でその数を倍加し、その数の乗算表を生成する必要があります。 if_name_ == 'メイン'の後:行Iはコロンの後に構文エラーで終わります。私は通常、Python 2でプログラムします。したがって、Python 3は少し新しくなりましたが、違いは何か分かりません。以下は、短いが完全なコードを記載したものです。どんな助けでも大歓迎です。Python 3構文エラー無効な構文

'''Multiplication Table''' 

def multi_table(a): 
    for i in range(1,16): 
     print(' {0} x {1} = {2} '.format(a, i, a*i)) 



if_name_ == '_main_': 
    a = input('Enter a number: ') 
    multi_table(float(a)) 
+3

'if_name_':公式ドキュメントには? 'もし__name__ ==" __main __ "'を意味しましたか? – Maroun

+0

はい、私はコロンの直後にエラーが発生します。 – Bbrown

+1

適切な 'if'ステートメントがないので、コロンでエラーが発生します。構文が間違っているため、*構文*エラーです。 – excaza

答えて

0

@Maroun Marounが言ったように、それはif __name__ == "__main__"でなければなりません。しかし、あなたはそれを必要としません。一番下に書いてください:

'''Multiplication Table''' 

def multi_table(a): 
    for i in range(1,16): 
     print(' {0} x {1} = {2} '.format(a, i, a*i)) 

a = input('Enter a number: ') 
multi_table(float(a)) 

でも動作します。

EDIT:

https://docs.python.org/3/library/main.html

if __name__ == "__main__":

+0

これは、後で 'multi_table'関数を' import 'して他の場所で使用したい場合、入力時にブロックされます。例えば、 [* "if __name__ ==" __main __ ":' do? "](http://stackoverflow.com/q/419163/3001761)。 – jonrsharpe

+0

それは本当の@jonrsharpeですが、もしそれがライブラリでなければならないのなら、彼は入力ファイル – user7185318

+0

と同じファイルに入れてしまいます。その行がなければ正常に動作しましたが、行を2つのアンダースコア私はまだ構文エラーがありました。私はなぜそれを理解しようとしています。 – Bbrown

3
if_name_ == '_main_': 
    a = input('Enter a number: ') 
    multi_table(float(a)) 

する必要があります:変数__name____main__の両方が彼らの周りに2つのアンダースコアを持っており、もしキーワードと条件の開始の間にスペースが存在しなければならないということを

if __name__ == "__main__": 
    a = input('Enter a number: ') 
    multi_table(float(a)) 

注意してください。

+0

'== '__main __':' - 注記のアンダースコア – jonrsharpe

+0

はい、私はまだ私の答えを編集していました。 – Inconnu

+0

*変数 '__name__'と' __main__'の両方*疑問に思うのは '__main__'は変数です。 – iBug