0

コンパイラでプログラムを印刷する際に問題が発生しています。エラー メッセージは表示されませんが、プログラムは実行されません。私はなぜ本当に見ることができませんか?

#1 USD = 0.7617 Euro
#1 Euro = 1.3128 USD

def currencyConvert():
    userChoice = raw_input ("Vad vill du konvertera? 1)USD -> Euro 2) Euro -> USD")
    if userChoice == "1":
        userUSD = input ("Hur mycket vill du konvertera ange i USD?")
        Euro = userUSD * 0.7617
        print "USD %0.2f", userUSD, "= %0.2f", Euro, "Euro"
    elif userChoice == "2":
        userEuro = input ("Hur mycket vill du konvertera ange i Euro?")
        USD = userEuro * 1.3128 
        print "%0.2f", userEuro, " Euro = USD %0.2f", USD
    else:
        print "error du angav fel val, försök igen ange val 1 eller 2"
        currencyConvert()
4

4 に答える 4

6

ファイルの最後に、追加します

if __name__ == '__main__':
    currencyConvert()

インデントなしで、それ自体で。これにより、スクリプトが独立して実行されるとすぐに、定義したプロシージャが実際に呼び出されます。

于 2013-06-11T17:15:13.603 に答える
3

これをプログラムの最後に追加します。

if __name__ == '__main__':
    currencyConvert()
于 2013-06-11T17:15:41.953 に答える
3

スクリプトの最後に次のようなものを追加するだけです:

if __name__ == '__main__':
    currencyConvert()

ということは、本編なら ということになりますTrue。これを追加しないifと、スクリプトがモジュールとしてインポートされたときに関数が呼び出されます。

python script.py次に、たとえばを使用してスクリプトを呼び出します。

于 2013-06-11T17:15:49.687 に答える
1

を使用することを示す3つの回答がありますがif __name__ == '__main__':、なぜこれを行うのかを説明しているとは思いません。

.pyでファイルを実行すると、ファイルpython内の各ステートメントが 1 行ずつ実行されます。もちろん、インデントのない python ステートメントのスコープは最高です。それらは「最も重要な」行と考えることができます。に評価されない条件ステートメントの下の行とは異なり、それらは常にTrue実行されます。

ステートメントが a であるため、関数が呼び出されていません。つまり、 and にdef続くすべてのインデントされたコード行または a と同じレベルのインデントにあるコード行は、関数の定義であり、その関数が呼び出されるまで実行されません。(つまり、関数は単に によって実行されません。)defreturndefdef

これを書いた場合、関数が実行されるのを見るでしょう:

def currencyConvert():
    # your code here

currencyConvert()

ただし、他のユーザーが使用するように言っている理由if __name__ == '__main__':は、pythonimportステートメントの動作です。importは、インポートされたモジュール内のコードのすべての行を実行するようにプログラムに指示します。つまり、上記のコードがある場合、ファイルをインポートすると実行さ れます。currencyConvert()

これを修正する方法は、if __name__ == '__main__':条件を使用することです。スクリプトが実行中のプログラムである場合、実行したいすべてのコードを配置します。つまり、で.py呼び出されpythonたファイルまたは IDE で実行したファイルです。ifこれは、プログラムが「メイン」モジュールとして実行されているときに、その下のコードのみを実行するようにプログラムに指示します。

詳細については、この質問を参照してください。それまでの間、他の 3 人があなたのプログラムを動作させるように指示したことを実行してください :)

于 2013-06-11T18:14:19.520 に答える