В Python конечные значения среза составляют эксклюзивные. Вы нарезка меньший список, чем вы думаете, являются:
>>> begin=['physical','Physical','Software','software',]
>>> begin[2:3]
['Software']
>>> begin[0:1]
['physical']
Использование begin[2:4]
и begin[0:2]
или даже begin[2:]
и begin[:2]
, чтобы получить все элементы из 3-го и до конца, и с самого начала до 2 (включительно):
>>> begin[2:]
['Software', 'software']
>>> begin[2:4]
['Software', 'software']
>>> begin[:2]
['physical', 'Physical']
>>> begin[0:2]
['physical', 'Physical']
еще лучше, использовать str.lower()
, чтобы ограничить число входов необходимо предоставить:
if answer.lower() == 'software':
С помощью только одной строки для тестирования теперь вы можете поместить свои функции в словарь; это дает вам возможность перечислить различные действительные ответы тоже:
options = {'software': software, 'physical': physical}
while True:
answer = input('Please enter one of the following options: {}\n'.format(
', '.join(options))
answer = answer.lower()
if answer in options:
options[answer]()
break
else:
print("Sorry, {} is not a valid option, try again".format(answer))
Я вижу много отверстий, Каков ваш вклад? Укажите пример ввода и ожидаемый результат. См. Что такое [mcve]. –
Когда я пытаюсь ввести программное обеспечение/Программное обеспечение –
Также на вход назначается ответ –