Мне не нравится использовать много операторов IF. Вот то, с чем я сейчас играю, в мире необходимости использовать много операторов IF для этого:
Сначала несколько переменных ...
pick_level = 1
lockpicking_level1_maxxp = 40
lockpicking_level2_maxxp = 70
lockpicking_level3_maxxp = 100
Теперь мы можем взломать замок. Успешный выбор происходит, когда выбрано случайное число от 1 до чего-либо, вплоть до максимального xp текущего уровня навыка взлома, деленного на 2. Так что для уровня 1 это что-то между 1 и 20 - уровень 2, что-то между 1 и 35 и уровень 3, что-то между 1 и 50. Вот как это будет выглядеть с операторами IF:
x = random.randint(1, 100)
if pick_level == 1:
if x not in range(1, (lockpicking_level1_maxxp / 2)):
print 'You failed to pick the lock'
...
elif pick_level == 2:
if x not in range(1, (lockpicking_level2_maxxp / 2)):
etcetc
Что я хотел бы сделать, так это определить xp на основе значения pick_level и не выполнять кучу операторов IF, задающих один и тот же вопрос снова и снова. Это будет выглядеть примерно так (используя серьезные акценты, как в bash):
if x not in range(1, (lockpicking_level`pick_level`_maxxp / 2)):
Таким образом, я могу избежать всех операторов IF, если код автоматически станет 'lockpicking_level1_maxxp', 'lockpicking_level2_maxxp' или 'lockpicking_level3_maxxp' на основе любого значения pick_level.
Прошло уже много времени с тех пор, как я делал bash-скрипты, поэтому моя память о том, как это работает, может быть немного не такой. Также я знаю, что `` в Python до версии 3 - это то же самое, что и использование repr (), так что это не то, как это сделать. Есть ли способ, которым я могу это сделать, или я застрял, писать повсюду некрасивые заявления IF?
Полагаю, я мог бы использовать диктовку как таковую:
lockpicking_maxxp = {1:20, 2:35, 3:50}
...
if x in range(1, lockpicking_maxxp[pick_level]):
... но я не знаю, буду ли я именно таким образом настраивать свою базу данных навыков (хотя , вероятно, окажется файлом JSON. Я люблю JSON.)
Большое спасибо за ваше время. Я с нетерпением жду возможности узнать больше об этой идее.