gpt4 book ai didi

python - 引发错误与返回 False python3

转载 作者:行者123 更新时间:2023-11-28 20:08:20 26 4
gpt4 key购买 nike

您好,我最近开始使用 Python 编写代码,我想知道如何处理错误。我做了教程 diveintopython,他在那里使用 raise error 来反馈出了什么问题。这是我的情况:我有一个函数,用于检查表示数字的字符串是否为 7 位或 8 位数字以及其他一些内容

def checkNumber( someNumber ):
''' checks if Number is valid '''
someNumber = str(someNumber);
if not 6 < len(someNumber) < 9:
raise ValueError('number must be either 7 or 8')
if not re.search('^[0-9]{7,8}$', someNumber):
raise ValueError('only digits from 0...9')
sum = 0
if len(pzn) == 7: someNumber = '0' + someNumber
for n, a in list(enumerate(someNumber[:-1], start=1)):
sum += int(a)*n
if someNumber[-1]==str(sum%11):
return someNumber
else:
raise ValueError('not a vaild code')

我独立使用此函数,但我也会从另一个函数调用它,该函数扫描条形码并调用此函数来验证代码。因此,如果扫描编号正确,它应该继续,如果不正确,它应该继续扫描。像我那样做并在扫描函数中放置一个 try/except block 是更好还是我应该返回一个 False

非常感谢

最佳答案

最好抛出异常,这就是异常的用途。

此外,返回 False 将要求您的代码处理测试 0False 之间的差异。突然间,您需要测试函数的返回值。

您的职能似乎确实存在人格 split 。一方面,您将其命名为 checkNumber,并且您的文档声称它正在检查号码是否有效。另一方面,它是转换,改变那个数字,把它转换成一个字符串,如果 pzn 全局,甚至在它前面加上一个 0长度为 7。

如果您的函数所做的只是测试数字是否有效,那么返回一个 bool 值是有意义的。然后,使用异常可能会为您提供有关验证失败性质的更多信息,但如果您不需要该信息, bool 值就足够了。

但是如果您还需要将您的数字转换为不同的类型和格式,您需要重命名您的函数,然后验证错误实际上是正常行为的异常。期望函数返回一个转换后的值,无效输入应该引发异常以指示它由于输入中的某些错误而无法返回正常值。

关于python - 引发错误与返回 False python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13740975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com