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. 如果您不添加 this if,当脚本作为模块导入时,您的函数将被调用。

python script.py然后使用例如调用您的脚本。

于 2013-06-11T17:15:49.687 回答
1

三个答案显示您使用if __name__ == '__main__':,但我没有看到他们解释您为什么这样做。

当您使用 运行.py文件时python,它会逐行执行文件中的每个语句。当然,没有缩进的 python 语句具有最高的范围。您可能会将它们视为“最重要”的行。它们将始终被执行,不像条件语句下面的行不计算为True.

你看不到你的函数被调用,因为你拥有的语句是 a def,这意味着在 and 之后的每一行缩进的代码行def,直到 areturn或与缩进级别相同的代码def行将被视为函数的定义,并且在调用该函数之前不会执行。(换句话说,该函数根本不由 .)执行def

如果你写了这个,你会看到函数执行:

def currencyConvert():
    # your code here

currencyConvert()

但是,您看到其他用户告诉您使用if __name__ == '__main__':的原因是 pythonimport语句的行为。import告诉程序执行导入模块中的每一行代码——这意味着如果你有上面的代码,如果你导入你的文件就会执行currencyConvert()

解决这个问题的方法是使用if __name__ == '__main__':条件,如果您的脚本是您正在运行的程序,您将在其中放置您希望运行的所有代码,即.py调用python的文件或您在 IDE 中运行的文件。这告诉程序仅在if作为“主”模块运行时执行下面的代码。

有关更多信息,请参阅此问题。与此同时,按照其他三个人告诉你的去做来让你的程序正常工作:)

于 2013-06-11T18:14:19.520 回答