2016-05-07 10 views
0

Спойлер Это связано с 30-дневным кодом Хеккерранда. Я использую python 2.Установка цикла while в python для получения неизвестного числа переменных

У меня возникли проблемы с определением части 8-го дня (словарей и карт). В основном, они хотят передать вам x количество имен и номеров, чтобы вы могли создавать словарь. Впоследствии они подают вам n количество запросов, поэтому вы можете позвонить им в телефонной книге, если они там, или напечатать «не найден», если в противном случае. Но n - неизвестное число, поэтому почему я потерян. Постановка задачи here в случае, если кто заинтересован ...

В любом случае, я прохожу тест, Prelim с моим кодом, но только один из фактических 7 случаев, потому что я понятия не имею, что диапазон положить в мой «а» петли (так что я поставил что-то вроде 1000.) У меня такое чувство, что мне нужно будет использовать что-то вроде * args, но я понятия не имею, как его вставить. Может ли кто-нибудь указать мне в правильном направлении, пожалуйста? Заранее спасибо!

Код:

t = int(raw_input()) 
phonebook = {} 
for x in range(t):         
    entry,num = raw_input().strip().split(' ') 
    entry,num = [str(entry),int(num)] 
    phonebook[entry] = num 
i = 0 
while i < unknown_range:     <---- problem here 
    name = str(raw_input()) 
    if name in phonebook.keys(): 
     string = name +'='+ str(phonebook[name]) 
     print(string) 
     i += 1 
    else: 
     print("Not found") 
     i += 1 
+1

Я не вижу, почему вы должны знать, сколько запросов есть. Просто продолжайте идти до конца. –

+1

Вам не нужно использовать 'str' на' raw_input', так как он всегда возвращает строку. – Barmar

+0

Инструкции говорят: «Продолжайте чтение строк до тех пор, пока не будет больше ввода» _, что означает чтение из файла. Но вы читаете stdin, поэтому вход обычно не заканчивается. Хит 'ctrl + D', чтобы эмулировать попадание в конец файла, и поймать полученный' EOFError' – Eric

ответ

0

создать цикл, когда условие выхода дается в самой петле:

i = 0 
while True: 
    name = str(raw_input()) 
    # or a try-except statement depending on the kind of input 
    if not name.strip(): 
     break 
    if name in phonebook.keys(): 
     string = name +'='+ str(phonebook[name]) 
     print(string) 
     i += 1 
    else: 
     print("Not found") 
     i += 1 
+0

Большое спасибо. Вы в основном настраивали его так, как я думал об этом, но, увы, он все еще был слишком неуклюжим для практики. Я, наконец, сдался и посмотрел на редакцию, и автор использовал «lines = sys.stdin.readlines()» для чтения запросов. Я довольно новичок в этом, поэтому я даже не знал об этом методе, поэтому ... извлеченный урок –