Попытка использовать словари с пользовательским вводом (python) - PullRequest
0 голосов
/ 08 февраля 2020

Может кто-нибудь мне помочь? Я пытаюсь понять, как упростить этот код. Людям предлагали использовать словари, но я не могу понять, как. Я просто хочу сократить код и не использовать столько операторов if. Также, чтобы уточнить, я хочу, чтобы пользователь вводил героя и печатал обратно другого героя.

choice = str(input('Choose a hero\n'))

def hero_choose():
    if choice.lower() == 'batman':
        return('Moon Knight')
    if choice.lower() == 'moon knight':
        return('Batman')
    if choice.lower() == 'superman':
        return('Hyperion')
    if choice.lower() =='hyperion':
        return('Superman')
    if choice.lower() == 'thor':
        return('Shazam')
    if choice.lower() == 'shazam':
        return('Thor')
    if choice.lower() == 'red hood':
        return('punisher')
    if choice.lower() == 'punisher':
        return('Red Hood')
    if choice.lower() == 'wonder woman':
        return('Jean Grey')
    if choice.lower() == 'jean grey':
        return('Wonder Woman')
    if choice.lower() == 'iron man':
        return('Batwing')
    if choice.lower() == 'batwing':
        return('Iron Man')
    if choice.lower() == 'flash':
        return('Quicksilver')
    if choice.lower() == 'quicksilver':
        return('Flash')
    else:
        return('Your hero may not be available\nor your spelling may be wrong.')

print(hero_choose())

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Вы также можете сделать это:

 hero_choices = { 'batman': 'Moon Knight',
                  'moon knight: 'Batman',
                  'superman':'Hyperion',
                  'hyperion': 'Superman',
                   ...
                }

 getChoice = str(input("Please choose a hero:\n"))


 for key, value in hero_choices.items():
    if key == "getChoice":
       print(hero_choices[key])
    elif key != "getChoice":
       print("This hero doesn't exist!")

Это альтернативное решение выше.

0 голосов
/ 08 февраля 2020

Словарь, безусловно, лучший способ упростить этот код. Вы можете настроить все варианты, используя ввод в качестве клавиш и использовать параметр по умолчанию dict.get, чтобы вернуть сообщение об ошибке:

choice = str(input('Choose a hero\n'))

hero_choose = { 'batman' : 'Moon Knight', 
                'moon knight' : 'Batman',
                'superman' : 'Hyperion',
                'hyperion' : 'Superman'
                # ...
               }

hero = hero_choose.get(choice.lower(), 'Your hero may not be available\nor your spelling may be wrong.')

print(hero)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...