我在编译器中打印程序时遇到问题,我没有收到任何错误消息,但程序没有运行。我真不明白为什么?
#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()
答案 0 :(得分:6)
在文件末尾添加
if __name__ == '__main__':
currencyConvert()
就自己而言,没有任何缩进。一旦脚本独立运行,这实际上将调用您已定义的过程。
答案 1 :(得分:3)
将此添加到程序的末尾:
if __name__ == '__main__':
currencyConvert()
答案 2 :(得分:3)
在您的脚本结束时,只需添加以下内容:
if __name__ == '__main__':
currencyConvert()
这意味着如果它是主要部分,它将是True
。如果您不添加此if
,则在将脚本作为模块导入时将调用您的函数。
然后使用python script.py
调用您的脚本,例如。
答案 3 :(得分:1)
三个答案显示您使用if __name__ == '__main__':
,但我没有看到他们解释您为何这样做。
当您使用.py
运行python
文件时,它会逐行执行文件中的每个语句。当然,没有缩进的python语句具有最高的范围。您可能会将它们视为“最重要”的线条。它们总是被执行,不像条件语句下面的行不会被评估为True
。
您没有看到您的函数被调用,因为您拥有的语句是def
,这意味着def
之后的所有缩进代码行都会跟return
或与def
处于同一缩进级别的代码行将被视为函数的定义,并且在调用该函数之前不会执行。 (换句话说,def
只能执行函数。
如果你写了这个,你会看到函数execute:
def currencyConvert():
# your code here
currencyConvert()
但是,您看到其他用户告诉您使用if __name__ == '__main__':
的原因是python import
语句的行为。 import
告诉程序执行导入模块中的每一行代码 - 这意味着如果您有上述代码,如果导入则执行 currencyConvert()
你的档案。
解决此问题的方法是使用if __name__ == '__main__':
条件,如果您的脚本是您正在运行的程序,则将放置您希望运行的所有代码,即调用的.py
文件使用python
或您在IDE中运行的文件。这告诉程序在if
作为“主”模块运行时只执行{{1}}下面的代码。
有关详情,请参阅this question。在此期间,做其他三个人告诉你要做的事情来让你的程序运作:)