2016-11-27 4 views
1

По сути, я хотел, чтобы мой код был, чтобы пользователь вводил слово. Затем код будет искать в словаре (French_Dictionary), попытаться найти это слово и, если удастся, напечатать перевод этого слова.Французский словарь на Python

Я новичок в питоне, и мне просто интересно, может ли кто-нибудь помочь мне понять, по крайней мере, концепции, необходимые для кодирования этих шагов.

Это мой код до сих пор (в основном только формальности)

def opening_statement(): 
    print "Welcome to a French Dictionary" 
    while True: 
     print "Choose [1] (English to French) or [2] (French to English) " 
     choice = input("Enter 1 or 2 ") 
     if choice == 1: 
        print "You have selected the English to French Dictionary" 
        break 
     elif choice == 2: 
      print "You have selected the French to English Dictionary" 
      break 
     else: 
      print "n/a" 

def secondary_statement(): 
    while True: 
     word = raw_input("Type your word: ") 
     word = word.lower() 
     print 'Please confirm - Your word is "%s"' % (word) 
     answer= input("Yes [1] or No [2] ") 
     if answer == 1: 
      print "Translating..." 
      break 
     elif answer == 2: 
      print "Repeating process..." 
     else: 
      print "n/a" 

#Will add more and more words manually to dictionary 
French_Dictionary = { 
"aller" : "to go", 
"avoir" : "to have" 
} 

print opening_statement() 
print secondary_statement() 
+1

Что вы хотите сказать? StackOverflow - это вопрос/ответ, а не форум. – Soviut

ответ

2

Чтобы дать Вам идею высокого уровня:

Вы использовать английское слово как ключ в словаре переводов, чтобы получить французский вариант слова:

>>> dictionary_of_words = {"yes":"oui", "no":"non"} 
>>> dictionary_of_words["yes"] 
'oui' 
>>> 

Так что, когда вы читаете слово в качестве входных данных, проверьте, если он содержится в списке ключей словаря, и если он есть, печатать перевод, еще тр например, исключение. Чтобы перебрать словарь, зацикливание по клавишам также работает:

>>> list_keys = dictionary_of_words.keys() 
>>> list_keys 
['yes', 'no'] 
>>> for i in list_keys: 
...  print dictionary_of_words[i] 
... 
oui 
non 
>>> 
+1

Неплохо замаскировать встроенные элементы, такие как 'dict' и' list'. – TigerhawkT3

+1

Вы правы, исправлены. –

+1

и итерация по клавишам не очень эффективна: итерация по k, v кортежу с помощью 'list_keys.items()' или 'list_keys.values ​​()' –

1

В то время как я ценю, что вы будете использовать словарь структуру данных для вашего dictionayr; если вы собираетесь перевести оба пути, возможно, другая структура данных более подходит? Что-то вроде 2 списков, где вы можете связать их через индексы или что-то еще?

from functools import partial 

eng = ["yes", "no"] 

fr = ["oui", "non"] 

def freng(fr, eng, mot): 
    return eng[fr.index(mot)] 

def engfr(fr, eng, word): 
    return fr[eng.index(word)] 

freng = partial(freng, fr, eng) 
engfr = partial(engfr, fr, eng) 

Частичная функция упрощает вызывающую подпись, так что вы можете просто freng («ош») и получить обратно «да».

Обратите внимание на обработку случаев, когда слова нет в словаре; поскольку это означает, что выкинет исключение. Вы можете обращаться с этим более грациозно. Удачи!

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