0

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

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

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
4

2 回答 2

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
于 2013-01-22T13:05:08.277 回答
1

首先你不能input在python2中使用。如果要获取整数使用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

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

于 2013-01-22T13:04:48.613 回答