如何在Python中使用Exception?

2024-09-28 13:35:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要做一个代码,不给我一个错误,我想打印再试一次,例如。你知道吗

我在其他方面也学到了,但我对此一无所知。 我有这个密码:

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

Tags: 代码密码returndef错误exceptionfloatprint
2条回答

首先,你们必须不要在python2中使用input。 如果要获取整数,请使用int(raw_input()),否则请使用float(raw_input())input没有将字符串转换成它执行的数字,因此你在使用它的程序的安全性上制造了一个巨大的漏洞。你知道吗

另一个可以用来获取python内置数据类型作为输入的函数是^{}。你知道吗

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

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函数引发异常。你知道吗

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

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

相关问题 更多 >

    热门问题