如何在Python中使用Except Exception?

时间:2013-01-22 13:00:55

标签: python exception printing except

我需要制作一个不会给我错误的代码,我想要打印再试一次。

我在其他主题学习,但我对此一无所知。 我有这段代码:

def conversor(anosluz):
    try:
        km = float(anosluz * (9.459 * 10**12)) 
        return km
    except Exception, e:
        print 'Ooops! O valor que inseriste nao e o correcto, tenta de novo.', e


if __name__=='__main__':
    anosluz = input('Insira a distancia em anos luz: ')
    resultado = conversor(anosluz)
    print resultado

2 个答案:

答案 0 :(得分:2)

将代码分为输入/输出和计算:

def conversor(anosluz):
    # just convert the given anosluz into km
    km = anosluz * (9.459 * 10**12) 
    return km


if __name__=='__main__':
    while True:
        # repeat until *break*
        anosluz = raw_input('Insira a distancia em anos luz: ')
        try:
            resultado = conversor(float(anosluz))
        except ValueError, e:
            # oh, conversor raised an exception
            print 'Ooops! O valor que inseriste nao e o correcto, tenta de novo.', e
        else:
            # no exception, print result and exit
            print resultado
            break

答案 1 :(得分:1)

首先,你必须在python2中使用input。 如果要获取整数,请使用int(raw_input()),否则使用float(raw_input())input 将字符串转换为执行代码的数字,因此您使用它在程序的安全性中创建了一个巨大漏洞。

您可能用来获取python的内置数据类型作为输入的另一个函数是ast.literal_eval

其次,你可以使用一些循环:

result = None
while True:
    num = raw_input("Insert number: ")
    try:
        result = float(num) * (9.459 * 10**12)
    except Exception:
        print "Try again!"
    else:
        break
print "The result is: ", result

基本上tryexcept语句会阻止异常,让您处理它。 在您的情况下,您希望重复输入请求,因此您应该将输入请求放入处理错误的循环中,并让converser函数引发异常。