PY Как вытащить данные переменных из функции
Начал изучать питон, подскажите, что я делаю не так? У меня из функции не вытаскиваются значения, а вывод в консоли Visual Studio вообще вот так выглядит: [Running] python -u "c:\Users\SNR93\Desktop\test.py" Traceback (most recent call last): File "c:\Users\SNR93\Desktop\test.py", line 17, in print("� ���", cube_number, "��� � ������ �����", cube_edge,"�. ��� �����������", cube_line_edge, " ������ ����� �", cube_m_2, "�^2 ������") NameError: name 'cube_line_edge' is not defined
[Done] exited with code=1 in 0.05 seconds
# глобальные переменные
cube_number = 2 #указываем количество кубов
cube_edge = 3 #указываем длину ребра в метрах
#делаем функцию
def cube_func(cube_number, cube_edge):
global cube_m_2, cube_line_edge
# считаем, сколько нам понадобится линий для кубов
cube_lines = cube_number * 12
# переводим палки в метры
cube_line_edge = cube_lines * cube_edge
# S = a^2 * 6
cube_m_2 = (cube_edge**2 * 6) * cube_number
return (cube_m_2, cube_line_edge)
print("У вас", cube_number, "куб с длиной ребра", cube_edge,"м. Вам понадобится", cube_line_edge, " метров палок и", cube_m_2, "м^2 стекла")
Ответы (2 шт):
Вы не вызвали функцию.
Обратите внимание, что параметры в функции могут иметь имена, отличные от имен переменных. Имеет значение лишь порядок их расположения.
par_1 = 17
par_2 = 24
def func(par_1, par_2):
print(par_1, par_2)
func(par_2, par_1) #Выведет сначала 24, а потом 17
Также в функциях существуют позиционные параметры, которые имеют значения по умолчанию и в том случае, если функция будет требовать 3 значения, а при ее вызове будет передано лишь 2, то позиционный аргумент примет значение по умолчанию.
Важный момент: позиционные аргументы всегда стоят последними в функции.
par_1 = 17
def func(par_1, par_2 = 7): #У par_2 значение по умолчанию = 7
print(par_1, par_2)
func(par_1) #Выведет сначала 17, а потом 7
Решение вашей проблемы ниже:
# глобальные переменные
cube_number = 2 #указываем количество кубов
cube_edge = 3 #указываем длину ребра в метрах
#делаем функцию
def cube_func(cube_number, cube_edge):
global cube_m_2, cube_line_edge
# считаем, сколько нам понадобится линий для кубов
cube_lines = cube_number * 12
# переводим палки в метры
cube_line_edge = cube_lines * cube_edge
# S = a^2 * 6
cube_m_2 = (cube_edge**2 * 6) * cube_number
return (cube_m_2, cube_line_edge)
print(cube_func(cube_number,cube_edge))
Вот ваш пример, который будет работать:
# глобальные переменные
cube_number = 2 #указываем количество кубов
cube_edge = 3 #указываем длину ребра в метрах
#делаем функцию
def cube_func(cube_number, cube_edge):
global cube_m_2, cube_line_edge# вот так делать не хорошо!
# считаем, сколько нам понадобится линий для кубов
cube_lines = cube_number * 12
# переводим палки в метры
cube_line_edge = cube_lines * cube_edge
# S = a^2 * 6
cube_m_2 = (cube_edge**2 * 6) * cube_number
return (cube_m_2, cube_line_edge)
cube_func(cube_number, cube_edge)#нужно запустить функцию, чтобы глобальные
#переменные записались в памяти...
print(
"У вас", cube_number, "куб с длиной ребра", cube_edge,"м. Вам понадобится",
cube_line_edge, " метров палок и", cube_m_2, "м^2 стекла"
)
Вот так правильнее:
# глобальные переменные
cube_number = 2 #указываем количество кубов
cube_edge = 3 #указываем длину ребра в метрах
#делаем функцию
def cube_func(cube_number, cube_edge):
# считаем, сколько нам понадобится линий для кубов
cube_lines = cube_number * 12
# переводим палки в метры
cube_line_edge = cube_lines * cube_edge
# S = a^2 * 6
cube_m_2 = (cube_edge**2 * 6) * cube_number
return (cube_m_2, cube_line_edge)
cube_m_2, cube_line_edge = cube_func(cube_number, cube_edge)
#получаем значения запуская функцию
print(
"У вас", cube_number, "куб с длиной ребра", cube_edge,"м.\nВам понадобится",
cube_line_edge, " метров палок и", cube_m_2, "м^2 стекла"
)