Найти - Пользователи
Полная версия: Сокращение/улучшение и т.п. и т.д...
Начало » Python для новичков » Сокращение/улучшение и т.п. и т.д...
1 2
BlockMan
Кто помнит мою Домашнюю работу?
Я решил продолжить программу. Принцип прост:
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

Думаю, обьяснять не надо, что делает каждая строка. Всё просто и понятно. Можно-ли сократить/улучшить/сделать красивей код? Если да, то как?
З.Ы.: Код для 2.7.3
dimy44
Советую всегда проверять вводимые пользователем данные на их корректность, прежде чем производить подсчеты. Например, не существует треугольника со стороной нулевой длины…
BlockMan
dimy44
Советую всегда проверять вводимые пользователем данные на их корректность, прежде чем производить подсчеты. Например, не существует треугольника со стороной нулевой длины…
…и не бывает сторон треугольника с отрицательной длиной. Принято. Вопрос: как вернуться к началу, если обнаружена ошибка? Есть ли в python что-то вроде GoTo, как в Basic'e?
Romiss
Для проверки корректности данных используйте try…except…
BlockMan
Romiss
Для проверки корректности данных используйте try…except…
Спасибо! Держи репу
Romiss
Посмотри что будет, если пользователь ввел одинаковые длины сторон…
BlockMan
Romiss
Посмотри что будет, если пользователь ввел одинаковые длины сторон…
Ах, да… Он пытается вычеслить квадратный корень из 0 и выводит ошибку… Решаю…
Romiss
Ошибка выводится не из-за вычисления корня из нуля…При одинаковых длинах сторон у тебя нет katq.
warik
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
BlockMan
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
Ух, какие добрые люди! Другие бы уже сьели
Я вообще сделал это для того, чтобы быстро сделать геометрию XD (мне как-никак ещё 13 лет)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB