Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 01.03.2022
Сообщений: 16

Не передаются аргументы в функции из вложенных функций

10.04.2022, 17:25. Показов 954. Ответов 4

Студворк — интернет-сервис помощи студентам
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
from tkinter import *
 
root = Tk()
root.title('Решение систем линейных алгебраических уравнений методом Гаусса')
 
wid_r = root.winfo_screenwidth() - 20
hei_r = root.winfo_screenheight()
root.geometry('{}x{}'.format(wid_r,hei_r))
 
# высота иконок
h = 25
# ширина иконок
w = 25
# промежуток между иконками по высоте
tr = 30
 
def vivod(): # вывод системы
    print("\n")
    for i in res:
        for j in i:
            print(j, end="\t")
        print("\n")
 
def gauss_decision(res): # решение системы
    k = 1 
    while k != len(res)-1:
        for i in range(1,len(res)):
            q = res[i][0]
            for j in range(len(res[0])):
                res[i][j] = res[i][j] - (q/res[0][0] * res[0][j])
                vivod()
                if ((i == len(res)-1) and (j == len(res[0])-1)):
                    for ii in range(k+1, len(res)):
                        w = res[ii][k]
                        for jj in range(k, len(res[0])):
                            res[ii][jj] = res[ii][jj] - (w/res[k][k] * res[k][jj])
                            vivod()
                    k += 1
   
def print_answer(): # вывод ответа
 
    if len(res) == 3:
        z = res[2][3] / res[2][2]
        y = (res[1][3] - res[1][2]*z) / res[1][1]
        x = (res[0][3] - res[0][2]*z - res[0][1]*y) / res[0][0]
        print('x = ',x, '\ny = ',y, '\nz = ',z)
 
def _x3(event): # Создание модулей для заноса чисел (Tkinter)
 
    promejutok = []
    for i in range(3):
        for j in range(3):
            ent = Entry(width = 3)
            promejutok.append(ent)
            ent.place(x=10+2*j*h, y = 50+i*tr,
                      height=h, width=w)
            if j == 0:
                lab = Label(text = 'x')
                lab.place(x=10+h, y=50+i*tr,
                          height=h,width=w)
            if j == 1:
                lab = Label(text = 'y')
                lab.place(x=10+3*h, y=50+i*tr,
                            height=h, width=w)
            if j == 2:
                lab = Label(text = 'z')
                lab.place(x=10+5*h, y=50+i*tr,
                            height=h, width=w)
        blab = Label(text = '=')
        blab.place(x=10+6*h, y=50+i*tr,
                   height=h, width=w)
        bent = Entry(width = 3)
        bent.place(x=10+7*h, y=50+i*tr,
                   height=h, width=w)
        promejutok.append(bent)
 
 
    def result(event): # добавление из Tkinter чисел в массив
        res = []
        for i in range((len(promejutok)//4)):
            res.append([])
            for j in range((len(promejutok)//3)):
                if i == 0:
                    res[i].append(int(promejutok[j].get()))
                if i == 1:
                    res[i].append(int(promejutok[j+4].get()))
                if i == 2:
                    res[i].append(int(promejutok[j+8].get()))
        vivod()
        gauss_decision(res)
        print_answer()
        
    button_result.bind('<Button-1>',result)
 
 
# Кнопки для работы программы (Tkinter)
button_x3 = Button(text = 'Матрица 3х3')
button_x3.place(x=140, y=10, height=30,
                width=120)
button_result = Button(text = 'res')
button_result.place(x=400, y=10, height=30,
                width=120)
button_x3.bind('<Button-1>',_x3)
root.mainloop()
Не могу разобраться с функциями и их аргументами. В отдельной программе без вложенных функций всё прекрасно работало, сюда перенес, и начало ругаться
На данном этапе ошибку выводит в 89 и 19 строках
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2022, 17:25
Ответы с готовыми решениями:

Разбиение вложенных функций на отдельные функции
Есть функция, которая вызывает функцию, в которой вызывается еще одна функция. Так вот, как разбить все вложенные функции на отдельные...

Не передаются аргументы
float input_matrix(); void change_matrix(float**, int); void print_matrix(float**, int ); int main() { setlocale(LC_ALL,...

Не передаются аргументы в Invoke-Command
Я хочу открыть два окна powershell. Я написал ps1 скрипт, который открывает второе окно ps при помощи Invoke-Command, но мне нужно передать...

4
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
11.04.2022, 14:14
А вы попробуйте передавать аргументы в функции.
0
 Аватар для Semen-Semenich
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,305
12.04.2022, 09:39
зачем писать гуи если вывод идет в консоль? ну ладно с этим. а вы про области видимости хоть что то почитали? это когда переменная созданная в функции не будет видна в основном коде и в другой функции
0
 Аватар для kapbepucm
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
12.04.2022, 10:24
Лучший ответ Сообщение было отмечено Xelum как решение

Решение

строка 89:
vivod(res)

строка 17:
def vivod(res):

Полагаю, если проблема в параметрах, этого должно хватить.
0
0 / 0 / 0
Регистрация: 01.03.2022
Сообщений: 16
12.04.2022, 19:38  [ТС]
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
зачем писать гуи если вывод идет в консоль? ну ладно с этим. а вы про области видимости хоть что то почитали? это когда переменная созданная в функции не будет видна в основном коде и в другой функции
Хотел сначала посмотреть в консоли вывод, и только потом выводить в интерфейс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2022, 19:38
Помогаю со студенческими работами здесь

Как передаются аргументы в WinAPI
Во многих функция в WinAPI происходит передача совсем не тех параметров которые написаны в объявлении функции. Например вот объявление для...

Kohana 3.3 не передаются аргументы в шаблон
Здравствуйте! Никак не могу побороть проблему,- дома на локальном все работает, а на хостинге выдает ошибку. Сайт в дочернем окне...

Не передаются аргументы в функцию, но и ошибки не выдает
Вкратце, чтоб вы понимали суть - у меня есть пункты во frame1 в виде кнопок, при нажатии на любую из них выводится диалоговое окно(в данном...

Каким образом аргументы передаются по значению?
Всем доброго суток. Решил познать язык С. Взял для начала книжку Кернигана-Ритчи. Дошел до раздела &quot;Аргументы: передача по...

Создание функции, формирующую предложение из аргументов функции, аргументы . Аргументы - переменное число
Короче, вот бы всё норм. Хочу соединять, но он мне выдаёт ошибку, когда использую strcat. Не могу понять, с типами аргументов вроде проблем...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru