Форум сайта python.su
0
Кто помнит мою Домашнюю работу? 
Я решил продолжить программу. Принцип прост:
1)Пользователь вводит две любые стороны прямоугольного треугольника (хоть катет, хоть гипотенузу)
2)Программа выщитывает два случая:
A)Случай, при котором известны 2 катета
В)Случай, при котором известны катет и гипотенуза
3)Выводит результат на экран
Вот и сам код:
import math stor1 = input("Введите длину 1-ой стороны:") stor2 = input("Введите длину 2-ой стороны:") stor1q = stor1 * stor1 stor2q = stor2 * stor2 gipq = stor1q + stor2q gip = math.sqrt(gipq) if stor1q > stor2q: katq = stor1q - stor2q if stor2q > stor1q: katq = stor2q - stor1q kat = math.sqrt(katq) print "Если одна сторона катет, а другая гипотенуза, то третья сторона = ", kat print "Если обе стороны катеты, то третья сторона = ", gip
Отредактировано BlockMan (Фев. 13, 2013 17:05:27)
Офлайн
Советую всегда проверять вводимые пользователем данные на их корректность, прежде чем производить подсчеты. Например, не существует треугольника со стороной нулевой длины…
Офлайн
0
dimy44…и не бывает сторон треугольника с отрицательной длиной. Принято. Вопрос: как вернуться к началу, если обнаружена ошибка? Есть ли в python что-то вроде GoTo, как в Basic'e?
Советую всегда проверять вводимые пользователем данные на их корректность, прежде чем производить подсчеты. Например, не существует треугольника со стороной нулевой длины…
Отредактировано BlockMan (Фев. 13, 2013 17:43:55)
Офлайн
4
Для проверки корректности данных используйте try…except…
Офлайн
0
RomissСпасибо! Держи репу
Для проверки корректности данных используйте try…except…
Офлайн
4
Посмотри что будет, если пользователь ввел одинаковые длины сторон…
Отредактировано Romiss (Фев. 13, 2013 18:18:14)
Офлайн
0
RomissАх, да… Он пытается вычеслить квадратный корень из 0 и выводит ошибку… Решаю…
Посмотри что будет, если пользователь ввел одинаковые длины сторон…
Офлайн
4
Ошибка выводится не из-за вычисления корня из нуля…При одинаковых длинах сторон у тебя нет katq.
Офлайн
1
GoTo? Чтобы я больше от Вас такого не слышал) Если хотите луп, то используйте while True и делайте break по условию для выхода.
так красивее
stor1q = stor1**2
stor2q = stor2**2
промежуточная сумма все равно не нужна
gip = math.sqrt(stor1q+stor2q)
Если треугольник равнобедренный, то ни одно из условий не сработает
if stor1q > stor2q:
katq = stor1q - stor2q
if stor2q > stor1q:
katq = stor2q - stor1q
Офлайн
0
warikУх, какие добрые люди! Другие бы уже сьели
GoTo? Чтобы я больше от Вас такого не слышал) Если хотите луп, то используйте while True и делайте break по условию для выхода.так красивееstor1q = stor1**2stor2q = stor2**2промежуточная сумма все равно не нужнаgip = math.sqrt(stor1q+stor2q)Если треугольник равнобедренный, то ни одно из условий не сработаетif stor1q > stor2q: katq = stor1q - stor2qif stor2q > stor1q: katq = stor2q - stor1q

Офлайн