Как можно уменьшить размер строк в условии?
Это лиш для примера, просто у меня большой список, и хочется понять как можно сократить.
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))
Ответы (3 шт):
Автор решения: Ivan Ivanov
→ Ссылка
Если Вы про блок if, то можете попробовать использовать оператор math-case
Автор решения: Be3y4uu_K0T
→ Ссылка
Можно коэффициенты вынести в варианты списка:
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}')
Автор решения: MarianD
→ Ссылка
В вашем коде я сделал только минимальные изменения, чтобы ответить на ваш вопрос:
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 возможности.