Задать вопрос
  • Как можно упростить этот код на Python?

    есть замечательный модуль https://docs.python.org/3.5/library/itertools.html
    в котором есть функции работы с комбинаторикой:
    product('ABCD', repeat=2)
    permutations('ABCD', 2)
    combinations('ABCD', 2)
    combinations_with_replacement('ABCD', 2)

    ну и соответственно варианты с получением случайного объекта:
    random_product
    random_permutation
    random_combination
    random_combination_with_replacement


    посмотрите почитайте, это позволит сразу сделать выборку неповторяющихся элементов.

    Именно для избегания сложных if, а в них как понимаю вы проверяете что ингредиенты уникальны, можно воспользоваться set
    if len(NABOR) != len(set(NABOR))
    либо вот таким решением stackoverflow.com/a/5281641 - на больших объектах будет гораздо производительнее.

    вот эти проверки
    if CARD == SLOGNOST[0]:
     elif CARD == SLOGNOST[1]:
    ...

    тоже плохой код, у вас фактически одна и таже логика просто меняется количество элементов зелья, вынесите в конфиг, что такой-то сложности соответствует такоей-то количество элементов, и исходя из этого числа создавайте списки с нужным количеством ингридиентовв и тд и тп

    str(random.choice(SLOGNOST))
    так random.choice и так вернёт строку, зачем ещё вызывать преобразование в строку? (и так несколько раз)
    Ответ написан
    1 комментарий