我需要制作一个不会给我错误的代码,我想要打印再试一次。
我在其他主题学习,但我对此一无所知。 我有这段代码:
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
答案 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
基本上try
,except
语句会阻止异常,让您处理它。
在您的情况下,您希望重复输入请求,因此您应该将输入请求放入处理错误的循环中,并让converser
函数引发异常。