Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103

Вызов функции с другого файла

29.01.2021, 16:37. Показов 2819. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать 3 файла, в одном определение walk, в другом fun.При этом fun не должна внутри себя вызывать walk, а должна вместо этого получать результаты эксперимента в виде аргументов. Вынеси все аргументы в 3 файл и сообщи их в walk.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
from math import sqrt
import random
def walk():
    # # Инициализируем переменные
    # i - время
    # r - секунды, когда взрослый находился в зоне видимости ребенка
    # k - секунды, когда ребенок находился в зоне видимости взрослого
    # reb - зона видимости ребенка
    # vzr - зона видимости взрослого
    # x1 - координата взрослого на оси X
    # y1 - координата взрослого на оси Y
    # х2 - координата ребенка на оси Х
    # y2 - координата ребенка на оси Y
    # 1)Прибавляем к времени 1 секунду
    # 2)Рассматриваем вариант конца времени(tmax=t?)
    # 3)Сгенерируем число от 1 до 4(для ребенка и взрослого)
    # 4)Обновляем координаты, обращая внимание на направление
    # 5)Рассматриваем варианты выхода субъекта за территорию(для ребенка и взрослого)
    # 6)Вычисляем расстояние между взрослым и ребенком
    # 7)Варианты видимости ребенка взрослого и наоборот
 
    reb = 80
    vzr = 40
    r = 0
    k = 0
    x = 300
    y = 300
    x1 = 1
    x2 = 300
    y1 = 1
    y2 = 300
    c = 0
 
    def distance(x1, y1, x2, y2):
        c = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
        return c
 
    # 1 и 2
    t = 1
    while t <= 600:
        t += 1
        # 3
        object1 = random.randint(1, 4)
 
        object2 = random.randint(1, 4)
 
        # пусть 1- движение вправо, 2-вниз, 3-влево, 4-вверх. Далее в пункте 4 в зависимости от сгенерированного числа нужно
        # обновлять координаты с помощью заявления "if"
 
        # 4
        if object1 % 2 == 1:
            x1 = x1 + 1
 
        elif object1 % 2 == 0:
            y1 = y1 + 1
 
        if object2 % 2 == 1:
            x2 = x2 - 1
 
        elif object2 % 2 == 0:
            y2 = y2 - 1
 
        # 5
        if x1 == 301:
            x1 = 1
        elif x1 == -1:
            x1 = 299
        if y1 == 301:
            y1 = 1
        elif y1 == -1:
            y1 = 299
        if x2 == 301:
            x2 = 1
        elif x2 == -1:
            x2 = 299
        if y2 == 301:
            y2 = 1
        elif y2 == -1:
            y2 = 299
        # 6
        c = distance(x1, y1, x2, y2)
        # 7
 
        if c <= reb:
            r = r + 1
        if c <= vzr:
            k = k + 1
    return r, k
 
 
def fun():
    # число экспериментов
    n = 100
    # плюс-минус
    ss = u'\u00B1'
    # доверительный интервал
    p = 0.95
    # постоянная Стьюдента
    ts = 1.984216
 
    midr = midk = rw2 = kw2 = 0
 
    for _ in range(n):
        # время видимости в эксперименте
        rw, kw = walk()
 
        midr += rw
        midk += kw
 
        rw2 += rw * rw
        kw2 += kw * kw
 
    # среднее время видимости
    midr = midr / n
    midk = midk / n
 
    sr = sqrt((rw2 - n * midr * midr) / (n - 1))
    sk = sqrt((kw2 - n * midk * midk) / (n - 1))
 
    # доверительный интервал
    pin_r = sr * ts / sqrt(n)
    pin_k = sk * ts / sqrt(n)
 
    print('В среднем \n ребёнок видит взрослого \n{:.3f} {} {:.3f} секунд \n'.format(midr, ss, pin_r))
    print('В среднем \n взрослый видит ребёнка \n{:.3f} {} {:.3f} секунд '.format(midk, ss, pin_k))
 
 
fun()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2021, 16:37
Ответы с готовыми решениями:

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

Вызов функции с другого питон файла
Есть например 2 файла data.py и body.py . В первый я пишу функции, а в другой основной код, для удобства. Как заставить, эту падлу, читать...

Вызов функции из другого файла
Всем, привет! Изучаю python, требуется ваша помощь)) У меня был файл run.py, в нём было: from flask import Flask app =...

21
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.01.2021, 17:33
Жалил,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
from math import sqrt
import random
 
