#python #subroutine
Вопрос:
#Количество шаров, необходимое для заполнения детской площадки для игры в мяч, можно рассчитать следующим образом: объем площадки для игры в мяч, деленный на объем одного шара, умноженный на плотность упаковки.
#Плотность упаковки обычно составляет 0,75.
#Объем ямы для мяча рассчитывается как: Pi (3,14) * радиус2 * высота ямы для мяча.
#Объем шара рассчитывается как: (4/3) * Пи (3,14) * радиус3.
#Напишите функцию для возврата объема шаровой ямы по двум параметрам: радиусу шаровой ямы и высоте шаровой ямы.
#Напишите функцию для возврата объема шара по одному параметру: радиус шара.
#Программа должна вывести количество шаров, необходимое для заполнения ямы радиусом 1 м и высотой 0,2 м с использованием шаров размером 0,05 м.
import math
packing_density=0.75
def volume_of_ball_pit():
radius_pit= float(input("Input the radius of the pit"))
height_pit= float(input("Input the height of the ball pit"))
volume_pit= math.pi * radius_pit * height_pit
return volume_pit
def volume_of_ball():
radius_ball= float(input("Input the radius of the ball"))
volume_ball= (math.pi*(4/3))*radius_ball
return volume_ball
def balls_required():
volume_of_ball_pit()
volume_of_ball()
number_of_balls= (volume_pit/volume_ball)*packing_density
balls_required()
Я получаю ошибку, в которой мои переменные не определены, однако я думаю, что это уже было сделано в предыдущей подпрограмме, какие-нибудь советы?
Ответ №1:
Вы должны присвоить результаты функций переменным
def balls_required():
volume_pit = volume_of_ball_pit()
volume_ball = volume_of_ball()
number_of_balls= (volume_pit/volume_ball)*packing_density
Комментарии:
1. @Can’tgetmyprogramstowork Рад, что мне удалось помочь. Вы можете принять ответ.
Ответ №2:
переменные не могут видеть друг друга в разных значениях (функциях) , если вы не сделаете их глобальными :
сделайте ваши переменные глобальными в начале кода :
global radius_pit,height_pit,volume_pit, number_of_balls,
Ответ №3:
Прежде всего, объем сферы (здесь, шара) рассчитывается по формуле: (4/3) * pi * (r^3), а объем ямы (я полагаю, цилиндра) рассчитывается по формуле: pi * (r^2) * h
Вот как должен выглядеть фактический код:
import math
packing_density=0.75
def volume_of_ball_pit():
radius_pit= float(input("Input the radius of the pit"))
height_pit= float(input("Input the height of the ball pit"))
volume_pit= math.pi * radius_pit *radius_pit * height_pit
return volume_pit
def volume_of_ball():
radius_ball= float(input("Input the radius of the ball"))
volume_ball= (math.pi*(4/3))*radius_ball**3
return volume_ball
def balls_required():
number_of_balls= (volume_of_ball_pit()/volume_of_ball())*packing_density
print(number_of_balls)
if __name__ == '__main__':
balls_required()
Это может быть причиной того, что интерпретатор показывает, что ваши переменные не определены.
Комментарии:
1. спасибо, за дополнительную информацию, что такое имя if == ‘ main ‘: часть для
2. Это способ избежать запуска кода при импорте в другую программу на python. Это действительно не нужно, если вы не используете свой код в качестве пакета, поэтому не нужно беспокоиться об этом, даже если вы не используете name==main, ваш код будет работать правильно. Если вам понравилась моя дополнительная информация, вы можете принять мой ответ с зеленой галочкой.
3. @Can’tgetmyprogramstowork, это обычная (хорошая) практика программирования на Python. Это гарантирует, что функция вызывается при выполнении сценария (например, при использовании
python my_script.py
), но не при его импорте (при использовании#import my_script
в другом файле Python).