2991462923@qq.c 发表于 2023-6-3 23:30:51

如何存积分函数于模块

这是我写的积分函数
<def connect(f,a,b,n):
    h=(b-a)/n
    area=0   
    for i in range(0,n):
      area+=(f(a+i*h)+f(a+(i+1)*h))*h/2
    return area

def f1(x):
    return 1+x
def f2(x):
    return 1/(1+4*x*x)

n=int(input("请输入等分数:"))
y1=connect(f1,0,2,n)
y2=connect(f2,-1,1,n)
print("The definite integral of f1 is {:.6f}".format(y1))
print("The definite integral of f2 is {:.6f}".format(y2))>

题目要求
1.新建py文件命名为definite.py,完成积分函数connect的编写和测试工作;
2.新建py主程序文件命名为defIntegral.py文件,使用以下任意一种方式导入模块,并调用模块中的connect()函数完成计算。
(1)导入模块 - import 模块名
(2)导入模块中特定函数 - from 模块名 import 函数名
(3)给模块指定别名 - import 模块名 as 别名
(4)给函数指定别名 - from 模块名 import 函数名 as 别名
(5)导入模块所有函数 - from 模块名 import *

我不知道py文件和py主程序文件有什么区别,然后大家顺便帮我看看代码,谢谢谢谢
请提交一个JPG格式截图,证明你完成了上述工作。

isdkz 发表于 2023-6-3 23:31:35

要将积分函数存储于模块中,可以将其定义在一个独立的.py文件中,然后在需要使用的主程序文件中导入该模块并调用其中的函数。具体实现步骤如下:

1.新建一个名为definite.py的文件,将积分函数connect()定义在其中:

def connect(f, a, b, n):
    h = (b-a) / n
    area = 0
    for i in range(n):
      area += (f(a+i*h) + f(a+(i+1)*h)) * h / 2
    return area


2.在defIntegral.py主程序文件中使用import导入模块,然后调用其中的函数完成计算:

import definite

n = int(input("请输入等分数:"))
y1 = definite.connect(definite.f1, 0, 2, n)
y2 = definite.connect(definite.f2, -1, 1, n)

print("The definite integral of f1 is {:.6f}".format(y1))
print("The definite integral of f2 is {:.6f}".format(y2))


这里使用了import导入整个模块的方式,因此在调用函数时需要加上模块名definite作为前缀。也可以使用from...import...的方式导入模块或函数,具体使用方法可以根据实际情况选择。

至于py文件和py主程序文件的区别,其实就是文件的用途不同。py文件通常用来存储函数、类或变量等代码片段,而py主程序文件则是用来执行程序的入口文件,通常包含了程序的主要逻辑。

陶远航 发表于 2023-6-3 23:32:43

好的,我来帮您解答。

首先,py文件和py主程序文件其实指的是同一个东西。py文件可以包含函数、类、变量等定义,而当我们需要使用这些定义时,就可以在另外的py文件中通过导入模块的方式来使用它们。

其次,您给出的积分函数和测试代码看起来没有问题。建议您将这段代码保存为名为"definite.py"的文件,然后在另外一个文件中调用这个模块。

下面是一个简单的示例,假设我们需要在另外一个文件中使用connect()函数来计算积分:

# 导入模块
import definite

# 调用connect()函数
result = definite.connect(definite.f1, 0, 2, 100)

# 输出结果
print("The definite integral of f1 is {:.6f}".format(result))
运行以上代码后,应该会输出 "The definite integral of f1 is 3.000000"。

最后,由于我无法在此处上传截图,请您自行截取您的代码文件界面截图,以便证明您完成了上述任务。

sfqxx 发表于 2023-6-4 15:19:57

根据您提供的代码,积分函数 `connect` 的实现和测试如下:
def connect(f, a, b, n):
    h = (b - a) / n
    area = 0   
    for i in range(0, n):
      area += (f(a + i * h) + f(a + (i + 1) * h)) * h / 2
    return area

def test_connect():
    assert abs(connect(lambda x: x, 0, 1, 100) - 0.5) < 1e-6
    assert abs(connect(lambda x: 1 / x, 1, 10, 1000) - 2.3025850929940455) < 1e-6
    assert abs(connect(lambda x: 1 / (1 + x ** 2), -1, 1, 1000) - 1.5707963267948966) < 1e-6
    print("All tests passed.")

if __name__ == "__main__":
    test_connect()

这里我们定义了一个 `test_connect` 函数来测试 `connect` 函数的正确性。`test_connect` 中使用 `assert` 语句检查预期结果和实际结果是否一致,如果不一致则会抛出异常。

对于主程序文件 `defIntegral.py`,如果您需要使用模块 `definite` 中的 `connect` 函数,则可以通过以下方式导入模块并调用该函数:


import definite

n = int(input("请输入等分数:"))
y1 = definite.connect(lambda x: 1 + x, 0, 2, n)
y2 = definite.connect(lambda x: 1 / (1 + 4 * x * x), -1, 1, n)
print("The definite integral of f1 is {:.6f}".format(y1))
print("The definite integral of f2 is {:.6f}".format(y2))

在上面的代码中,我们使用了 `definite.connect` 来调用模块 `definite` 中的函数。由于我们给模块指定了别名 `definite`,因此我们可以通过 `definite.connect` 的形式来访问该函数。

至于区别,py文件是指Python程序文件,也就是包含 Python 代码的文件。而py主程序文件则是指在整个程序中担任主角色的文件,通常被作为程序入口,用来协调和调用各个子模块。

求最佳答案{:10_254:}

页: [1]
查看完整版本: 如何存积分函数于模块