如何将数学方程式从函数写入文件?
How to write math equation from function to a file?
我正在尝试从文件中获取统计信息并计算均值、中值、最小值和最大值。
我能做的就这么多了。
让我苦苦挣扎的地方是我需要为用户提供一个选项,以将计算的统计信息保存到一个新文件中。它给我一个错误,说 'str' 对象没有属性 'write'
有人知道如何将 "computed_stats" 函数写入文件吗?
如果有任何帮助,我将不胜感激!
这是我的大部分代码的屏幕截图。我没有足够的屏幕 space 来包含提示用户输入选择的 table 或加载数据的功能。对于这个问题,它们似乎并不重要。
def table():
print("Choose an option:")
print("1. Load data")
print("2. Display computed statistics")
print("3. Save computed statistics")
print("4. Exit")
def load_data(filename):
with open(filename) as f:
for lines in f:
numbers = lines.split()
return(numbers)
def compute_stats(data_list):
minimum = (min(data_list))
maximum = (max(data_list))
mean = (sum(data_list) / (len(data_list)))
data = sorted(data_list)
if (len(data) % 2) == 1:
median = data[len(data) // 2]
else:
median = (data[len(data) // 2] + data[len(data) // 2 - 1]) / 2
return minimum, maximum, mean, median
def print_stats(data_list):
minumum, maximum, mean, median = compute_stats(data_list)
print(minimum)
print(maximum)
print(mean)
print(median)
def save_stats(new_file):
global comp_data
with open(new_file, 'w') as f:
f.close()
def main():
selection = 0
while selection != "4":
table()
selection = input("Choose a selection: ")
print()
if selection == "1":
data_list = input("Enter the name of your file: ")
data_list = load_data(data_list)
data_list = [int(x) for x in data_list]
print("Data read sucessfully \n")
elif selection == "2":
print_stats(data_list)
elif selection == "3":
new_file = input("Enter File Name")
save_stats(new_file)
main()
您在这里遇到的一个典型问题是您混淆了结果的表示和计算。在您的代码中, computed_stats
函数同时进行打印和计算。顺便说一下,它的命名很糟糕,像 print_statistics
这样的名字可能会更好。通常,当您的函数名称不是自然地以动词开头时,它们的职责定义不正确。
对于第一个改变,我会做这样的事情:
def compute_statistics(data_list):
# Do whatever computations you need but don't print anything
minimum = #Insert computation for minimum here
maximum = #Insert computation for maximum here
mean = #Insert computation for mean here
median = #Insert computation for median here
return minimum, maximum, mean, median # whatever statistics you are computing
def print_statistics(data_list):
minimum, maximum, mean, median=compute_statistics(data_list)
# Put your printing logic here using the results from above
def save_statistics(file_name, data_list):
minimum, maximum, mean, median=compute_statistics(data_list)
with open(file_name,'w') as outfile:
file.write(f"min = {minimum}\n")
# Put all your saving logic here
如果您希望打印版本看起来与保存的版本完全一样,您还可以添加一个用于生成该字符串的函数,您可以从 print_statistics
和 save_statistics
调用该函数。
稍后,您可能希望考虑如何更好地管理应用程序的状态,这样您就不必每次都重新计算统计信息。但那是另一个故事了。
我正在尝试从文件中获取统计信息并计算均值、中值、最小值和最大值。 我能做的就这么多了。
让我苦苦挣扎的地方是我需要为用户提供一个选项,以将计算的统计信息保存到一个新文件中。它给我一个错误,说 'str' 对象没有属性 'write'
有人知道如何将 "computed_stats" 函数写入文件吗? 如果有任何帮助,我将不胜感激!
这是我的大部分代码的屏幕截图。我没有足够的屏幕 space 来包含提示用户输入选择的 table 或加载数据的功能。对于这个问题,它们似乎并不重要。
def table():
print("Choose an option:")
print("1. Load data")
print("2. Display computed statistics")
print("3. Save computed statistics")
print("4. Exit")
def load_data(filename):
with open(filename) as f:
for lines in f:
numbers = lines.split()
return(numbers)
def compute_stats(data_list):
minimum = (min(data_list))
maximum = (max(data_list))
mean = (sum(data_list) / (len(data_list)))
data = sorted(data_list)
if (len(data) % 2) == 1:
median = data[len(data) // 2]
else:
median = (data[len(data) // 2] + data[len(data) // 2 - 1]) / 2
return minimum, maximum, mean, median
def print_stats(data_list):
minumum, maximum, mean, median = compute_stats(data_list)
print(minimum)
print(maximum)
print(mean)
print(median)
def save_stats(new_file):
global comp_data
with open(new_file, 'w') as f:
f.close()
def main():
selection = 0
while selection != "4":
table()
selection = input("Choose a selection: ")
print()
if selection == "1":
data_list = input("Enter the name of your file: ")
data_list = load_data(data_list)
data_list = [int(x) for x in data_list]
print("Data read sucessfully \n")
elif selection == "2":
print_stats(data_list)
elif selection == "3":
new_file = input("Enter File Name")
save_stats(new_file)
main()
您在这里遇到的一个典型问题是您混淆了结果的表示和计算。在您的代码中, computed_stats
函数同时进行打印和计算。顺便说一下,它的命名很糟糕,像 print_statistics
这样的名字可能会更好。通常,当您的函数名称不是自然地以动词开头时,它们的职责定义不正确。
对于第一个改变,我会做这样的事情:
def compute_statistics(data_list):
# Do whatever computations you need but don't print anything
minimum = #Insert computation for minimum here
maximum = #Insert computation for maximum here
mean = #Insert computation for mean here
median = #Insert computation for median here
return minimum, maximum, mean, median # whatever statistics you are computing
def print_statistics(data_list):
minimum, maximum, mean, median=compute_statistics(data_list)
# Put your printing logic here using the results from above
def save_statistics(file_name, data_list):
minimum, maximum, mean, median=compute_statistics(data_list)
with open(file_name,'w') as outfile:
file.write(f"min = {minimum}\n")
# Put all your saving logic here
如果您希望打印版本看起来与保存的版本完全一样,您还可以添加一个用于生成该字符串的函数,您可以从 print_statistics
和 save_statistics
调用该函数。
稍后,您可能希望考虑如何更好地管理应用程序的状态,这样您就不必每次都重新计算统计信息。但那是另一个故事了。