@littlehero

Как обратиться к ключам словаря через input?

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

carno = { 'weight': 2170, 'health': 2170, 'bite': 200, 'bleed': 15, 'sbite': 0, 'sbleed': 0 }
maia = { 'weight': 2868, 'health': 2868, 'bite': 175, 'bleed': 0, 'sbite': 0, 'sbleed': 0 }

def getkw():
    kw='Выход выполнен успешно'
    while (True):
        print('Введите атакующего дино: (Пустой Enter - выход)')
        d1=input() #Пользователь вводит "carno" или "maia"
        if d1=='':
            break
        print('Введите жертву: ')
        d2=input() #Пользователь вводит "carno" или "maia"
        kw=carno['weight']/maia['weight'] #К примеру, ввёл d1 - "carno",  d2 - "maia"
    return kw

d=getkw()
print(d)


При подставлении в формулу "kw=carno['weight']/maia['weight']" переменных "d1" и "d2" по типу "kw=d1['weight']/d2['weight']" выплывает ошибка, поможете с решением, чтобы работало через переменные, которые через input заполняет пользователь?
  • Вопрос задан
  • 804 просмотра
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
Можно сделать словарь dynos, в котором будут два ключа: carno и maia. Ну и потом просто получать их.

dinos = {'carno': { 'weight': 2170, 'health': 2170, 'bite': 200, 'bleed': 15, 'sbite': 0, 'sbleed': 0 }, 'maia': { 'weight': 2868, 'health': 2868, 'bite': 175, 'bleed': 0, 'sbite': 0, 'sbleed': 0 }}

d1=dinos[input()]
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Засунь словарь в словарь.
dinos = {
    'carno' : { 'weight': 2170, 'health': 2170, 'bite': 200, 'bleed': 15, 'sbite': 0, 'sbleed': 0 }
    'maia' : { 'weight': 2868, 'health': 2868, 'bite': 175, 'bleed': 0, 'sbite': 0, 'sbleed': 0 }
}

while True:
    print('Enter attacking dino name: ', end='')
    name = input()
    if name not in dinos:
        print(f'No such dino: {name}')
    else:
        dino = dinos[name]
        break
#работаем с dino
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
kw=carno[d1]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы