Python 从main()中提取两个或三个较小的函数以更容易地查找错误
我想从较大的主函数中提取较短的函数,以便在不删除功能的情况下使其更可读,更容易查找错误 我正在考虑将其拆分为中间部分,如“def calc_mean():”所示。然而,问题是此函数中没有定义数据和其他内容。我应该如何更改这些内容,以便原始程序即使被拆分为2个,仍能正常工作?这是一个永无止境的循环。Python 从main()中提取两个或三个较小的函数以更容易地查找错误,python,Python,我想从较大的主函数中提取较短的函数,以便在不删除功能的情况下使其更可读,更容易查找错误 我正在考虑将其拆分为中间部分,如“def calc_mean():”所示。然而,问题是此函数中没有定义数据和其他内容。我应该如何更改这些内容,以便原始程序即使被拆分为2个,仍能正常工作?这是一个永无止境的循环。 user\u input调用main,然后main调用user\u input,然后user\u input调用main,依此类推 修正1 从主函数中删除filename=input(user\u i
user\u input
调用main
,然后main
调用user\u input
,然后user\u input
调用main
,依此类推
修正1
从主函数中删除filename=input(user\u input())
,并将filename
作为参数从user\u input
中传递。在这种情况下,整个脚本应首先调用user\u input
函数
修正2
删除filename=input(user\u input())
和filename=user\u input()
adjustuser\u input
函数,使其仅请求用户输入,然后返回该输入。在这种情况下,脚本应首先调用main
函数
另外,在脚本的底部应该是
if __name__ == '__main__': # not `main`
call_some_function()
更新
def user_input(): # adjust this if you need
filename = input()
return filename
def read_data(filename):
data = dict()
with open(filename, 'r') as h:
for line in h:
four_vals = line.split(',')
batch = four_vals[0]
if not batch in data:
data[batch] = []
data[batch] += [(float(four_vals[1]), float(four_vals[2]), float(four_vals[3]))]
return data
def calc_mean(sample):
if len(sample) == 0:
return
n = 0
x_sum = 0
for (x, y, val) in sample:
if x**2 + y**2 <= 1:
x_sum += val
n += 1
average = x_sum / n
return average
def main():
'''
This is the main body of the program.
'''
filename = user_input()
data = read_data(file_name)
for batch, sample in data.items():
average = calc_mean(sample)
if average is not None:
print(f"{batch}\t{average}")
else:
print(f"{batch}\t{No data}")
def user_input():#如果需要,请调整此选项
filename=input()
返回文件名
def read_数据(文件名):
数据=dict()
打开(文件名“r”)为h时:
对于h中的行:
四个值=行分割(',')
批次=四个批次[0]
如果未批量输入数据:
数据[批次]=[]
数据[批处理]+=[(浮点(四个值[1])、浮点(四个值[2])、浮点(四个值[3])]
返回数据
def计算平均值(样本):
如果len(样本)==0:
返回
n=0
x_和=0
对于样品中的(x,y,val):
如果x**2+y**2,可能您忘了在文件末尾调用main()
?我在程序末尾有“if name=='main':main(),它没有多大帮助。最大的问题是,我仍然不知道如何从原始的主函数中准确地提取和定义函数。谢谢你的回答,我使用了fix2,它工作了。在这里,除了用户输入之外,您是否发现了任何可以从原始main()中提取的潜在函数?这是一个项目,我将不得不使它更容易阅读,并使它更容易发现错误。谢谢1.函数读取数据并进行准备。2.函数来处理数据。这也是我的想法,基本上是将main()从中间拆分。但是,我不确定如何在另一个函数中使用一个函数中的变量?我正在努力让它延续到“新”功能。我会提供一个编辑我提供了一个小编辑,我没走多远,你介意帮我再进一步吗?