Как сгенерировать ключ с помощью randint которого нет в списке

У меня есть переменная в которой хранится список с ключами строкового типа 412, 413. keys_now = ['412', '413'] Мне необходимо сгенерировать новый ключ в диапазоне от 411 до 415, то есть, чтобы новый ключ не был в списке keys_now.

У меня как-то ранее получилось это сделать, но я уже не помню, как правильно всё написать.

Сейчас у меня есть функция generateKeyForNewCategory(categories), которая неправильно работает.

def generateKeyForNewCategory(categories):
    categories_Keys = getCategoriesKeys(categories)

    for _ in categories_Keys:
        random_category_key = str(randint(411, 415))
        if random_category_key not in categories_Keys:
            new_category_key = random_category_key

    print(new_category_key)

Ответы (2 шт):

Автор решения: Maxim Chyorny

Это можно сделать так:

async def generateKeyForNewCategory():
    categories_Keys = [] # тут существующие ключи

    for _ in categories_Keys:
        random_category_key = str(randint(411, 415))
        if random_category_key not in categories_Keys:
            new_category_key = random_category_key
            return new_category_key
→ Ссылка
Автор решения: Tehnorobot

Я предложу ещё один вариант (без функции getCategoriesKeys и с циклом while) :

from random import randint

lst = ['412', '413']

def generateKeyForNewCategory(categories):
        while True:
            random_category_key = str(randint(411, 415))
            if random_category_key not in categories:
                new_category_key = random_category_key
                categories.append(new_category_key)
                break
        return new_category_key # также можно вывести список с добавленным значением

print(generateKeyForNewCategory(lst)) 

Кстати, можно и рекурсией обойтись:

from random import randint

lst = ['412', '413']

def generateKeyForNewCategory(categories):
        
        random_category_key = str(randint(411, 415))
        if random_category_key not in categories:
            
            new_category_key = random_category_key
            categories.append(new_category_key)
            
            return new_category_key
        else:
           return generateKeyForNewCategory(categories)
           

print(generateKeyForNewCategory(lst)) 
→ Ссылка