1

我在 python 中有一个函数可以对字符串进行错误检查。如果函数发现错误,它将返回一个带有错误代码和该错误标识符的元组。稍后在程序中我有处理错误的函数。它将元组接受为两个变量。

errCode, i = check_string(s,pathType)

check_string 是产生元组的函数。如果没有错误,我想要它做的是只返回零。当返回零时,上面的代码似乎失败了,因为变量 i 没有任何内容。

有没有一种简单的方法可以让它工作,或者如果没有发现错误,我只需要让程序返回一个 0 和 0 的元组?

4

4 回答 4

3

我会为此使用异常系统。

class StringError(Exception):
    NO_E = 0
    HAS_Z = 1

def string_checker(string):
    if 'e' not in string:
        raise StringError('e not found in string', StringError.NO_E)
    if 'z' in string:
        raise StringError('z not allowed in string', StringError.HAS_Z)
    return string.upper()

s = 'testing'
try:
    ret = string_checker(s)
    print 'String was okay:', ret
except StringError as e:
    print 'String not okay with an error code of', e.args[1]
于 2012-07-29T10:48:38.527 回答
1

为什么不在尝试检索值之前简单地检查元组的长度?

err_tup = check_String(s, pathType)
if len(err_tup) == 2:
    errCode, i = err_tup
else: # assuming it can only be 1 otherwise
    errCode = err_tup

这无需对生成元组的其余代码进行任何更改即可工作,并且语义清晰。

基于“简单胜于复杂”。

于 2012-07-29T10:43:39.933 回答
1

您可以使用 None 作为错误的值

def check_string(s,pathType):
    # No error
    return (None, i)
于 2012-07-29T10:52:41.737 回答
0

如果您要返回零:

foo = func()
if not foo:
    print 'No errors'
else:
    # foo is tuple
于 2012-07-29T11:07:10.670 回答