2016-06-15 2 views
-1

В рамках школьного проекта мы создаем программу для устранения проблем. Я столкнулся с проблемой, которую я не могу решить:Тестирование элемента в списках - Python 3

begin=['physical','Physical','Software','software',] 
answer=input() 
if answer in begin[2:3]: 
    print("k") 
    software() 
if answer in begin[0:1]: 
    print("hmm") 
    physical() 

При попытке ввода программного обеспечения/программного обеспечения не создается выход. Может ли кто-нибудь увидеть дыру в моем коде, как есть?

+1

Я вижу много отверстий, Каков ваш вклад? Укажите пример ввода и ожидаемый результат. См. Что такое [mcve]. –

+0

Когда я пытаюсь ввести программное обеспечение/Программное обеспечение –

+0

Также на вход назначается ответ –

ответ

3

В 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)) 
0

Ваш список нарезки неверен, попробуйте выполнить следующий скрипт.

begin=['physical','Physical','Software','software',] 
answer=input() 
if answer in begin[2:4]: 
    print("k") 
    software() 
if answer in begin[0:2]: 
    print("hmm") 
    physical() 
Смежные вопросы