您好,我是 Python 和学习基础知识的新手。我很想了解 Python 中的 try/except 语句,我想问一下我是否应该在下面提到的 try 块/部分中保留尽可能少的内容(请参阅以下代码正确工作),或者尽量在 try 块中保留/部分(请参阅以下代码在我输入任何字符串时无法正常工作,但在我输入浮点数/整数时它工作正常)。
所以,这两个场景几乎相同,但是当我输入一个字符串时,另一个代码(我保留最小代码)给了我一个错误。
为什么要这样做?在这种情况下,如果我想在 try/except 块中保留尽可能少的内容,我该怎么办?任何线索将不胜感激。我保留最少代码行的第二个代码的替代正确解决方案是什么?- 我应该对其进行哪些调整才能为我工作?请帮忙。
NameError: name 'fahr' is not defined
Run Code Online (Sandbox Code Playgroud)
***# Following Code Working Properly:***
inp = input('Enter Fahrenheit Temperature:')
try:
fahr = float(inp)
cel = (fahr - 32.0) * 5.0 / 9.0
print(cel)
except:
print('Please enter a number')
Run Code Online (Sandbox Code Playgroud)
***# Following Code Not Working Properly:***
inp = input('Enter Fahrenheit Temperature:')
try:
fahr = float(inp)
except:
print('Please enter a number')
fahr = float(inp) # Even if I comment it, it doesn't make any difference when it comes to entering float in an input but it raises red flag if I enter string.
cel = (fahr - 32.0) * 5.0 / 9.0
print(cel)
Run Code Online (Sandbox Code Playgroud)
小智 5
输入try:块的代码最好只包含可能直接产生相关错误的位。这样,就可以更轻松地跟踪其来源,并且不会被任何周围的和可能是安全的代码分心。
第一段代码正确运行,因为当第 4 行出现错误时,控制流直接跳转到except块,因此任何依赖于该fahr变量的语句都不会受到影响。但是,在第二个代码段中,如果引发错误并且控制流跳转到 except 块,则fahr变量不会被定义,使得依赖于它的后续语句引发NameError您所说的错误。一个更安全的方法是定义一个替代的、默认的fahr = 0,例如在except块中或使用一个else:块,如果块中没有出现错误,控制流就会跳转到那里try:。
始终尝试使您预期的错误可能在您的代码中显式提出。这是通过将错误组的基类放在except关键字之后和冒号之前。例如,
except ValueError:
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |