小编S. *_*gee的帖子

Python - 使用异常提升进行参数检查

我试图将异常提升代码块写入我的Python代码,以确保传递给函数的参数满足适当的条件(即使参数成为必需,类型检查参数,建立参数的边界值等等).我很满意地理解如何手动引发异常以及处理异常.

from numbers import Number

def foo(self, param1 = None, param2 = 0.0, param3 = 1.0):
   if (param1 == None):
      raise ValueError('This parameter is mandatory')
   elif (not isinstance(param2, Number)):
      raise ValueError('This parameter must be a valid Numerical value')
   elif (param3 <= 0.0):
      raise ValueError('This parameter must be a Positive Number')
   ...
Run Code Online (Sandbox Code Playgroud)

这是Python中可接受的(经过验证的)参数检查方式,但我不得不怀疑:由于Python除了if-then-else语句之外没有编写Switch-case的方法,是否有更有效或更正确的方法执行此任务?或者实施长期if-then-else语句是我唯一的选择?

python if-statement exception typechecking

6
推荐指数
1
解决办法
1945
查看次数

Python - Pandas 输出限制列

在处理 Pandas 时,我试图打印对象运动学和角度状态的分析。我这样做的代码如下:

def displayData(tList, xList, zList, dxList, dzList, thetaList, dthetaList, Q_sList):
    states = pd.DataFrame({ 't' : tList,
                            'x' : xList,
                            'z' : zList,
                            'dx' : dxList,
                            'dz' : dzList,
                            'theta' : thetaList,
                            'dtheta' : dthetaList,
                            'Q_s' : Q_sList})

    print states[['t', 'x', 'z', 'dx', 'dz', 'theta', 'dtheta', 'Q_s']]
Run Code Online (Sandbox Code Playgroud)

但是,当要求打印数据时,输出将列分解到某个点之外:

          t           x           z          dx         dz     theta  \
0     0.000 -500.000000 -100.000000  100.000000  -0.000000  0.000000   
1     0.005 -499.500000 -100.000000   99.999983   0.057692 -0.000577   
2     0.010 -499.000000  -99.999712   99.999933   0.115329 -0.001153
...     ...         ... …
Run Code Online (Sandbox Code Playgroud)

python io dataframe pandas

6
推荐指数
1
解决办法
893
查看次数

四元数在3d模型上的加法,减法和除法运算

我只是在3D游戏编程中更深入地使用四元数(是的,我知道矩阵并且它们没问题,但我们总是要学习一些新东西),所以,我们可以像这样旋转一些对象Pout = q*Pin*conjug(q),q在哪里是四元数,Pin是一个对象(假设我们正在使用一些框架,这个类是为我们定义的)Vector3类,conjug(q)是它的共轭后的q四元数,最后Pout是新的Vector3的对象,我们得到了在旋转初始Vector3的对象之后Pin通过一些角度α(或theta,无论你喜欢什么).另外,我知道有一种方法可以组合旋转,如下所示:q_final = q2*q1(这表示由alfa1旋转,然后由alfa2角度旋转).最后,点积表示2个四元数之间的角度,比方说球体.这对我来说很清楚.我的问题将涉及分裂,加法和减法等问题.

我的问题是:有人可以告诉我,他们在3D编程中代表什么(划分,添加,减去四元数操作)?它们将如何影响3D模型?

先谢谢您的回答.

ps如果你(DarenW,bensiu,Dharmendra,Uwe Keim,Jennis)无法理解这个问题,请留下这个话题.有人可能会有答案.谢谢.

3d quaternions graphics3d

5
推荐指数
1
解决办法
9053
查看次数

Python - 迭代传递给函数的参数

假设我有以下示例:

class foo:
   ...
   def bar(self, w, x, y, z, ...):
      self.w = w
      self.x = x
      self.y = y
      self.z = z
      ...
Run Code Online (Sandbox Code Playgroud)

我希望通过参数循环将n个属性赋值行减少bar()到一个赋值行集setattr().为此目的,有没有一种好方法可以循环通过所述论点?

我希望保留已定义的参数名称,以便限制传递给函数的参数数量以及传递它们的顺序.我也明白函数可以像对象一样处理 ; 那么有可能获得一个已定义参数的列表作为函数的属性并迭代它吗?

python arguments variable-assignment setattr

5
推荐指数
1
解决办法
2591
查看次数

对象保留先前循环迭代的信息

我有一个叫做的类run_c,用于初始化和执行运动学模拟的运行.我将默认值分配给执行之前的属性run_c,例如.所有这一切都是提取用户输入值,聚合到字典中,并将它们分配给相应的属性(如果它们存在).例如...xrun_c.__init__()__init__()run_c

import vars.Defaults as dft
class run_c:

   ...
   dt     = dft.dt
   x      = dft.x0
   states = [ [], [], [], [] ]
   ...

   def __init__(self, input):
      for key in input.keys():
         if hasattr(self, key): setattr(self, key, input[key])
      ...
      self.execute()
Run Code Online (Sandbox Code Playgroud)

run_c.states是一个列表,用于记录run_c属性值随时间步长变化的列表.之后,run_c.execute()我在内部存储xstates[1],递增时间步长dt,并x使用速度和时间步长进行更新.这很简单,对吗?...

不过,这是问题的开始.第一次run_c创建,初始化和执行实例时,它运行完美.但是,我通过基于从JSON文件读取的列表创建,初始化和执行多个运行来操作此模拟.因此,在驱动程序模块中......

from Run import run_c
def main():
   ...
   for runEntry in runList:
      currRun = run_c(runEntry)
      ...
   ...
Run Code Online (Sandbox Code Playgroud)

会发生的是, …

python

2
推荐指数
1
解决办法
525
查看次数