我有两个函数用于newtons方法来估计用户输入的数字的根,但是我的任务是“将这些函数打包到模块中”。我承认我正在竭尽全力围绕模块的概念,并且找不到真正能帮助我的材料。
尝试将功能分别保存为两个不同的文件并使用import命令,但是似乎没有成功。
[编辑]试图在建立最终估算后不显示previous_x。
[Edit2]先前的[x]仍然为“无”
def newtons_fourth(y):
x=1
N=0
previous_x = None
while N < 50:
x=1/4*(3*(x) + y/(x**3))
N=N+1
print('Iteration number:',N)
print('Estimation:',x)
print('Previous x:',previous_x)
print()
if previous_x is not None:
if abs(x - previous_x) < 0.0001:
final=1
print('Difference negligible')
print('Final Estimation:',x)
break
previous_x = x
if final!=1:
return previous_x
答案 0 :(得分:1)
是的,当您开始时,这会引起混淆,我对此表示支持。因此,让我使其变得超级简单。
python中的函数def
是其中包含代码的容器。他们运行一次并完成。
类是在其中包含一堆函数(称为方法)的实例,这些函数可以操纵类中的数据,直到关闭类或使用命名实例完成程序为止。
x = Classname() #creates an instance of the class now named x
x.start() # runs the function start inside the class. Can pass variables, or use existing variables under the self. notation.
模块是其中包含函数或类的文件。所有模块均已导入。
import os
from os import getcwd #function or class inside the modeul
然后可以这样称呼他们:
print(os.getcwd())
print(getcwd())
可以导入任何.py文件。如果目录中包含名为__init__.py
的文件,则可以导入目录。该文件可以为空。然后目录名称成为模块名称,并且单个文件是这样导入的子模块:
import myfolder.mymodule
from myfolder import mymodule # the same as above
那是我所能做到的。还有其他问题,您需要查看文档。但是您最好的选择是尝试,以错误的方式进行尝试,直到以正确的方式进行操作才是最好的老师。
答案 1 :(得分:1)
您“将功能分别保存为两个不同的文件并使用import命令”的想法是正确的。这是一种解决方法:
CubedModule.py
:
def newtons_cubed(y):
x=1
N=0
previous_x = None
while N < 50:
x=1/3*(2*(x) + y/(x**2))
N=N+1
print('Iteration number:',N)
print('Estimation:',x)
print('Previous x:',previous_x)
print()
if previous_x is not None:
if abs(x - previous_x) < 0.0001:
print('Difference negligible')
print('Final Estimation:',x)
return
previous_x = x
print(previous_x)
FourthModule.py
:
def newtons_fourth(y):
x=1
N=0
previous_x = None
final = None
while N < 50:
x=1/4*(3*(x) + y/(x**3))
N=N+1
print('Iteration number:',N)
print('Estimation:',x)
print('Previous x:',previous_x)
print()
if previous_x is not None:
if abs(x - previous_x) < 0.0001:
final=1
print('Difference negligible')
print('Final Estimation:',x)
return
previous_x = x
if final!=1:
print(previous_x)
然后在名为script.py
的主模块中,将每个模块导入顶部的单独命名空间,并分别引用它们:
import CubedModule as cm
import FourthModule as fm
y= int(input('Enter value for estimations:'))
print()
print('Cubed root estimation:')
print()
cm.newtons_cubed(y)
print()
print('Fourth root estimation:')
print()
fm.newtons_fourth(y)