我正在使用的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,因此脚本将打印出有扫描错误).有没有办法比较所有这些变量?有没有更好的方法来查找错误?
在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 编写一段小代码,交换列表中的元素,该程序将接受一个列表,并将返回一个交换每对相邻元素位置的列表:位置 0 和 1,位置 2 和 3,等等在。如果列表有奇数个元素,则最后位置的元素保留在 \xe2\x80\x9cin 位置\xe2\x80\x9d。
\n\nBefore: [1,2,3,4,5]\nAfter: [2,1,4,3,5]\nRun Code Online (Sandbox Code Playgroud)\n\n这看起来很不Python。Python 的方法是什么?
\n说这个的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的新手,这可能会成为那些(愚蠢)无聊的问题之一。但是,任何帮助将不胜感激。我正在编写涉及许多变量的程序,因此我决定使用一个类来封装所有变量(希望随着时间的流逝更容易为我“读取”),但是它无法正常工作。因此,事不宜迟,这里是抓住要点的课程的一部分。
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) 这肯定是一个非常愚蠢的问题(也许有点基于意见),但是我如何创建一个类似枚举的对象来存储错误代码之类的东西,这些代码是常量并且稍后可以在代码中访问?
在我看来,有四种选择:
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) 今天我尝试使用 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 必须是一个类
我怎样才能解决这个问题?