Как написать программу для вычисления площади треугольника питон

Эй, ребята, у меня проблемы с выводом площади и периметра треугольника с учетом сторон по формуле Герона. Вот мой код:

def main(): a = int(input(‘Enter first side: ‘)) b = int(input(‘Enter second side: ‘)) c = int(input(‘Enter third side: ‘)) def area(): # calculate the sides s = (a + b + c) / 2 # calculate the area area = (s*(s-a)*(s-b)*(s-c)) ** 0.5 return area area() def perimeter(): # Calculate the perimeter perim = a + b + c return perim perimeter() print( ‘Area is: ‘,format(area,’.1f’)) print( ‘Perimeter is: ‘,format(perim,’,.1f’)) main()

Я получаю много ошибок, таких как

  • Ошибка типа: непустая строка формата, переданная объекту.формат
  • NameError: имя ‘perim’ не определено

Я должен сделать это, попросив стороны в главной функции, а затем вызвать вторую и вывести ответы с одним десятичным знаком.

Может кто-нибудь сказать мне, что я делаю не так?

user4505132 11 фев ’15 в 22:01 2015-02-11 22:01
2015-02-11 22:01

3 ответа

Вам необходимо присвоить возвращаемые значения и сделать три длины сторон глобальными. Честно говоря, вы должны прочитать больше о области переменных, которые являются уровнями, в которых переменные определены. Кроме того, имена ваших переменных не должны перезаписывать имена ваших функций. Таким образом, вы можете использовать эти маленькие функции позже в любом месте вашего скрипта, просто вызывая их и передавая три параметра.

Решение простых задач на python | Площадь и периметр прямоугольного треугольника


def area(a, b, c): # calculate the sides s = (a + b + c) / 2 # calculate the area area = (s*(s-a)*(s-b)*(s-c)) ** 0.5 return area def perimeter(a, b, c): # Calculate the perimeter perim = a + b + c return perim def main(): a = int(input(‘Enter first side: ‘)) b = int(input(‘Enter second side: ‘)) c = int(input(‘Enter third side: ‘)) print «Area is:», area(a, b, c) print «Perimeter is:», perimeter(a, b, c) main()

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

Источник: stackru.com

Урок 2.2. Формула Герона

На этом уроке вы создадите функцию, которая поможет вам вычислить площадь треугольника, используя длину его сторон. То есть вы создадите программу, в которой можно работать с данной функцией.

Читайте также:
Программа которая делает надписи

1. При создании программы для этого урока вам потребуется функция нахождения квадратного корня sqrt(), о которой мы уже говорили в предыдущем уроке. Но на этот раз мы будем использовать один из встроенных шаблонов Python, с помощью которого можно загрузить самые необходимые функции для работы с любым проектом.

Найти площадь прямоугольника, треугольника или круга. Решение задачи на Python

Когда вы создаете файл Add Python > New и вводите название файла Python (мы используем area в примере), открывается область под именем, которая называется Type:. Типом по умолчанию будет «Пустая программа» (Blank Program). При нажатии на всплывающую стрелку справа можно увидеть и другие доступные типы проектов по программированию (их немало!).

Для вашего текущего проекта вам необходимо выбрать следующий тип: Math Calculations (Математические вычисления) — и нажать на OK или enter.

Примечание для учителя: Программные шаблоны предоставляют доступ к большинству самых необходимых модулей и функций, но при необходимости вы также можете добавлять и другие функции, которые не представлены здесь для работы с проектами. Зачастую пользователям в работе с данной системой сложно сразу запомнить, в каком модуле находится требуемая функция. Но с течением времени можно отработать этот навык. Такой модульный принцип организации является одним из преимуществ в работе с Python. С ней любой проект выполняется просто, быстро и эффективно.

2. Шаблон Math Calculations дает доступ к следующему выражению:

from math import *

Далее ваша задача выбрать выражение def function() через меню: menu > Built-ins > Function.

3. Назовите функцию heron. Здесь присутствуют три аргумента — a, b и c, которые представляют стороны треугольника.

В следующем шаге вы увидите, что нужно написать в области блока (block).

Примечание для учителя: Функция может иметь много аргументов (или один), и в программировании на языке Python вы можете задавать значения для аргументов по умолчанию, но в рамках этого курса этот вопрос не освещается.

4. Вычисления по Формуле Герона происходят в два этапа:

Первый — это вычисление полупериметра:

s = (a + b + c) / 2

Второй — нахождение площади:

area = sqrt(s*(s — a)*(s — b)*(s — c))

Читайте также:
Установить программу для удаления ненужных файлов

Помните, что оба выражения в этом блоке функции необходимо структурировать.

Примечание для учителя: Обращайте внимание на то, чтобы весь блок функции был надлежащим образом структурирован!

5. Закончите работу с функцией выражением return

return area

Его можно найти в меню: menu > Built-ins > Function.

Как и в стандартных математических вычислениях функции имеют аргументы и «вычисляют» значение. Выражение return необходимо для того, чтобы «отослать» значение обратно к основной программе, в которой его можно использовать.

