Как мне упаковать две функции в модуль? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть две функции для метода ньютонов, чтобы оценить корни числа, которое вводит пользователь, но мне поручено «упаковать эти функции в модуль».Я признаю, что изо всех сил пытаюсь обернуть голову вокруг понятия модулей и не могу действительно найти какой-либо материал, который мне помогает.

Попытка сохранить функции по отдельности в виде двух разных файлов и с помощью команды импорта, но, похоже, не увенчалась успехом.

[Редактировать] Попытка заставить предыдущие_x не отображаться послеокончательная оценка установлена.

previous_x

[Edit2] Тем не менее для предыдущего_x

enter image description here

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

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Ваша идея «сохранить функции отдельно в виде двух разных файлов и использовать команду импорта» верна.Вот один из способов сделать это:

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 youимпортирует каждый модуль в отдельные пространства имен вверху и ссылается на них по отдельности:

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)
0 голосов
/ 07 февраля 2019

Так что да, это сбивает с толку, когда вы начинаете, я с вами об этом.Итак, позвольте мне сделать это очень легко.

Функции def в python - это контейнеры с кодом в нем.Они бегут один раз и заканчивают.Классы - это экземпляры, которые содержат в себе набор функций (называемых методами), которые могут манипулировать данными внутри класса до тех пор, пока класс не будет закрыт или программа не завершит работу с именованным экземпляром.

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

Это так просто, как я могу это сделать.Есть еще вопросы, нужно посмотреть документацию.Но вам лучше всего экспериментировать, делать это неправильно, пока вы не сделаете это правильно - лучший учитель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...