def walk(reb, vzr, x1, y1, x2, y2, x, y, tim) :
#1 и 2
    t = 1
    r = k = 0
    while t <= tim:
        t += 1
    #3
        object1 = random.randint(1, 2)
        object2 = random.randint(1, 2)
    #пусть 1- движение по горизонтали, 
    # 2- по вертикали. 
    # Далее в пункте 4 в зависимости от сгенерированного числа нужно
    #обновлять координаты с помощью заявления "if"
    #4
        if object1 % 2 == 1:
            x1 = x1 + 1
        elif object1 % 2 == 0:
            y1 = y1 + 1
    
        if object2%2 == 1:
            x2 = x2 - 1
        elif object2%2 == 0:
            y2 = y2 - 1
    #5
        if x1 == 301:
            x1 = 1
        elif x1 == -1:
            x1 = 299
        if y1 == 301:
            y1 = 1
        elif y1 == -1:
            y1 = 299
        if x2 == 301:
            x2 = 1
        elif x2 == -1:
            x2 = 299
        if y2 == 301:
            y2 = 1
        elif y2 == -1:
            y2 = 299
    #6
        c = sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
    #7
        if c <= reb:
            r = r + 1
        if c <= vzr:
            k = k + 1
    return r, k
 
def fun(wlist, n, p, ts) :
    midw = w2 = 0
    
    for i in range(n) :
        # суммарное время "видения"
        midw += wlist[i]
        
        w2 += wlist[i]**2
        
    # среднее время "видения"
    midw = midw / n 
    
    # оценка стандарта
    sw = sqrt((w2 - n * midw**2) / (n - 1))
    
    # довер. интервал
    pin_w = sw * ts / sqrt(n)
    
    return midw, pin_w
    
def main() :
    reb = 80
    vzr = 40
    x = 300
    y = 300
    x1 = 1
    x2 = 300
    y1 = 1
    y2 = 300
    tim = 600
    # число экспериментов
    n = 100
    # символ плюс-минус
    ss = u'\u00B1' 
        # довер. интервал
    p = 0.95
    #постоянная Стьюдента
    ts = 1.644854
    rw = []
    kw = []
    for _ in range(n) :
        tr, tk = walk(reb, vzr, x1, y1, x2, y2, x, y, tim)
        rw.append(tr)
        kw.append(tk)
    midr, pin_r = fun(rw, n, p, ts)
    print('В среднем при заданных условиях\n ребёнок видит взрослого \n{:.3f} {} {:.3f} минут\n '.format(midr, ss, pin_r))
    midk, pin_k = fun(kw, n, p, ts)
    print('В среднем при заданных условиях\n взрослый видит ребёнка \n{:.3f} {} {:.3f} минут '.format(midk, ss, pin_k))
    
main()
Если что то не так, то конкретно - вот эта переменная... ; вот эта функция...

Добавлено через 3 минуты
Жалил, согласно твоей же новой постановки задачи в walk ошибочно указывать 299 и 301 - они должны определятся в основной функции и передаваться в walk. Что и было сделано ранее. В функциях walk и fun должны остаться только "служебные" числа (инициализация и проход по циклам; создание начальных условий и тп)
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
29.01.2021, 17:51  [ТС]
Просто сказано, чтобы сделал 3 файла, в одном-walk с аргументами, во 2-fun с аргументами и в 3 from import функций и в 3 же файле написать все переменные

Добавлено через 2 минуты
И не мог бы ты показать границы между 3 файлами
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.01.2021, 18:40
Жалил, 52-я и 72-я строчки
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
29.01.2021, 19:06  [ТС]
1 и 2 файл понятно, а 3 файл можешь скинуть со всеми импортами и вызовами функций?
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.01.2021, 19:50
Жалил,
walk() - первая функция - рассчитывает и возвращает результаты одного эксперимента
fun() - принимает массив нескольких (в данном коде 100) экспериментов, рассчитывает и возвращает среднестатистическое значение экспериментов и доверительный интервал этих значений.
main() - формирует данные для экпериментов, отправляет их в функцию walk(), получает от неё результаты; формирует из них массивы данных и отправляет их в функцию fun() ; от неё получает результаты статистических расчетов, формирует и выводит заключение о результатах экспериментов в виде средних значений с доверительным интервалом
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
29.01.2021, 19:53  [ТС]
Ошибку выводит, когда я из 3 файла вызываю функции и поэтому я попросил вас сделать чисто 3 файл
from .... import walk
и т д
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.01.2021, 19:57
Жалил,
Миниатюры
Вызов функции с другого файла  
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
29.01.2021, 20:08  [ТС]
вы видимо не поняли, ваша программа отлично работает, но нужно разделить на 3 файла, вот внизу скрин, но там выводит ошибку
Миниатюры
Вызов функции с другого файла  
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
29.01.2021, 21:41  [ТС]
Так что мне делать?
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.01.2021, 22:16
Жалил,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import walk
import fun
    