Важно: Переместите курсор вставки обратно к началу новой строки, используя кнопки del или комбинацию кнопок shift+tab. Для удобства чтения и работы вы также можете оставить пустыми одну или несколько строк.

Примечание для учителя: Пробелы в программе не оказывает никакого эффекта на вычисление.

6. Теперь пришло время написать основную программу, используя следующие выражения:

input() (вводится 3 раза для каждой из сторон)

Примечание для учителя: Объясним разницу между «формальными» аргументами в определении функции (a, b, c) и «фактическими» аргументами (x, y, z) при вызове функции в выражении print. Аргументы a, b и c являются «символами-заполнителями», которые получают свои «фактические» значения из переменных, используемых при вызове функции.

8. Протестируйте свою программу с использованием простых чисел, на основании которых вы сами можете легко вычислить площадь, например, с числами 3, 4 и 5. Почему площадь равняется 6? Площадь каких других видов треугольников также легко вычисляется при известных длинах трех сторон?

Не забудьте сохранить свою работу.

Примечание для учителя: Касательно тестирования на числах. Площадь прямоугольного треугольника вычисляется просто. Поэтому любая Пифагорова тройка хорошо подойдет для тестирования. Площадь равностороннего треугольника тоже легко вычислить, но результат вычисления не будет отображен в виде простого числового значения.

Источник: calculators-online.ru

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Формула Герона

#1 Июль 28, 2014 07:42:25

Формула Герона

Начинаю изучать Python, написал программку для расчета площади треугольника по формуле Герона.

def geron(a, b, c): p = (a+b+c)/2 print (‘Полупериметр =’, p ) s = (p*(p-a)*(p-b)*(p-c))**0.5 return s inputs = [3,4,8], [7,8,9], [5,3,2] for n in inputs: S = geron(n[0], n[1], n[2]) print (‘Площадь =’,S, ‘n’)

На выходе получается вот такая странная штука, в зависимости от исходных данных получается либо комплексное число, либо float, либо 0

Полупериметр = 7.5
Площадь = (4.705835796207353e-16+7.685213074469699j)

Читайте также:
Программа для построения графиков функции по точкам

Полупериметр = 12.0
Площадь = 26.832815729997478

Полупериметр = 5.0
Площадь = 0.0
sqrt из match дает тот же результат.
Объясните, плз, почему так происходит, и как исправить?

#2 Июль 28, 2014 08:14:47

Формула Герона

Потому что не может быть треугольника со сторонами 3,4,8
Сумма двух любых сторон треугольника всегда больше третьей.
Тут у тебя получается отрицательное значение p — 8.

#3 Июль 28, 2014 08:17:14

Формула Герона

Спасибо! Пора поспать

#4 Июль 28, 2014 14:28:13

Формула Герона

Вот, дописал проверки на длины сторон треугольника и на их количество, чтобы лучше запомнить чего и сколько у него бывает
Все вроде работает, но наверняка что-то реализовано криво. Что тут можно было сделать проще или правильнее?
Занялся программированием дня 4 назад. Так что это то пока моя самая большая программа

def geron(a, b, c): p = (a+b+c)/2 print (‘Полупериметр =’, p ) s = (p*(p-a)*(p-b)*(p-c))**0.5 print (‘Площадь =’,s, ‘n’) return s def y_n(qwes): ch = input(qwes) while ch.lower() not in (‘y’, ‘n’): ch = input(«выберете y/nn») return ch.lower() def test(a,b,c): ttt = (a, b, c) sor = sorted(ttt) if sor[2] >= sor[0]+sor[1]: print(‘Это не треугольник, идиот :)’) main() else: geron(a, b, c) def main(): abc = input(‘Введите длины сторон треугольника через пробелn’).split() for i in range(len(abc)): abc[i] = int(abc[i]) if len(abc) != 3: print(‘У треугольника 3 стороны ;)’) main() a = abc[0] b = abc[1] c = abc[2] test(a, b, c) ans = y_n(‘Посчитать еще один треугольник?n’) if ans == ‘y’: main() elif ans == ‘n’: print(‘Удачи!’) exit(0) main()

#5 Июль 28, 2014 15:26:48

Формула Герона

1. Постарайтесь разделить логику различных функций. Например, зачем функции main определять валидность треугольника? Пусть это делает функция расчета площади треугольника. Зачем функция main вообще знает о существовании какой-то функции test и нафиг она нужна?

Представьте, что Вы пишите отдельный модуль для вычисления площадей фигур и в вашей программе, которая использует этот модуль есть сотня фигур. Как тогда будет выглядеть main?
2.

a = abc[0] b = abc[1] c = abc[2] test(a, b, c)

Плохо, так лучше

test(*a)
if ans == ‘y’:

Ну нафига? Опять одна функция лезет в логику другой. Пусть ans возвращает True/False.

Если Вы сами будете использовать чужую функцию, хотелось бы Вам, чтобы она возвращала какие-то магические зашифрованные литералами значения, которые потом пришлось бы распознавать if-ами?

Источник: python.su

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru