英語の単語を学習するためのシンプルなPythonスクリプト、またはカードを使用しない理由

英語の勉強( 証明 )のトピックは、habrで複数回提起されました。 彼女はさまざまな角度から見られました。 誰かが外国語を学ぶときに言葉を学ぶのはなぜかと書いた。 誰かが、単純なカードからノートブック全体に至るまで、非常に多くの方法を共有しました。 最後に、 LinguaLeoがあります 。これは、追加料金なしで1日10語を学習できるすばらしいサービスです。 支払いたくない場合もありますが、外国語の謎と魅力を学ぶ若い生物にとっては、10語は非常に少ないようです。 そうすれば、おそらくこのスクリプトは役に立つでしょう。



GUIをファック!


いや 地獄ではなく、このタスクで。 必要なのは、単語を読み、翻訳を書き、Enterを押すだけです。 作業の非常に単純なメカニズム。 それでは、なぜこのtkinterのために緊張と強姦をするのでしょうか?



JSONは私たちを助けるために急いでいます


確かにアマチュアがいます。 JSONを使用しました。 XMLが好きな人。 データ構造は非常に単純です。



{ "catch, caught, caught":", , ", "fly, flew, flown":", " }
      
      







同様の2つの単語の「辞書」をファイルに保存します。たとえば、english.jsonを呼び出します。ロケールを再度構成しないように、Windows 866エンコードで保存します(UTF-8がLinuxに適していると確信しています)。



彼の閣下コード


まず、sysモジュールとrandomモジュールをインポートします。



 import sys import random
      
      







次に、古典的なメイン関数を予期せずに定義します。 設計上、すぐに辞書が必要になります。辞書は、スクリプトの実行時にパラメーターで指定する必要があります。



 def main(): try: wordict = eval(open(sys.argv[1]).read()) #   except: print "You have to enter all parameters.\nExample: python wordrepeater.py yourdictionary.json" #   ? raw_input("")
      
      







これで、wordict辞書ができました。 次に、辞書を通過する2つのモードを作成する必要があります。 1つ目は、スクリプトが英語の単語を提供し、その翻訳の1つで応答することです。 2番目のパスは正反対です-スクリプトはロシア語であり、英語であると言われます。 ここで辞書設計者が助けになります。



  mode = raw_input("Choose mode:\n\t1:Word To Translation;\n\t2:Translation To Word.\n>> "); if mode == "2": wordict = {wordict[k]:k for k in wordict.keys()} #          .
      
      







操作が完了すると、いくつかの行が残り、辞書全体で実行されます。 メイン関数内で記述できますが、別の関数を記述することをお勧めします。



 def keysToValues(dic): #      wrong = 0 #    keys = dic.keys() #       . while True: tmpkey = random.choice(keys) #      print "{0}: {1}".format(len(keys), tmpkey) #    .        value = dic[tmpkey] #      if raw_input("Translation: ") in value.split(", "): #   "" ,         print "True. {0}\n".format(value) keys.remove(tmpkey) # ! !    . else: wrong += 1 print "Wrong! {0}\n".format(value) # ...    . if len(keys) < 1: #   .       . raw_input("\n\nNothing\nWrong - {0}".format(wrong)) #      sys.exit() #   Enter,  
      
      







あとは、この関数をmainで実行してからmainを実行するだけです。



  keysToValues(wordict) if __name__ == "__main__": main()
      
      







自由時間とこのスクリプトがある場合、夕方に最大50語(私は再試行していません)の英単語を学習することが判明しました。 最も退屈なことは、辞書に記入することです。 しかし、カードをコンパイルするのは面倒ではないと確信しています。



最終結果。



利便性を高めるために、すべてのコードを1か所にまとめました。
 import sys import random def keysToValues(dic): wrong = 0 right = 0 keys = dic.keys() while True: tmpkey = random.choice(keys) print "{0}: {1}".format(len(keys), tmpkey) #print str(len(keys))+":", tmpkey value = dic[tmpkey] #answ = raw_input("Translation: ") if raw_input("Translation: ") in value.split(", "): print "True. {0}\n".format(value) #fjf right += 1 keys.remove(tmpkey) else: wrong += 1 print "Wrong! {0}\n".format(value) if len(keys) < 1: raw_input("\n\nNothing\nRight - {0}. Wrong - {1}".format(right, wrong)) sys.exit() def main(): try: wordict = eval(open(sys.argv[1]).read()) except: print "You have to enter all parameters.\nExample: python wordrepeater.py yourdictionary.json" raw_input("") mode = raw_input("Choose mode:\n\t1:Word To Translation;\n\t2:Translation To Word.\n>> "); if mode == "2": wordict = {wordict[k]:k for k in wordict.keys()} elif mode == "": print "Exit" sys.exit() keysToValues(wordict) if __name__ == "__main__": main()
      
      








All Articles