相关疑难解决方法(0)

Python:使用返回值查找错误原因

我正在使用的python模块包含错误代码列表,如下所示: -

DRV_ERROR_CODES = 20001
DRV_SUCCESS = 20002
DRV_VXDNOTINSTALLED = 20003
DRV_ERROR_SCAN = 20004
DRV_ERROR_CHECK_SUM = 20005
DRV_ERROR_FILELOAD = 20006
DRV_UNKNOWN_FUNCTION = 20007
...
Run Code Online (Sandbox Code Playgroud)

我目前只是将返回值与成功错误代码进行比较,以检查进程是否成功.

if atmcd.DRV_SUCCESS==ret:
Run Code Online (Sandbox Code Playgroud)

我想使用返回值并输出究竟导致错误的内容(例如返回值为2004,因此脚本将打印出有扫描错误).有没有办法比较所有这些变量?有没有更好的方法来查找错误?

python variables error-handling module

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

如何进行此枚举类型支持迭代?

在Alec Thomas的回答之后,我使用以下内容创建枚举:

def enum(*sequential):
    enums = dict(zip(sequential, range(len(sequential))))
    return type('Enum', (), enums)
Run Code Online (Sandbox Code Playgroud)

我希望能够获得其中一个枚举的长度.例如,我可以写

>>> Suit = enum('spades', 'hearts', 'diamonds', 'clubs')
>>> Suit.spades
0
>>> Suit.hearts
1
>>> Suit.diamonds
2
>>> Suit.clubs
3
Run Code Online (Sandbox Code Playgroud)

但是没有办法在运行时列出所有枚举值.我希望能够做类似的事情

>>> [s for s in Suit]
[0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我已尝试enum['__iter__']enum()函数内进行分配,但我不知道需要分配哪种对象:

def enum(*sequential):
    enums = dict(zip(sequential, range(len(sequential))))
    enums['__iter__'] = iter(range(len(sequential)))
    return type('Enum', (), enums)
Run Code Online (Sandbox Code Playgroud)

>>> [s for s in Suit]
Traceback (most recent call last):
  File "<stdin>", line 1, in …
Run Code Online (Sandbox Code Playgroud)

python

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

如何执行列表的成对交换?

我想用 python 编写一段小代码,交换列表中的元素,该程序将接受一个列表,并将返回一个交换每对相邻元素位置的列表:位置 0 和 1,位置 2 和 3,等等在。如果列表有奇数个元素,则最后位置的元素保留在 \xe2\x80\x9cin 位置\xe2\x80\x9d。

\n\n
Before: [1,2,3,4,5]\nAfter: [2,1,4,3,5]\n
Run Code Online (Sandbox Code Playgroud)\n\n

这看起来很不Python。Python 的方法是什么?

\n

python

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

如何在Python中实现类似Java的枚举?

说这个的python版本是什么..这是在java中

public static enum Operations {Add, Subtract, Multiply, Divide, None};
Run Code Online (Sandbox Code Playgroud)

我正在将整个程序转换为python,我只是无法弄清楚这一部分

我全班同学

    import java.util.*;

public class Expression
{
    public static enum Operations {Add, Subtract, Multiply, Divide, None};
    int a;
    int b;
    Expression.Operations op;
    public Expression()
    {
        a = 0;
        b = 0;
        op = Expression.Operations.None;
    }
    public Expression(int value1, int value2, Expression.Operations operation)
    {
        a = value1;
        b = value2;
        op = operation;
    }

    public boolean parseString(String expressionString, Map<Character, Integer> vars)
    {
        Scanner scanner = new Scanner(expressionString);

        //Attempt to read …
Run Code Online (Sandbox Code Playgroud)

python java enums

1
推荐指数
3
解决办法
3381
查看次数

使用类在python中定义多个变量

我还是python的新手,这可能会成为那些(愚蠢)无聊的问题之一。但是,任何帮助将不胜感激。我正在编写涉及许多变量的程序,因此我决定使用一个类来封装所有变量(希望随着时间的流逝更容易为我“读取”),但是它无法正常工作。因此,事不宜迟,这里是抓住要点的课程的一部分。

import numpy as np

class variable:
    def __init__(self, length):
        self.length = length # time length`
    def state_dynamic(self):
        length = self.length
        return np.zeros((2, np.size(length)))
    def state_static(self):
        length = self.length
        return np.zeros((2, np.size(length)))        
    def control_dynamic(self):
        length = self.length
        return np.zeros((2, np.size(length)))        
    def control_static(self):
        length = self.length
        return np.zeros((2, np.size(length)))
    def scheduling(self):
        length = self.length
        return np.zeros(np.size(length))
    def disturbance(self):
        length = self.length
        dummy = np.random.normal(0., 0.1, np.size(length))
        for i in range(20):
            dummy[i+40] = np.random.normal(0., 0.01) + 1.
        dummy[80:100] = 0.
        return dummy …
Run Code Online (Sandbox Code Playgroud)

python

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

大多数pythonic方式来存储和使用自己的状态代码

这肯定是一个非常愚蠢的问题(也许有点基于意见),但是我如何创建一个类似枚举的对象来存储错误代码之类的东西,这些代码是常量并且稍后可以在代码中访问?

在我看来,有四种选择:

1)一个状态代码 - 一个变量

STATUS_NEW = 0
STATUS_PENDING = 1
STATUS_DONE = 2
STATUS_ERROR = -1

if some_object.status == STATUS_NEW:
    print 'this object is pretty fresh!'
Run Code Online (Sandbox Code Playgroud)

这对我来说不太好看.

2)包含所有状态代码的字典,其名称为密钥:

STATUS = {'new': 0, 'pending': 1, 'done': 2, 'error': -1}

if some_object.status == STATUS['new']:
    print 'you got the idea.'
Run Code Online (Sandbox Code Playgroud)

这看起来更丑陋,但仍然有一个对象比几个对象更好.

3)一个命名的元组看起来更好,但它在初始化时看起来更糟糕:

STATUS = namedtuple('Status', ['error', 'new', 'pending', 'done'])
STATUS = STATUS(error=-1, new=0, pending=1, done=2)

if some_object.status == STATUS.new:
    print 'looks prettier than using dict!'
Run Code Online (Sandbox Code Playgroud)

4)使用课程:

class Status:
    NEW = …
Run Code Online (Sandbox Code Playgroud)

python

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

Python:aenum 枚举生成错误

今天我尝试使用 aenum 进行枚举(就像这个答案: https: //stackoverflow.com/a/1695250/4720441):

orientation = Enum('red', 'yellow', 'green', 'orange')

但这在 aenum 库中产生了一个错误:

文件“C:\Python\27\lib\site-packages\aenum__init__.py”,第 1417 行,在 _get_mixins_ issubclass(base, Enum) 和 TypeError: issubclass() arg 1 必须是一个类

我怎样才能解决这个问题?

python enums

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

标签 统计

python ×7

enums ×2

error-handling ×1

java ×1

module ×1

variables ×1