Задача 1 яндекс практика (python) - Общение Python мододелов

Вопрос Задача 1 яндекс практика (python)

Регистрация
1 Окт 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Задача 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





Помогите сделать!
 

Dem

Capitan

Dem

Capitan
Регистрация
20 Сен 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Примерно так это выглядит:
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)
 
Регистрация
21 Ноя 2012
Сообщения
92
Репутация
0
Спасибо
0
Монет
0
Оформите в блок кода < >, читать невозможно
Также не автоформатируется при копировании из-за обилия комментариев...

Ошибка простейшая, вы где-то обращаетесь к переменной вне функции, объявленной в функции, наверняка
 
Регистрация
21 Ноя 2013
Сообщения
89
Репутация
0
Спасибо
0
Монет
0
Расскажите, пожалуйста, как называется ваше направление?
 
Сверху Снизу