Найти - Пользователи
Полная версия: Сокращение кода (помогите школьнику-неучу)
Начало » Python для новичков » Сокращение кода (помогите школьнику-неучу)
1 2
BlockMan
Я школьник, нам задали по информатике написать код на Python, который будет находить гипотенузу по теореме Пифагора. Т.е.: пользователь вводит длину первого и второго катета, после чего на экран выводится на экран. Код должен быть максимально коротким. Вот что у меня получилось:
#Импортируем модуль для работы с математическими функциями
import math
#Ввод длины катетов
kat1 = input("Введите длину первого катета:")
kat2 = input("Введите длину второго катета:")
#Возводим катеты в квадрат
katq1 = kat1 ^2
katq2 = kat2 ^2
gipq = katq1 + katq2#Находим сумму квадратов катетов
gip = math.sqrt(gipq) #Находим квадратный корень из квадрата гипотенузы
print gip #Выводим результат

Оно работает, но у меня вопрос: можно-ли код сделать ещё короче?
P.S.: Прошу вас, не будьте как люди с других форумов, не пишите в комментариях “Школота вон!”, “Гугль в помащщ!!”. Мне просто нужна помощь.
smoke853
Ну можно так например:
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).
Soteric
Можно вычислить все одной формулой без промежуточных результатов
gip = math.sqrt(kat1^2 + kat2^2)
Не совсем ясно почему и от кого исходит требование “как можно короче”. Лучше понятнее, чем короче :)
BlockMan
smoke853
P.S.S. также kat1 ^2 - это не возведение в квадрат насколько я знаю, тут должно быть kat1 ** 2 или pow(kat1, 2).
Нас учили что ^- возведение в степень . Буду выяснять…
Soteric
Не совсем ясно почему и от кого исходит требование “как можно короче”. Лучше понятнее, чем короче
Like!
smoke853
BlockMan, в Python насколько я знаю, ^ - это битовая операция XOR (исключающая ИЛИ).
А проверил я очень просто: 10 в квадрате или во второй степени это 100, или 10*10 или 10 ** 2. если написать 10 ^2 будет 8
BlockMan
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. Почему это мы так от всех отделились- не знаю
smoke853
BlockMan, наоборот хорошо что вы изучаете python, мы в школе, технаре, универе, вообще не какие языки не изучали А я хотел бы чтобы у нас хоть что-то было Канеш я не на программиста учился, ну хоть базу бы дали.

По поводу hypot, hypot это тоже самое что sqrt(x*x + y*y).
BlockMan
smoke853
BlockMan, наоборот хорошо что вы изучаете python
Да, хорошо. Особенно если учесть тот факт, что по мнению нашего учителя 1ТБ = 1024КБ, то вообще великолепно!
doza_and
без import math
a,b=map(float,input().split())
print((a**2+b**2)**0.5)
BlockMan
doza_and
без import math
Уже помогли)))
Модер, закрывай тему.
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