Не работает код для генерации новых значений, которых нет в списке
Ранее я задавал вопрос - ссылка, мне нужно было сгенерировать значение которого нет в списке, спустя немного времени я разобрался и получал абсолютно новый ключ без всяких ошибок с помощью этого кода:
def generateKeyForNewCategory():
categories_Keys = ['41', '42'] # тут существующие ключи
for _ in categories_Keys:
random_category_key = str(randint(41, 43))
if random_category_key not in categories_Keys:
new_category_key = random_category_key
return new_category_key
Сегодня я попытался использовать ещё раз свой код, только уже в другом файле, спустя несколько генераций, я получаю заместо ключа None, я не могу понять в чем проблема или ошибка, так как это абсолютно идентичный код, который я использовал в прошлый раз.
Ответы (2 шт):
я получаю заместо ключа None
Это связано с тем, что вы в if random_category_key not in categories_Keys: проверяете значение, удволетворяющее условию, но если это не так, то ничего не происходит.
Добавьте в конце функции условие для повторного вызова функции (сделайте рекурсию):
if random_category_key not in categories_Keys:
...
else:
return generateKeyForNewCategory()
Обычно такие вещи делают в "бесконечном цикле" пока не выполнится условие выхода:
def generateKeyForNewCategory():
categories_Keys = ['41', '42'] # тут существующие ключи
while True:
random_category_key = str(randint(41, 43))
if random_category_key not in categories_Keys:
new_category_key = random_category_key
return new_category_key
А у вас получается, что если два раза выпало значение из списка, то цикл заканчивается, и функция тоже заканчивается, ничего не вернув, а значит питон считает, что функция вернула None.
