在程序的多个部分捕获 ValueError

Catch ValueError in multiple parts of program

我试图在变量变为负数时引发 ValueError。我的问题是这个变量改变了我程序中几个部分的值。我怎样才能只用一个 raise 语句获得与下面相同的结果?

import random

a = 5

while True:

    a -= random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')

    a += random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')

    a -= random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')

    a += random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')

谢谢

由于必须在错误变为负数时引发错误,因此每次减小变量时都必须检查 ValueError。您不需要在添加后检查 ValueError,因为如果它不是负数,则添加后它也不会是负数。如果你只想在你的代码中放置一次 raise ValueError('Cannot be negative') 行,那么这是一种方法:

import random

a = 5

while True:

    a -= random.randint(0,10)
    if a < 0:
        raise ValueError('Cannot be negative')
    a += random.randint(0,10)

我建议为您的变量使用 getter/setter,并检查 setter。这正是它们存在的原因