2017-12-02 4 views
-6

私はスドクソルバープログラムにスドクパズルを読み込もうとしています。ファイルの名前は'puzzle1.py'ですが、何らかの理由でこのコードが機能していません。誰かが私を助けることができますか?ファイルをパズルソルバーに読み込む方法は?

def read_sudoku(file): 
    stream = open(file) 
    data = stream.readlines() 
    stream.close() 
    return eval("".join(data)) 


def main(): 
    print ('File name: ') 
    file = input() 
    read_sudoku() 

main() 
+3

あなたは一つのパラメータを取る ')(' read_sudokuを定義していますが、それを呼び出したときに、任意のパラメータを渡すことはありませんでした。このコードを実行したときにエラーメッセージが表示されませんでしたか? – jasonharper

+3

「動作していません」とはどういう意味ですか?エラーになりますか?はいの場合はどちらですか?期待どおりの結果が得られますか?もしそうなら、結果と期待される結果は何ですか?あなたの 'puzzle1.py'はどんなフォーマットですか?それがPythonファイルの場合は、おそらくそれを読むべきではありませんが、それをインポートしてください。 – syntonym

+2

あなたが実際にやりたいことは、別のpythonファイルでpythonファイルを実行することですか? –

答えて

0

使用open("filename", <Mode>)

<Mode>

  • 'r' - 読みます。
  • 'w' [書き込み]
  • 'a' - 追加:新しいデータをファイルの最後に追加します。
  • 'r+' - 読み取りと書き込みの両方の操作。

例:

open(file, "r") 
+0

''引数は、ファイルを 'open()'してデフォルトで '' r''にするとオプションであるため、すでに追加されているので、追加することはあまりありません。 – martineau

0

read_sudoku(file)がでread_sudoku()を交換

(あなたが実際にそれを読んでいる関数の引数として任意のファイルを渡していません。)
  • 01を置き換えます

stream = open(file, 'r')

  • 場所のルートにあるファイル(あなたが読んで、この場合のファイルの読み取りモード(rwar+)など、= rを指定する必要があります)あなたのプロジェクトを作成するか、完全なディレクトリをファイルに含めます。
0

read_sudokuが1つの引数をとり、何も渡さなかったため、おそらくエラーが発生します。

Sidenotes:

  • 私はまた、あなたがファイルを開くためにwithステートメントを使用お勧めします。

  • これは非常に変わったものでなければ、evalを使用する必要はありません。 evalはPythonコードとして文字列を実行しますが、これはほとんど常に悪い考えです。

  • また、コードを少し短くするために使用できるトリックは、入力を待つときにinputが表示する文字列を覚えることができるので、あらかじめprintにする必要はありません。上記のすべてを適用する

、我々はこのコードを取得する:

def read_sudoku(file): 
    with f as open(file, 'r'): # Use with statement 
           # pass 'r' to open file in read-only mode 
     data = f.readlines() 
    return "".join(data) 


def main(): 
    file = input('File name: ') # Remove print and pass the string to input 
    read_sudoku(file) # Pass the file name 

main() 
関連する問題