Поскольку вопрос указывает на сильную волю, чтобы узнать кодирования и уже пытался что-то, я предлагаю вариант, который работает на питона версии 3 (в версии 2 можно было бы необходимо raw_input вместо ввода и будущий импорт, чтобы объявить функцию печати):
#! /usr/bin/env python3
import sys
names_known = ( # Hints 1 and 2
None, "tp.txt", "c17testpat.pat", "c432test.pat",
"c499testpat.pat", "c1355testpat.pat", "c6288testpat.pat")
options_map = dict(zip(range(len(names_known)), names_known)) # 3
print("Enter:")
for choice, name in enumerate(names_known[1:], start=1): # 4
print('%d.%s' % (choice, name))
user_choice = input("Enter a number") # 5
try: # 6
entry_index = int(user_choice)
except:
sys.exit("No integer given!")
if not entry_index or entry_index not in options_map: # 7
sys.exit("No filename matching %d" % (entry_index,))
with open(options_map[entry_index]) as f: # 8
# do something with f
pass
Многое еще может пойти не так, и любая ошибка будет необходимо пользователю перезапустить (не в то время как петли и т.д.), но некоторые достижения
- ли имена хранятся только один раз (здесь я выбрал кортеж)
- Держи 1 в качестве первого номера в пользовательском интерфейсе (вставить манекен с индексом 0)
- выведут Dict из кортежа, хранящих имена (ДИКТ предлагает быстрый поиск)
- построить информацию пользовательского интерфейса от имени кортежа (не обращая внимание на манекен)
- Отдельный вход от проверки
- типа Проверка домена первого (целое число). Если не удается выйти рано через sys.exit и отправить информацию
- членства Проверки домена в противном случае выход с информацией
- открыть цели имени файла ресурсов в контексте блоке, так что вы не забыли закрыть, когда сделано с обработкой
Используй словарь. – linusg
То, что вы прочитали, является строкой, и оно не будет равно ни одному из того, с чем вы сравниваете его, поэтому переменная 'filename' не будет существовать.Преобразуйте его в int и выведите некоторое сообщение об ошибке, если вы не получите действительный ввод. –
http://stackoverflow.com/questions/11479816/what-is-the-python-equivalent-for-a-case-switch-statement может помочь – Deca