Циклический ввод данных для нескольких входов без многократного запуска - PullRequest
0 голосов
/ 04 февраля 2020

Есть ли способ поместить ввод в al oop в python 3.8?

Я хочу получить пользовательский ввод несколько раз без необходимости запуска программы более одного раза.

Я хотел бы ввести героя и получить ответ обратно, а затем иметь возможность ввести другого, не нажимая снова и снова.

Если у кого-либо есть какие-либо предложения, пожалуйста, дайте мне знать.

Спасибо!

"""

This program is intended to compare heroes from Marvel and DC. Enter 
your 
hero choice and see what hero from #Marvel or DC is most like them.
I know there are simpler ways to write this code so if anyone has any 
suggestions please leave them for me
Thanks for viewing!

Only the heroes below can be entered

marvel = ['Moon Knight', 'Hyperion', 'Thor', 'Punisher', 'Jean Grey', 
'Iron Man', 'Quicksilver']

DC = ['Batman', 'Superman', 'Shazam', 'Red Hood', 'Wonder Woman', 
'Batwing', 'Flash']
"""

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())

1 Ответ

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

Рассматривали ли вы, чтобы ваш пользователь вводил список значений через запятую? Например,

$ python choose_hero.py
Please enter hero names seperated by a "," (e.g. batman,robin)
Names: batman,superman
Moon Night
Hyperion

реализовано следующим образом:

print("Please enter hero names seperated by a \",\" (e.g. batman,robin)")
choices = [name for name in str(input('Names: ')).split(',')]
for choice in choices:
  # your implementation of hero_choose will need to be modified 
  # to accept a param, rather than using the global choice var
  hero_choose(choice)

Я знаю, что это не стек Code Review, но если бы я мог сделать предложения, не связанные с вашей проблемой. Попробуйте использовать словарь в качестве оператора переключения вместо бесконечного потока операторов if

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