我正在编写一个代码来解决二次公式,需要异常处理,以便丢失命令
检测到行参数。在except IndexError:
块中,而不是退出
您应该使用input()
程序询问用户缺少的输入数据。它不适用于以下代码。有人有什么想法吗
from math import sqrt
import sys
print('This program will solve the quadratic formula with given values, please enter below.')
try:
a=float(sys.argv[1]) #first system argument
b=float(sys.argv[2]) #second system argument
c=float(sys.argv[3]) #third system argument
d=b**2-4*a*c #discriminant
x1=((-b+sqrt(d))/2*a) #first solution
x2=((-b-sqrt(d))/2*a) #second solution
except IndexError:
raise IndexError(
'Oops! Looks like you have not entered all values. Try again.') #request user input
a=input(sys.argv[1]) #first system argument
b=input(sys.argv[2]) #second system argument
c=input(sys.argv[3]) #third system argument
d=b**2-4*a*c #discriminant
x1=((-b+sqrt(d))/2*a) #first solution
x2=((-b-sqrt(d))/2*a) #second solution
print(f'The quadratic formula with used a,b,c values gives two roots {x1:.2f} and {x2:.2f}')
您正在catch块内引发un异常:
您可以删除它,并使用input()或类似工具提示用户此消息。例如:
我看到了几种改进原始代码的方法:
raise
之后的语句永远不会执行float()
转换字符串可能引发ValueError
sys.argv[n]
将抛出一个错误sqrt()
将抛出一个ValueError
以下代码通过以下方式修复这些问题:
ValueError
李>相关问题 更多 >
编程相关推荐