如何让两个函数一起工作?

时间:2017-02-22 17:33:02

标签: python function python-3.x

我最近尝试将错误写入一个文件,我在一些研究后设法做了。现在的问题是我正在尝试将计算结果写入文件,但我似乎无法获得我用来协同工作的两个函数。有人可以查看我的代码并帮助我吗?

(截至目前,我已经注释掉了我的函数尝试将我从calculator()获得的结果写入一个名为“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()

2 个答案:

答案 0 :(得分:0)

你永远不会调用writeResult()函数。你应该像writeSesult()这样添加一个参数:

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

其中str是将写入文件的值。然后你必须打电话给它。我会在checkError()中调用它,因为那里你调用了calculator()。要获得计算器计算的值,您需要将其返回。要做到这一点,你所要做的就是将结果变量添加到return语句中,所以函数将如下所示:

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

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

所以基本上你从calculator()获得的值将作为参数传递给writeResult。

答案 1 :(得分:0)

您的writeResult()功能是这里最大的问题。 Python中的write()函数接受一个字符串参数,它实际输出到文件中(例如,参见the Python tutorial)。因此,您需要将结果放在该函数调用中。为此,您必须向函数添加参数。所以它变成了:

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

我在那里使用str(result)因为result将是数字类型,因此您需要将其显式转换为字符串。否则,Python将抛出错误。

另请注意,我删除了最后一行return。在Python中,当没有返回任何内容时,您不需要显式地放置return语句。

现在您必须更改calculator()以将结果传递给此函数。一种方法是返回结果,然后在writeResult函数中调用main()。另一种方法是在计算器函数中调用writeResult,方法是将最后一行更改为writeResult(result)(同样,不需要空返回语句)。