Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 12, 2013 17:34:52

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

Сокращение кода (помогите школьнику-неучу)

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

#Импортируем модуль для работы с математическими функциями
import math
#Ввод длины катетов
kat1 = input("Введите длину первого катета:")
kat2 = input("Введите длину второго катета:")
#Возводим катеты в квадрат
katq1 = kat1 ^2
katq2 = kat2 ^2
gipq = katq1 + katq2#Находим сумму квадратов катетов
gip = math.sqrt(gipq) #Находим квадратный корень из квадрата гипотенузы
print gip #Выводим результат

Оно работает, но у меня вопрос: можно-ли код сделать ещё короче?
P.S.: Прошу вас, не будьте как люди с других форумов, не пишите в комментариях “Школота вон!”, “Гугль в помащщ!!”. Мне просто нужна помощь.



________________________________________________________________________________

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

Офлайн

#2 Фев. 12, 2013 18:57:12

smoke853
Зарегистрирован: 2012-10-02
Сообщения: 123
Репутация: +  15  -
Профиль   Отправить e-mail  

Сокращение кода (помогите школьнику-неучу)

Ну можно так например:

import math
kat1 = float(input("Введите длину первого катета:"))
kat2 = float(input("Введите длину второго катета:"))
print(math.hypot(kat1, kat2))
P.S. это код для 3-го Python, если 2-я ветка то вместо input, нужно написать raw_input, и print без скобок.
P.S.S. также kat1 ^2 - это не возведение в квадрат насколько я знаю, тут должно быть kat1 ** 2 или pow(kat1, 2).

Отредактировано smoke853 (Фев. 12, 2013 19:04:00)

Офлайн

#3 Фев. 12, 2013 18:57:55

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Сокращение кода (помогите школьнику-неучу)

Можно вычислить все одной формулой без промежуточных результатов

gip = math.sqrt(kat1^2 + kat2^2)
Не совсем ясно почему и от кого исходит требование “как можно короче”. Лучше понятнее, чем короче :)



Офлайн

#4 Фев. 12, 2013 19:07:18

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

Сокращение кода (помогите школьнику-неучу)

smoke853
P.S.S. также kat1 ^2 - это не возведение в квадрат насколько я знаю, тут должно быть kat1 ** 2 или pow(kat1, 2).
Нас учили что ^- возведение в степень . Буду выяснять…
Soteric
Не совсем ясно почему и от кого исходит требование “как можно короче”. Лучше понятнее, чем короче
Like!



________________________________________________________________________________

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

Отредактировано BlockMan (Фев. 12, 2013 19:09:02)

Офлайн

#5 Фев. 12, 2013 19:11:52

smoke853
Зарегистрирован: 2012-10-02
Сообщения: 123
Репутация: +  15  -
Профиль   Отправить e-mail  

Сокращение кода (помогите школьнику-неучу)

BlockMan, в Python насколько я знаю, ^ - это битовая операция XOR (исключающая ИЛИ).
А проверил я очень просто: 10 в квадрате или во второй степени это 100, или 10*10 или 10 ** 2. если написать 10 ^2 будет 8

Офлайн

#6 Фев. 12, 2013 19:17:40

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

Сокращение кода (помогите школьнику-неучу)

smoke853
import math
kat1 = float(input("Введите длину первого катета:"))
kat2 = float(input("Введите длину второго катета:"))
print(math.hypot(kat1, kat2))
Не выйдет, из math'a мы изучили только
math.sqrt()
Тоска-печаль.
smoke853
BlockMan, в Python насколько я знаю, ^ - это битовая операция XOR (исключающая ИЛИ).А проверил я очень просто: 10 в квадрате или во второй степени это 100, или 10*10 или 10 ** 2. если написать 10 ^2 будет 8
Уже сам проверил, значит буду учиться сам дополнительно, отдельно от школьной программы. Язык понравился
З.Ы.: По идее в школах мы должны изучать Pascal или/и Basic. Почему это мы так от всех отделились- не знаю



________________________________________________________________________________

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

Офлайн

#7 Фев. 12, 2013 19:24:44

smoke853
Зарегистрирован: 2012-10-02
Сообщения: 123
Репутация: +  15  -
Профиль   Отправить e-mail  

Сокращение кода (помогите школьнику-неучу)

BlockMan, наоборот хорошо что вы изучаете python, мы в школе, технаре, универе, вообще не какие языки не изучали А я хотел бы чтобы у нас хоть что-то было Канеш я не на программиста учился, ну хоть базу бы дали.

По поводу hypot, hypot это тоже самое что sqrt(x*x + y*y).

Офлайн

#8 Фев. 12, 2013 19:32:49

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

Сокращение кода (помогите школьнику-неучу)

smoke853
BlockMan, наоборот хорошо что вы изучаете python
Да, хорошо. Особенно если учесть тот факт, что по мнению нашего учителя 1ТБ = 1024КБ, то вообще великолепно!



________________________________________________________________________________

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

Офлайн

#9 Фев. 12, 2013 20:36:41

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Сокращение кода (помогите школьнику-неучу)

без import math

a,b=map(float,input().split())
print((a**2+b**2)**0.5)



Офлайн

#10 Фев. 12, 2013 20:38:22

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

Сокращение кода (помогите школьнику-неучу)

doza_and
без import math
Уже помогли)))
Модер, закрывай тему.



________________________________________________________________________________

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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version