2013-04-21 2 views
1

Я очень новичок в python и поверю, я искал бесконечно для решения этого, но я просто не могу его получить.Получить пользовательский ввод как int или str

У меня есть csv со списком контрольных участков. В приведенном ниже коде я смог отобразить 2dlist и заставить пользователя ввести номер, чтобы выбрать конкретный участок (их 11), на основе индекса списка.

Но когда вы предлагаете пользователю выбрать, я хотел бы включить опцию «....» или нажать «q», чтобы выйти ». Теперь очевидно, что raw_input настроен на получение целых чисел, но как я могу принять число из списка или «q»?

Если я удаляю 'int' из raw_ input, он продолжает запрашивать ввод снова, печатая строку исключений. Могу ли я заставить его принимать номера индексов (0-9) ИЛИ 'q'?

for item in enumerate(dataList[1:]):    
    print "[%d] %s" % item 

while True: 
    try: 
     plotSelect = int(raw_input("Select a monitoring plot from the list: ")) 
     selected = dataList[plotSelect+1] 

     print 'You selected : ', selected[1] 
     break 
    except Exception: 
     print "Error: Please enter a number between 0 and 9" 

ответ

1

Преобразовать его в целое число после того, как вы убедитесь, что это не 'q':

try: 
    response = raw_input("Select a monitoring plot from the list: ") 

    if response == 'q': 
     break 

    selected = dataList[int(plotSelect) + 1] 

    print 'You selected : ', selected[1] 
    break 
except ValueError: 
    print "Error: Please enter a number between 0 and 9" 
+0

спасибо, оба. это работало точно так, как я хотел –

1
choice = raw_input("Select a monitoring plot from the list: ") 

if choice == 'q': 
    break 

plotSelect = int(choice) 
selected = dataList[plotSelect+1] 

Проверьте, если пользователь ввел q и явно выйти из цикла, если они (а не полагаться на выброс исключения). Только конвертируйте их ввод int после этой проверки.

+0

упс, теперь я понял, что я не получаю сообщение ValueError если введенное число находится вне диапазона (0-9) –

Смежные вопросы