我需要为多项式函数加载属性,但是它以不同的形式加载。
在作业中,我有3个表单值,但我不知道如何读取所有这些值。其中一个输入为list(),下一个输入为元素,最后一个输入多项式的次数(这对我来说是最大的问题)。
p1 = Polynomial([1,-3,0,2])
p2 = Polynomial(1,-3,0,2)
p3 = Polynomial(x0=1,x3=2,x1=-3)
>>> print(*p*)
2x^3 - 3x + 1
我已经尝试过类似的方法:
class Polynomial(object):
def __init__(self,*X):
self.x = X
def __str__(self):
index = 0
while True:
element = element+self.x[index]+"x^"+index
但是那不是第三种情况,也不适用于第一和第二种情况。
答案 0 :(得分:0)
使用
window.location.origin
在第一种情况下,def __init__(self, *args, **kwargs):
self.args = args
self.kwargs = kwargs
将包含args
(因此您想操纵[[1,-3,0,2]]
)
在第二种情况下,args[0]
将包含args
在最后一种情况下,[1,-3,0,2]
将包含kwargs
在最后一种情况下,要将{ x0: 1, x3: 2, x1: -3 }
转换为所需的列表(IE kwargs
),可以进行
[1,-3,0,2]
这将为您提供所需的[kwargs.get("x0", 0), kwargs.get("x1", 0), kwargs.get("x2", 0), kwargs.get("x3", 0)]
值的列表,在右键处,如果没有,则为0。 (更合适的方式:kwargs
)
答案 1 :(得分:0)
为了按指定定义类的构造函数,您需要它能够在给定args时在列表元素与多个元素之间进行排序,或者在给定** kwargs时能够在多个关键字参数之间进行排序。
假设用户没有搞砸输入,这将是一个有效的示例:
class Polynomial:
"""
Assuming max. degree is always 3
"""
def __init__(self, *args, **kwargs):
if args:
if len(args) == 1: # here user gave a list
self.x0 = args[0][0]
self.x1 = args[0][1]
self.x2 = args[0][2]
self.x3 = args[0][3]
elif len(args) == 4: # here we have the four coefficients
self.x0 = args[0]
self.x1 = args[1]
self.x2 = args[2]
self.x3 = args[3]
elif kwargs: # if args are not present, we check if keywords arguments are
self.x0 = kwargs['x0']
self.x1 = kwargs['x1']
self.x2 = kwargs['x2']
self.x3 = kwargs['x3']
这是有关参数处理的教程:https://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/
现在您可以对其进行修改,以便您考虑多个学位,缺少关键字,输入错误等... 有时,输入检查和清理可能非常复杂,因此需要使用其他方法来定义整个
。