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()