2016-04-22 17 views
3

単語のスコア値を見つける簡単な単語スクラブルスクリプトを作成しようとしています。スクリプトは、コマンドラインから2つのパラメータを読み込み、最高のポイント値を持つ単語を返す最適な単語の値を表示する必要があります。私は、ファイルを読み込んで、クラスの残りのメソッドで使用する文字/値のディクショナリを読み込むコンストラクタを作成しました。たとえば、コマンドラインパラメータは次のようになります。コマンドラインパラメータを使用するPythonを使用した単純な単語スクラブルコード

scrabble.py c:\tiles.txt apple,squash 
Output: The best value is squash with 18. 

これまでの説明はこれまでのとおりです。私はimport argvがヘルフルであることを知っていますが、どうやって始めたらよいかわかりません。あなたが必要なもの

from sys import argv 

class Scrabble: 
    def __init__(self, tilesFile): 
     with open(tilesFile, "r") as f: 
      lines = [ line.strip().split(":") for line in f ] 

     self.tiles = { k:int(v) for k,v in lines } 

    def getWordValue(self, word): 
     sum = 0 
     for letter in word.upper(): 
      sum += self.tiles[letter] 

     return sum 

    def getBestWord(self): 
     pass 


def main(): 
    s1 = Scrabble("tile_values.txt") 
    value = s1.getWordValue("hello") 
    print(value) 


if __name__ == '__main__': 
    main() 
    pass 
+1

これを行うことを妨げている具体的な問題は何ですか? – Dan

+0

ありがとうございます。私は、pythonの入力を使用する代わりに、コマンドラインパラメータからの入力を使用する方法がわかりません--- value = s1.getWordValue( "hello") –

+0

入力の使い方や、入力? – Dan

答えて

1

私はあなたの例を取り、argparseを追加​​モジュール https://docs.python.org/3/library/argparse.html

を使用することです。 Scrabbleコンストラクタにはいくつかの問題があります。しかし、あなたはあなたがあなたのスクリプトがsys.argvでコマンドラインに渡された引数を取得することができ、コマンドラインで

python scrabble.py tiles.txt apple squash orange

import argparse 
import sys 

class Scrabble: 
    def __init__(self, tilesFile): 
     with open(tilesFile, "r") as f: 
      lines = [ line.strip().split(":") for line in f ] 

     self.tiles = { k:int(v) for k,v in lines } 

    def getWordValue(self, word): 
     sum = 0 
     for letter in word.upper(): 
      sum += self.tiles[letter] 

     return sum 

    def getBestWord(self): 
     pass 


def main(argv): 
    s1 = Scrabble(argv[1]) 
    if len(argv) < 3: 
     print 'no words given' 
     sys.exit(1) 

    # argv[2:] means the items in argv starting from the 3rd item. 
    # the first item will be the name of the script you are running 
    # the second item should be the tiles file. 
    for word in argv[2:]: 
     value = s1.getWordValue(word) 
     print(value) 


if __name__ == '__main__': 
    main(argv) 
+0

ありがとうございました。私は学生で、教授はsysからargvをインポートしたいと考えています。とにかくそれで私を助けることができますか? –

+0

コードを更新します。 – WreckeR

+0

見てください。コードにいくつかのエラーチェックを追加することを忘れないでください。 – WreckeR

0

を使用して引数のアイデアを取得します。

from sys import argv 
print("This is a list of all of the command line arguments: ", argv) 
関連する問題