Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2010 17:20:39

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарик

Здравствуйте. Задали сделать словарик:
Пользователь запрашивает слово на англ и программа выдаёт ему перевод.
Сам словарь в текстовом файле, где слова разделены на 2 стобца: англ и русский. Слова разделены “tab”
Задача: разделить слова в 2 списка, с этим я справилась:(вроде бы)

#Slovar
file=open("dictionary.txt","r")
sa=[]
ta=[]

while True:
line=file.readline()
if line=="":
break
paar=line.split('\t')
sa.append(paar[0])
ta.append(paar[1])
Дальше начинаеться самое сложное для меня:
Пользователь вводит слово.
Как сделать так, что бы он его нашел в списке sa и вернул его значение из списка ta
Заранее спасибо



Офлайн

#2 Окт. 20, 2010 17:44:53

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Словарик

для этого лучше использовать словарик

d = {}
d['cat']='котяра'
#d[paar[0]] = paar[1]
print d[ raw_input() ]

Офлайн

#3 Окт. 20, 2010 17:52:41

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Словарик

from string import split
dictionary = dict(map(split,open("dictionary.txt").readlines()))

perveod = dictionary['slovo']
или

dictionary = dict(map(lambda s:s.split(), open("dictionary.txt").readlines()))

perveod = dictionary['slovo']



Отредактировано (Окт. 20, 2010 17:55:16)

Офлайн

#4 Окт. 20, 2010 17:57:43

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Словарик

или со структурой как у вас

perevod = ta[sa.index('slovo')]



Офлайн

#5 Окт. 20, 2010 17:58:13

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарик

Мне нужно именно так, как я писала. Я знаю, что он так ищет, но у меня не получается



Офлайн

#6 Окт. 20, 2010 18:01:51

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Словарик

что именно не получается?

попробуйте так

slovo = raw_input('>')
if slovo in sa:
print 'perevod:', ta[sa.index(slovo)]
else:
print 'perevoda net'



Отредактировано (Окт. 20, 2010 18:03:27)

Офлайн

#7 Окт. 20, 2010 18:18:17

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарик

zheromo
что именно не получается?

попробуйте так

slovo = raw_input('>')
if slovo in sa:
print 'perevod:', ta[sa.index(slovo)]
else:
print 'perevoda net'
Да так работает. Я просто имела ввиду, что мы на практике делали задачу, она искала число и выдавало его значение ( так же из файла, делилось на два столбца итд) Я пыталась повторить этот способ и в этом случае, но у меня не получилось.



Офлайн

#8 Окт. 20, 2010 19:19:07

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Словарик

Кстати, можно искать слово в двух списках, тогда получите два словаря сразу практически забесплатно: при вводе английского слова программа выведет перевод на русский и наоборот.



Офлайн

#9 Окт. 20, 2010 20:06:06

Murderdoll666
От:
Зарегистрирован: 2010-09-15
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарик

Ed А как?



Офлайн

#10 Окт. 20, 2010 20:55:21

guranvir
От:
Зарегистрирован: 2010-03-16
Сообщения: 186
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарик

возможно Вам поможет функция zip.
Например:

russlov=['кот','дом'] 
engslov=['cat','house']
dic=zip(russlov,engslov)
for i in dic:
print i
В результате вы получите список кортежей, где первыйц элемент кортежа из списка russlov,а второй из engslov



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version