Как можно оптимизировать код в условии?

Рейтинг: -3Ответов: 3Опубликовано: 01.03.2025

Это лишь для примера: у меня большой список, и хочется понять, как можно сократить код.

import random

my_list = ["b1", "b2", "b3", "b4"]

k = random.choice(my_list)

r_st = sum([random.randrange(1, 4) for i in range(2)])
r_lt = sum([random.randrange(1, 4) for i in range(2)])

if k == "b1":
    print(str(r_st) + str(r_lt))
elif k == "b2":
    print(str(r_st + 10) + str(r_lt))
elif k == "b3":
    print(str(r_st) + str(r_lt + 20))
elif k == "b4":
    print(str(r_st + 10) + str(r_lt + 40))

Ответы

▲ 1

Можно коэффициенты вынести в варианты списка:

import random

my_list = [
    ("b1", 0, 0),
    ("b2", 10, 0),
    ("b3", 0, 20),
    ("b4", 10, 40)
]

k, dr_st, dr_lt = random.choice(my_list)

r_st = sum([random.randrange(1, 4) for i in range(2)])
r_lt = sum([random.randrange(1, 4) for i in range(2)])
print(f'{r_st + dr_st}{r_lt + dr_lt}')
▲ 1

В вашем коде я сделал только минимальные изменения, чтобы ответить на ваш вопрос:

import random

my_list = [(0, 0), (10, 0), (0, 20), (10, 40)]

i, j = random.choice(my_list)

r_st = sum([random.randrange(1, 4) for _ in range(2)])
r_lt = sum([random.randrange(1, 4) for _ in range(2)])


print(str(r_st + i) + str(r_lt + j))

Обьяснение

Вместо элементов в вашем списке my_listя применил прямо пары чисел, которые хотите добавлять к r_st и r_lt и немножко изменил вашу команду

k = random.choice(my_list)

на

i, j = random.choice(my_list)

Никакого условия затем уже не нужно, т. к. в команде

print(str(r_st + i) + str(r_lt + j))

включены все 4 возможности.

▲ -1

Если Вы про блок if, то можете попробовать использовать оператор math-case