Форум сайта python.su
Здравствуйте. Задали сделать словарик:
Пользователь запрашивает слово на англ и программа выдаёт ему перевод.
Сам словарь в текстовом файле, где слова разделены на 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])
Офлайн
для этого лучше использовать словарик
d = {}
d['cat']='котяра'
#d[paar[0]] = paar[1]
print d[ raw_input() ]
Офлайн
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)
Офлайн
или со структурой как у вас
perevod = ta[sa.index('slovo')]
Офлайн
Мне нужно именно так, как я писала. Я знаю, что он так ищет, но у меня не получается
Офлайн
что именно не получается?
попробуйте так
slovo = raw_input('>')
if slovo in sa:
print 'perevod:', ta[sa.index(slovo)]
else:
print 'perevoda net'
Отредактировано (Окт. 20, 2010 18:03:27)
Офлайн
zheromoДа так работает. Я просто имела ввиду, что мы на практике делали задачу, она искала число и выдавало его значение ( так же из файла, делилось на два столбца итд) Я пыталась повторить этот способ и в этом случае, но у меня не получилось.
что именно не получается?
попробуйте такslovo = raw_input('>')
if slovo in sa:
print 'perevod:', ta[sa.index(slovo)]
else:
print 'perevoda net'
Офлайн
Кстати, можно искать слово в двух списках, тогда получите два словаря сразу практически забесплатно: при вводе английского слова программа выведет перевод на русский и наоборот.
Офлайн
Ed А как?
Офлайн
возможно Вам поможет функция zip.
Например:
russlov=['кот','дом']
engslov=['cat','house']
dic=zip(russlov,engslov)
for i in dic:
print i
Офлайн