Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2011 16:20:50

esal
От:
Зарегистрирован: 2010-10-20
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка 3 чисел на возможность существования треугольника

Из коммандной строки запускаем скрипт с 3 параметрами. Они соотвествуют длинам треугольника.
Определить можно ли построить треугольник с такими длинами. Если да, то какой треугольник получим. (обычный, равнобедренный, равносторонний)
Я реализовал это сл образом. Жду комментариев по улучшению или совета о том, как улучшить данный код.



import sys
input_values = sys.argv[:]

def what_type_triangle(a,b,c):
if (a == b) and (b != c) or (b==c) and (a!=b): #ravnobedrenniy treugol
print 'Triangle with sides: %s %s %s is isosceles' % (a,b,c)
elif (a==b==c):
print 'Triangle with sides: %s %s %s is equilateral' % (a,b,c)
else:
print 'Triangle with sides: %s %s %s is common' % (a,b,c)

def is_it_triangle(length_sides):
length_sides.sort()
a = length_sides[0]
b = length_sides[1]
c = length_sides[2]
if (a<b+c) and (b<a+c) and (c<a+b) and (a>0) and (b>0) and (c>0):
print ('Yeah, you have got triangle')
what_type_triangle(a,b,c)
else:
print ('No!')

def make_digits(values):
nums = []
for value in values[1:]:
try:
ret = float(value)
nums.append(ret)
except ValueError:
sys.exit('bad data for this side: %s' % value )

print (nums)
is_it_triangle(nums)

if __name__ == '__main__':
make_digits(input_values)



Офлайн

#2 Апрель 18, 2011 16:33:33

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Проверка 3 чисел на возможность существования треугольника

esal
def what_type_triangle(a,b,c):
if (a == b) and (b != c) or (b==c) and (a!=b): #ravnobedrenniy treugol
print 'Triangle with sides: %s %s %s is isosceles' % (a,b,c)
elif (a==b==c):
print 'Triangle with sides: %s %s %s is equilateral' % (a,b,c)
else:
print 'Triangle with sides: %s %s %s is common' % (a,b,c)
Лучше так

def what_type_triangle(a,b,c):
if (a==b==c):
print 'Triangle with sides: %s %s %s is equilateral' % (a,b,c)
elif (a == b) or (b == c) or (a==c): #ravnobedrenniy treugol
print 'Triangle with sides: %s %s %s is isosceles' % (a,b,c)
else:
print 'Triangle with sides: %s %s %s is common' % (a,b,c)



Офлайн

#3 Апрель 18, 2011 19:11:52

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

Проверка 3 чисел на возможность существования треугольника

import sys
a,b,c = sorted(map(float,sys.argv[1:]))
if a<=0 or a+b<=c:
msg='плохой'
elif a==c:
msg="равносторонний"
elif a==b or b==c:
msg="рвнобедренный"
else:
msg="общий"
print msg
Проверка преобразования типов - не нужна все равно будет сообщение об ошибке.
(a>0) and (b>0) and (c>0) - избыточно после сортировки можно проверить только a.
(a<b+c) and (b<a+c) and (c<a+b) тоже избыточно.
main для такого скрипта не нужен (наверное)
В коде отсутствует проверка количества аргументов (у меня выпадет на массовом присваивании)



Отредактировано (Апрель 18, 2011 20:07:03)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version