Python

Задача 1 Яндекс практика (Python)

Задача 1
Программа делает всё, что требовалось Афанасию: рассчитывает количество материала, необходимое для строительства восьми кубов. А если понадобится сделать три куба или десять?
Сделайте программу более универсальной, измените её так, чтобы в неё можно было передать не только сторону куба, но и количество кубов. Для этого понадобится второй аргумент в функции calc_cube()

Измените строку, в которой объявляется функция calc_cube(): добавьте второй аргумент (назовите его, например, amount).
В тех строках функции calc_cube(), где используется число кубов, используйте значение переменной amount.
В строке, которую печатает функция, выводится количество кубов; там тоже потребуется вывести значение переменной amount.



Моё решение

# Функция для вычисления периметра кубов.
def calc_cube_perimeter(side):
return side * 12


# Функция для вычисления площади кубов.
def calc_cube_area(side):
one_face = side * side
cube_area = one_face * 6
return cube_area


# Дополните объявление функции:
# теперь должна принимать два параметра -
# длину ребра куба и количество кубов.

# Функция для вычисления периметра куба.
def calc_cube_perimeter(side):
return side * 12
# Присвойте переменной one_cube_perimeter значение,
# которое вернёт функция calc_cube_perimeter() с аргументом 3:
# 3 метра - это длина ребра куба.

one_cube_perimeter = calc_cube_perimeter(3)


def calc_cube (side, amount):
# Вызываем функцию, рассчитывающую периметр
# и передаём в неё размер куба
one_cube_perimeter = calc_cube_perimeter(side)

# Здесь вместо многоточия должна стоять переменная,
# хранящая количество кубов, переданное во втором аргументе.
full_length = one_cube_perimeter * 8
full_length = one_cube_perimeter * amount
# Вызываем функцию, рассчитывающую площадь стекла
# и передаём в неё размер куба
one_cube_area = calc_cube_area(side)

# Здесь вместо многоточия должна стоять переменная,
# хранящая количество кубов, переданное во втором аргументе.
full_area = one_cube_area * 8

# В этой строке замените многоточие на переменную, хранящую количество кубов
print('Для', full_area, 'кубов понадобится палок (м):', full_length, 'и стекла (кв.м):', full_area)


# Для проверки работы кода вызываем функцию с двумя аргументами:
# 3 - это размер ребра куба,
# 2 - это необходимое количество кубов
calc_cube(3, 2)



Пишет ошибку за ошибкой.
Последняя

Traceback (most recent call last):
File "main.py", line 42, in <module>

NameError: name 'one_cube_area' is not defined


Помогите сделать!
 # Function to calculate the perimeter of the cubes. 
def calc_cube_perimeter(side):
return side * 12

# Function to calculate the area of the cubes.
def calc_cube_area(side):
one_face = side * side
cube_area = one_face * 6
return cube_area

def calc_cube (side, amount):
# Call the function that calculates the perimeter
# and send in it the size of the cube
one_cube_perimeter = calc_cube_perimeter(side)

# Here instead of dots there should be a variable
# variable that stores the number of cubes passed in the second argument.
full_length = one_cube_perimeter * amount

# call the function that calculates the area of the glass
# and pass to it the size of the cube
one_cube_area = calc_cube_area(side)

# Here instead of dots there should be a variable
# variable that stores the number of cubes passed in the second argument.
full_area = one_cube_area * amount

# In this line replace the ellipsis with a variable storing the number of cubes
print('For', amount, 'cubes you will need sticks (m):', full_length, 'and glass (sqm):', full_area)

# To check how the code works, we call a function with two arguments:
# 3 is the size of the cube edge,
# 2 is the required number of cubes
calc_cube(3, 2)
Владимир Футбол
Владимир Футбол
1 441
Лучший ответ
Оформите в блок кода < >, читать невозможно
Также не автоформатируется при копировании из-за обилия комментариев...

Ошибка простейшая, вы где-то обращаетесь к переменной вне функции, объявленной в функции, наверняка
Обухов Вадим А где? Помогите
Обухов Вадим Не могу решить уже несколько дней
Обухов Вадим Всё правильно, кроме расчётов.
Ответ: Для 432 кубов понадобится палок (м): 72 и стекла (кв.м): 432

а должен быть: Для 2 кубов понадобится палок (м): 72 и стекла (кв.м): 108
Обухов Вадим # Функция для вычисления периметра кубов.
def calc_cube_perimeter(side):
return side * 12
# Функция для вычисления площади кубов.
def calc_cube_area(side):
one_face = side * side
cube_area = one_face * 6
return cube_area
Обухов Вадим # Функция для вычисления периметра куба.

def calc_cube_perimeter(side):

return side * 12

one_cube_perimeter = calc_cube_perimeter(3)

def calc_cube (side, amount):

one_cube_perimeter = calc_cube_perimeter(side)



full_length = one_cube_perimeter * 8

full_length = one_cube_perimeter * amount

one_cube_area = calc_cube_area(side)

full_area = one_cube_area * 8



print('Для', full_area, 'кубов понадобится палок (м):', full_length, 'и стекла (кв.м):', full_area)



# Для проверки работы кода вызываем функцию с двумя аргументами:

# 3 - это размер ребра куба,

# 2 - это необходимое количество кубов

calc_cube(3, 2)
Примерно так это выглядит:
def cube_perimeter(side):
return side*12 #TAB HERE
def cube_area(side):
return side*side*6 #TAB HERE
def full_area(side, amount):
return cube_area(side) * amount #TAB HERE
def calc_cube(side, amount):
print('Для', amount, 'кубов понадобится палок (м):', cube_perimeter(side), 'и стекла (кв.м):',full_area(side, amount)) #TAB HERE
calc_cube(3, 2)
КД
Князь Додон
25 126
Обухов Вадим Traceback (most recent call last):
File "main.py", line 13, in <module>

File "main.py", line 12, in calc_cube

NameError: name 'cube_perimeter' is not defined

Выдаёт ошибку
Расскажите, пожалуйста, как называется ваше направление?
Dimitrii
Dimitrii
673
Обухов Вадим Python разработчик
Dimitrii Рекомендую очень познакомиться с рекурсивными функциями. Алгоритм вычисления факториала, задача "Хайноские башни". Рекурсивные функции они очень сложные для восприятия, но как изучите, то считайте научились думать как программист.