在这个程序中使用try和except在这个python中

时间:2015-12-05 21:46:32

标签: python python-3.x try-catch except

您能否告诉我为什么尝试以及以下代码中使用的除外? 为什么得分= -1?我的意思是为什么只有-1

inp = input('Enter score: ')
    try:
        score = float(inp)
    except:
        score = -1

if score > 1.0 or score < 0.0:
       print ('Bad score')
   elif score > 0.9:
     print ('A')
   elif score > 0.8:
     print ('B')
   elif score > 0.7:
     print ('C')
   elif score > 0.6:
     print ('D')
   else:
     print ('F')

我们不能使用以下代码,除了命令之外没有尝试。

 score = float(input('Enter score: '))
   if score > 1.0 or score < 0.0:
       print ('Bad score')
   elif score > 0.9:
       print ('A')
   elif score > 0.8:
       print ('B')
   elif score > 0.7:
       print ('C')
   elif score > 0.6:
       print ('D')
   else:
       print ('F')

2 个答案:

答案 0 :(得分:4)

如果用户输入了无法转换为浮点数的内容,程序将以异常停止。 try捕获此内容并使用默认值。

这样可行:

inp = input('Enter score: ')
try:
    score = float(inp)
except ValueError:
    print('bad score')

您的版本:

score = float(input('Enter score: '))
if score > 1.0 or score < 0.0:
     print ('Bad score')
如果用户输入ValueError

会在此行float(input('Enter score: '))上抛出abc。您的程序将在您打印Bad score'之前停止。

答案 1 :(得分:2)

try-except块存在,因为用户可能输入的内容不是有效的浮点数。例如,“无”。在这种情况下,python将抛出ValueError。使用不受限制的except是非常糟糕的样式,因此代码应该已经读取

try:
    score = float(inp)
except ValueError:
    score = -1

它设置为-1,因为其余代码将负分数视为非法输入,因此任何非法操作都会在不终止程序的情况下获得分数。