def main() :
    reb = 80
    vzr = 40
    x = 300
    y = 300
    x1 = 1
    x2 = 300
    y1 = 1
    y2 = 300
    tim = 600
    # число экспериментов
    n = 100
    # символ плюс-минус
    ss = u'\u00B1' 
        # довер. интервал
    p = 0.95
    #постоянная Стьюдента
    ts = 1.644854
    rw = []
    kw = []
    for _ in range(n) :
        tr, tk = walk.walk(reb, vzr, x1, y1, x2, y2, x, y, tim)
        rw.append(tr)
        kw.append(tk)
    midr, pin_r = fun.fun(rw, n, p, ts)
    print('В среднем при заданных условиях\n ребёнок видит взрослого \n{:.3f} {} {:.3f} минут\n '.format(midr, ss, pin_r))
    midk, pin_k = fun.fun(kw, n, p, ts)
    print('В среднем при заданных условиях\n взрослый видит ребёнка \n{:.3f} {} {:.3f} минут '.format(midk, ss, pin_k))
    
main()
Добавлено через 1 минуту
Жалил, отдельно модуль
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
def walk(reb, vzr, x1, y1, x2, y2, x, y, tim) :
    import math
    import random
#1 и 2
    t = 1
    r = k = 0
    while t <= tim:
        t += 1
    #3
        object1 = random.randint(1, 2)
        object2 = random.randint(1, 2)
    #пусть 1- движение по горизонтали, 
    # 2- по вертикали. 
    # Далее в пункте 4 в зависимости от сгенерированного числа нужно
    #обновлять координаты с помощью заявления "if"
    #4
        if object1 % 2 == 1:
            x1 = x1 + 1
        elif object1 % 2 == 0:
            y1 = y1 + 1
    
        if object2%2 == 1:
            x2 = x2 - 1
        elif object2%2 == 0:
            y2 = y2 - 1
    #5
        if x1 == 301:
            x1 = 1
        elif x1 == -1:
            x1 = 299
        if y1 == 301:
            y1 = 1
        elif y1 == -1:
            y1 = 299
        if x2 == 301:
            x2 = 1
        elif x2 == -1:
            x2 = 299
        if y2 == 301:
            y2 = 1
        elif y2 == -1:
            y2 = 299
    #6
        c = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
    #7
        if c <= reb:
            r = r + 1
        if c <= vzr:
            k = k + 1
    return [r, k]
Добавлено через 43 секунды
Жалил, еще один модуль
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def fun(wlist, n, p, ts) :
    import math
    midw = w2 = 0
    
    for i in range(n) :
        # суммарное время "видения"
        midw += wlist[i]
        
        w2 += wlist[i]**2
        
    # среднее время "видения"
    midw = midw / n 
    
    # оценка стандарта
    sw = math.sqrt((w2 - n * midw**2) / (n - 1))
    
    # довер. интервал
    pin_w = sw * ts / math.sqrt(n)
    
    return midw, pin_w
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
29.01.2021, 22:58  [ТС]
ошибка все равно
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
29.01.2021, 23:02
Жалил, а сами walk.py и fun.py в том же каталоге, что и main.py?
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
04.02.2021, 16:00  [ТС]
Теперь нужно сделать гистаграмму на библиотеке matplotlib для этого эсперимента( 100 повторений ), не подскажете как ?
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
05.02.2021, 09:50  [ТС]
Gdez, нужно, чтобы результаты эксперимента сохранялись в списке или в словаре, можешь сделать
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
05.02.2021, 09:57
Жалил, 26-я и 27-я строчки в def main() - создание списка эксперимента --> rw и kw
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
05.02.2021, 10:32  [ТС]
Gdez, ты разбираешься в matplotlib?
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
05.02.2021, 10:38
Жалил, не знаю
Не пробовал еще
0
0 / 0 / 0
Регистрация: 22.01.2021
Сообщений: 103
05.02.2021, 10:39  [ТС]
Мне просто нужно, чтобы результаты сохранились и сделать 2 гистограммы, для взрослого и ребенка и в каждой гистограмме будет по 100 повторений(эксперимент)
0
05.02.2021, 10:41

Не по теме:

Gdez, он намекает что тебе пора бы поразбираться, он то не собирается.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.02.2021, 10:41
Помогаю со студенческими работами здесь

Телеграм бот. Вызов в main файле функций из другого .py файла
Есть main файл с кодом: import telebot bot = telebot.TeleBot('ТОКЕН') a= # -------------------------------------------------- ...

Вызов функции из другого файла
Доброго времени суток. Друзья подскажите, как можно вызвать функцию из другого файла? У меня сейчас tree сайта такого вида: ...

Вызов функции из другого файла
Добрый день. Есть глупый вопрос. Предположим, есть файл index.html К этому файлу подключены два js файла - one.js и two.js В файле...

Вызов функции другого файла
Всем привет. Есть файл с функциями, это функции уведомлений. Например там хранятся такие функции: function delete_project( $args ) {...

Вызов функции из другого файла
Знаю этот вопрос, задавался не раз(возможно), но поиск показал одну тему в которой, небыло дано ясного ответа... Так вот в чем вопрос:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru