Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 13, 2013 16:59:28

BlockMan
Зарегистрирован: 2013-02-12
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

Кто помнит мою Домашнюю работу?
Я решил продолжить программу. Принцип прост:
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



________________________________________________________________________________

Школота- не школьник, школота это состояние мозга (С) Neutize

Отредактировано BlockMan (Фев. 13, 2013 17:05:27)

Офлайн

#2 Фев. 13, 2013 17:39:12

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Сокращение/улучшение и т.п. и т.д...

Советую всегда проверять вводимые пользователем данные на их корректность, прежде чем производить подсчеты. Например, не существует треугольника со стороной нулевой длины…

Офлайн

#3 Фев. 13, 2013 17:42:09

BlockMan
Зарегистрирован: 2013-02-12
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

dimy44
Советую всегда проверять вводимые пользователем данные на их корректность, прежде чем производить подсчеты. Например, не существует треугольника со стороной нулевой длины…
…и не бывает сторон треугольника с отрицательной длиной. Принято. Вопрос: как вернуться к началу, если обнаружена ошибка? Есть ли в python что-то вроде GoTo, как в Basic'e?



________________________________________________________________________________

Школота- не школьник, школота это состояние мозга (С) Neutize

Отредактировано BlockMan (Фев. 13, 2013 17:43:55)

Офлайн

#4 Фев. 13, 2013 18:07:26

Romiss
От:
Зарегистрирован: 2011-11-01
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

Для проверки корректности данных используйте try…except…



Офлайн

#5 Фев. 13, 2013 18:08:07

BlockMan
Зарегистрирован: 2013-02-12
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

Romiss
Для проверки корректности данных используйте try…except…
Спасибо! Держи репу



________________________________________________________________________________

Школота- не школьник, школота это состояние мозга (С) Neutize

Офлайн

#6 Фев. 13, 2013 18:17:44

Romiss
От:
Зарегистрирован: 2011-11-01
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

Посмотри что будет, если пользователь ввел одинаковые длины сторон…



Отредактировано Romiss (Фев. 13, 2013 18:18:14)

Офлайн

#7 Фев. 14, 2013 14:55:55

BlockMan
Зарегистрирован: 2013-02-12
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

Romiss
Посмотри что будет, если пользователь ввел одинаковые длины сторон…
Ах, да… Он пытается вычеслить квадратный корень из 0 и выводит ошибку… Решаю…



________________________________________________________________________________

Школота- не школьник, школота это состояние мозга (С) Neutize

Офлайн

#8 Фев. 14, 2013 15:17:25

Romiss
От:
Зарегистрирован: 2011-11-01
Сообщения: 26
Репутация: +  4  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

Ошибка выводится не из-за вычисления корня из нуля…При одинаковых длинах сторон у тебя нет katq.



Офлайн

#9 Фев. 14, 2013 15:26:50

warik
Зарегистрирован: 2013-02-06
Сообщения: 23
Репутация: +  1  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

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

Офлайн

#10 Фев. 14, 2013 16:18:36

BlockMan
Зарегистрирован: 2013-02-12
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокращение/улучшение и т.п. и т.д...

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 лет)



________________________________________________________________________________

Школота- не школьник, школота это состояние мозга (С) Neutize

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version