Хорошо, так что я получаю: вы генерируете случайный счет силы.Вы хотите сравнить его со словарем, который определяет связь между статической оценкой и модификатором.Должно быть достаточно просто.Попробуйте это:
for key in Ability_Score_Modifiers:
if Ability_Score_Modifiers[key] == Ability_Score_Modifiers[int(str_score)]:
print('True', value)
Это работает, потому что мы говорим о том, что изначально мы перебираем все ключи (левые) в словаре модификаторов.Если сторона справа текущей клавиши равна правой стороне клавиши, равной силе, выведите True.Функционально, я не уверен, почему вы хотите проверить логическое равенство, но в любом случае это должно быть сделано.Дайте мне знать, если это работает!
Обновлено
Вот код:
import random
str_score = str(random.randint(3,18))
Ability_Score_Modifiers = {'1' : '-5', '2' : '-4', '3' : '-4', '4' : '-3', '5' : '-3', '6' : '-2', '7' : '-2', '8' : '-1', '9' : '-1', '10' : '0', '11' : '0', '12' : '+1', '13' : '+1', '14' : '+2', '15' : '+2', '16' : '+3', '17' : '+3', '18' : '+4', '19' : '+4', '20' : '+5', '21' : '+5', '22' : '+6', '23' : '+6', '24' : '+7', '25' : '+7', '26' : '+8', '27' : '+8', '28' : '+9', '29' : '+9', '30' : '+10'}
for key in Ability_Score_Modifiers:
if Ability_Score_Modifiers[key] == Ability_Score_Modifiers[str_score]:
print("True")
print("Stat score of {} grants a modifier of {}".format(str_score, Ability_Score_Modifiers[str_score]))
Вывод:
True
Stat score of 15 grants a modifier of +2
True
Stat score of 15 grants a modifier of +2
Просто развлекайтесь
Может быть, это пригодится позже!
import random
#Generate our Str, Dex, Con, Int, Wis, Cha
Ability_Scores = {}
for n in ['Str', 'Dex', 'Con', 'Int', 'Wis', 'Cha']:
Ability_Scores[n] = str(random.randint(3,18))
Ability_Score_Modifiers = {'1' : '-5', '2' : '-4', '3' : '-4', '4' : '-3', '5' : '-3', '6' : '-2', '7' : '-2', '8' : '-1', '9' : '-1', '10' : '0', '11' : '0', '12' : '+1', '13' : '+1', '14' : '+2', '15' : '+2', '16' : '+3', '17' : '+3', '18' : '+4', '19' : '+4', '20' : '+5', '21' : '+5', '22' : '+6', '23' : '+6', '24' : '+7', '25' : '+7', '26' : '+8', '27' : '+8', '28' : '+9', '29' : '+9', '30' : '+10'}
for score in Ability_Scores:
print("{} score of {} grants a modifier of {}".format(score, Ability_Scores[score], Ability_Score_Modifiers[Ability_Scores[score]]))
Вывод:
Str score of 7 grants a modifier of -2
Dex score of 12 grants a modifier of +1
Con score of 17 grants a modifier of +3
Int score of 8 grants a modifier of -1
Wis score of 12 grants a modifier of +1
Cha score of 5 grants a modifier of -3
Отредактировано
Оказывается, это даже проще, чем мы думали!
import random
str_score = str(random.randint(3,18))
Ability_Score_Modifiers = {'1' : '-5', '2' : '-4', '3' : '-4', '4' : '-3', '5' : '-3', '6' : '-2', '7' : '-2', '8' : '-1', '9' : '-1', '10' : '0', '11' : '0', '12' : '+1', '13' : '+1', '14' : '+2', '15' : '+2', '16' : '+3', '17' : '+3', '18' : '+4', '19' : '+4', '20' : '+5', '21' : '+5', '22' : '+6', '23' : '+6', '24' : '+7', '25' : '+7', '26' : '+8', '27' : '+8', '28' : '+9', '29' : '+9', '30' : '+10'}
for key in Ability_Score_Modifiers:
if key == str_score:
print("True")
print("Stat score of {} grants a modifier of {}".format(str_score, Ability_Score_Modifiers[str_score]))
True
Stat score of 3 grants a modifier of -4
Таким образом, при выполнении оператора If вам даже не нужно сравнивать, используя словарную индексацию.Вы можете просто использовать «ключ» от итератора и сравнить его с показателем способностей.