Поймать ValueError в нескольких частях программы - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь поднять 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')

Спасибо

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Я бы предложил использовать метод получения / установки для вашей переменной и проверить его. Это именно та причина, по которой они существуют

0 голосов
/ 31 марта 2019

Поскольку вы должны выдавать ошибку только тогда, когда она становится отрицательной, вы должны проверять 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...