我为初学者做了一个关于我的python的讲座,其中某个主题没有得到很好的解释.那这是e做什么的呢?
def x(a, b):
try:
return a / b
except ZeroDivisionError, e:
return 0
Run Code Online (Sandbox Code Playgroud) 我需要执行多个Python语句,其中很少一些可能在执行期间失败,即使在失败后我希望其余的执行.
目前,我正在做:
try:
wx.StaticBox.Destroy()
wx.CheckBox.Disable()
wx.RadioButton.Enable()
except:
pass
Run Code Online (Sandbox Code Playgroud)
如果任何一个语句失败,except将执行并退出程序.但我需要的是即使它失败了它应该运行所有三个语句.
我怎么能用Python做到这一点?
我正在努力熟悉Python的最佳实践.根据Python的Zen,请求宽恕比要求许可更容易,但是,它也说平面比嵌套和可读性更好.你会怎么处理这个问题:
我有3本词典.我有一把钥匙,我想测试钥匙是否在字典中.钥匙只会出现在其中一个中.根据它所在的字典,我想做不同的事情.
使用try/except,我得出以下解决方案:
try:
val = dict1[key]
except KeyError:
try:
val = dict2[key]
except KeyError:
try:
val = dict3[key]
except KeyError:
do_stuff_key_not_found()
else:
do_stuff_dict3()
else:
do_stuff_dict2()
else:
do_stuff_dict1()
Run Code Online (Sandbox Code Playgroud)
根据Python的EAFP原则,这将是一种方法,但它看起来很混乱,并且不是很易读.
一个更简单的解决方案是:
if key in dict1:
val = dict1[key]
do_stuff_dict1()
elif key in dict2:
val = dict2[key]
do_stuff_dict2()
elif key in dict3:
val = dict3[key]
do_stuff_dict3()
else:
do_stuff_key_not_found()
Run Code Online (Sandbox Code Playgroud)
Pythonic处理这样一个案例的方法是什么?我应该坚持EAFP原则,还是平坦且可读性更重要?
下面是我根据输入计算卡路里的代码,在打印语句之后,我想退出代码并无限循环,直到用户输入正确的值。
import sys
def main():
while True:
try:
print("Please enter Age,Weight,Heart Rate and Workout Time ")
Age,Weight,HR,Time = map(eval,input().split(' '))
men = ( (Age * 0.2017) - (Weight * 0.09036) + (HR * 0.6309) - 55.0969 ) * Time / 4.184
women = ( (Age * 0.074) - (Weight * 0.05741) + (HR * 0.4472) - 20.4022 ) * Time / 4.184
print("Men:",men," Calories \nWomen:",women,"Calories \n")
exit()
except:
print("Please enter numbers only \n \n")
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
即使输入值正确并且不退出代码,代码也会转到除非,我错过了什么?
我正在研究扣除金额函数,如果值中 a < b,它应该会引发运行时错误:
这是我的代码
def deduct_amount(a, b):
try:
b - a < 0
except ValueError:
print(a + ' can not be less than' + b)
else:
c = a - b
return c
deduct_amount(8, 12)
Run Code Online (Sandbox Code Playgroud)
我知道我的 try 语句是错误的。如果 a 小于 b,如何抛出值错误
我有下面的代码需要检查是否找到任何对象的可见属性。try- except 块中的每个首字母缩略词函数如果找到则返回一个对象引用,每个都有自己的visible属性。如果未找到任何首字母缩略词对象,我的程序将因调用(例如)DR() 而引发 LookUpError。我觉得必须有一种方法来简化这段代码,这样我就不必指定所有这些单独的 try- except 块,但我无法考虑如何有效地做到这一点。
def detect_planning_workflow_page():
workflow = None
try:
if DR().visible:
workflow = "DR"
except LookupError:
pass
try:
if LL().visible:
workflow = "LL"
except LookupError:
pass
try:
if AZ().visible:
workflow = "AZ"
except LookupError:
pass
try:
if SP().visible:
workflow = "SP"
except LookupError:
pass
try:
if MS().visible:
workflow = "Define Region"
except LookupError:
pass
return workflow
Run Code Online (Sandbox Code Playgroud) 假设我向用户询问一个单词,如果该单词不是字典中的键,那么我想打印“该单词不是字典中的键,请重试”。我将如何使用 try 和 except 来做到这一点?这是我到目前为止所拥有的。
dict = {"These": 1, "are": 2, "words": 3}
while True:
try:
w = input("Enter a word: ")
except:
print("That word is not a key in the dictionary, try again")
else:
print("That word is a key in the dictionary")
Run Code Online (Sandbox Code Playgroud) try:
int(days)
except:
print('Invalid input. A integer value was expected. Try again.')
days = (input("Enter the number of days: ", ))
Run Code Online (Sandbox Code Playgroud)
我如何使这个 try 语句循环直到为真?
我正在尝试使用单位“outlook2000”,但我的Try 语句出现问题 ,我收到Error: E2021 Class type required。如果我在没有这个单元或没有except 的情况下执行我的应用程序,那么一切都很好。
Uses ...,outlook2000;
procedure TForm1.Button1Click(Sender: TObject);
var
S:string;
begin
try
s:='Hello';
Except On E:Exception do
ShowMessage(E.Message);
end;
end;
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释一下出了什么问题吗?我使用 Delphi 10.1 Berlin,Win 10。
try-except ×9
python ×8
delphi ×1
dictionary ×1
exception ×1
if-statement ×1
lookup ×1
outlook ×1
python-2.7 ×1