2017-02-22 14 views
-2

私は最近、いくつかの研究の後でやっていたファイルにエラーを書き込もうとしました。問題は今、私は計算結果をファイルに書き込もうとしていますが、一緒に働く2つの関数を得ることができません。誰かが私のコードを見て助けてくれますか?どのようにして2つの機能を連携させることができますか?

(今のように私は「result.txt」と呼ばれる別のファイルに)私は(電卓から取得結果を書き込むための私の機能の試みをコメントアウトしている)

import sys 
import logging 

WRITE = "w" 
APPEND = "a" 
READWRITE = "r+" 
fileName = "error.txt" 
fileName2 = "result.txt" 
logging.basicConfig(filename=fileName, level=logging.ERROR) 

def main(): 
    checkError() 
    return 

def calculator(): 
    firstNumber = int(input("Pleas enter a number: ")) 
    secondNumber = int(input("Pleas enter a number: ")) 
    result = firstNumber/secondNumber 
    print(result) 
    return 

def checkError(): 
    try: 
     calculator() 
    except: 
     error = sys.exc_info()[0] 
     logging.error(msg=error) 
     print("Error logged to:",fileName) 
     return 

# def writeResult(): 
#  myFile = open(fileName2, mode= WRITE) 
#  myFile.write() 
#  myFile.close() 
#  return 

main() 
+0

どこでwriteResults()を呼び出しましたか?何を書こうとしていたのですか? – depperm

+1

あなたは実際には 'writeResults'の' fileName2'に何も書きません。[pythonチュートリアル](https://docs.python.org/3/tutorial/inputoutput.html)が役に立つかもしれません。関連するセクションを見つけるために 'f.write(string)'を検索してください。 – whrrgarbl

+0

私はここでwriteResult()をまだ呼び出さなかった。しかし、私はcalculator()から結果を得て、それを別のファイルに書きたいと思います。 – Grubbier

答えて

0

あなたは(writeResultを呼び出すことはありません)関数。次のように、writeResult()にパラメータを追加する必要があります。

def writeResult(string): 
    myFile = open(fileName2, mode= WRITE) 
    myFile.write(string) 
    myFile.close() 
    return 

ここで、strはファイルに書き込まれる値です。それからあなたはそれを呼び出さなければなりません。私はcheckError()でそれを呼び出すでしょう。なぜなら、これはcalculator()を呼び出す場所ですからです。計算機で計算された値を取得するには、それを返す必要があります。 )(

次に
def calculator(): 
    firstNumber = int(input("Pleas enter a number: ")) 
    secondNumber = int(input("Pleas enter a number: ")) 
    result = firstNumber/secondNumber 
    print(result) 
    return result 

あなたはcheckError(でそれを呼び出す必要があります)とwriteResultにそれを渡します。これを行うには、あなたがしなければならないのは、return文に結果変数を追加しているので、この関数は次のようになります。

def checkError(): 
    try: 
     writeResult(calculator()) 
    except: 
     error = sys.exc_info()[0] 
     logging.error(msg=error) 
     print("Error logged to:",fileName) 
     return 

したがって、calculatorから取得した値は基本的にwriteResultのパラメータとして渡されています。

+0

Hey Matthew、私はあなたが言ったことを試しましたが、プログラムを実行するたびにエラーを記録しますが、私が望むファイルは何も書いていません:/ – Grubbier

+0

'calculator()'は何も返さないのでこれは動作しません。変数 'str'の名前を付けることも悪い考えです。なぜなら、これはPython組み込み関数の名前だからです。 – whrrgarbl

+0

@Grubbier、私はちょうど私の答えを編集した、私はいくつかの間違いに気づいたwhrrgarblは指摘 –

0

ここでは、writeResult()機能が最大の問題です。 Pythonのwrite()関数は、実際にファイルに出力する文字列パラメータをとります(例についてはthe Python tutorialを参照してください)。したがって、その関数呼び出しに結果を入れる必要があります。これを行うには、関数にパラメータを追加する必要があります。だから、それは次のようになります。

def writeResult(result): 
    myFile = open(fileName2, mode= WRITE) 
    myFile.write(str(result)) 
    myFile.close() 

resultは数値型になりますので、私はそこにstr(result)を使用し、あなたは明示的に文字列に変換する必要があります。それ以外の場合、Pythonはエラーをスローします。

また、最後の行returnを削除しました。 Pythonでは、何も返されないときに明示的にreturn文を置く必要はありません。

calculator()を変更して、結果をこの関数に渡す必要があります。あなたのmain()関数でwriteResultを呼び出して1つのオプションが結果を返します。もう一つは、最後の行をwriteResult(result)(空のreturn文は必要ありません)に変更して、電卓機能でwriteResultと呼ぶだけです。

+0

あなたの助けをありがとう – Grubbier

+0

@Grubbier、それを聞いてうれしい!左側の矢印を使用して回答をアップアップすることができ、ティックマークをクリックして最も役立った回答を受け入れることを忘れないでください。 – whrrgarbl

関連する問題