PDA

Просмотр полной версии : ? по Python


VIP
21.09.2008, 17:54
Не нашёл на сайте раздела для Python, но думаю здесь тема ближе всего.

Я с этого года поступил на программиста в универ. И пока только начинаю программировать. А вопрос у меня возник такой: как запустить исходник на Python?

Я делаю следующим образом:
1. Установил Python 2.5 для Windows.
2. В блокноте напечатал

print 'Please, enter a'
a = input()
print 'Please, enter b'
b = input()
print "%d + %d = %d" (a, b, a+b)

3. Сохранил файл под именем 1.py
4. Запустил Python (command line) (появилось ">>>")
5. Напечатал 1.py (так как файл лежит в папке с Python'ом)
6. Он мне выдал

File "<stdin>", line 1
1.py
SyntaxError: invalid syntax


Как мне запустить исполнение проги из файла. Главное если я печатаю всё в самом Python построчно, то всё работает.

Заранее спасибо!

P.S. Почему на этом форуме не обсуждается Python? Ведь это, как я понял, тоже довольно сильный язык?

Rejjin
21.09.2008, 18:04
Traceback (innermost last):
File "\1.py", line 5, in <module>
print "%d + %d = %d" (a, b, a+b)
<type 'exceptions.TypeError'>: 'str' object is not callable
у меня короче такая ошибка, но 2 окна ввода появляются

0x0c0de
21.09.2008, 18:07
>> А вопрос у меня возник такой: как запустить исходник на Python?

В командной строке windows cd c:\Python25 (или где там у вас python)

а потом набираете

python.exe 1.py

>> (появилось ">>>")

просто вы не ввели с первого раза при запуске имя файла. я выше написала как по-нормальному запустить. а чем не устраивает просто открыть файл с расширением *.py? обязательно хотите через командную строку. ну как хотите

и вообще

print '%d + %d = %d' % (a, b, a+b)

так надо, а то не проробит

Rejjin
21.09.2008, 18:15
print 'Please, enter a'
a = input()
print 'Please, enter b'
b = input()
print "%d + %d = %d" %(a, b, a+b)
держи

VIP
21.09.2008, 18:24
>> А вопрос у меня возник такой: как запустить исходник на Python?

В командной строке windows cd c:\Python25 (или где там у вас python)

а потом набираете

python.exe 1.py

>> (появилось ">>>")

просто вы не ввели с первого раза при запуске имя файла. я выше написала как по-нормальному запустить. а чем не устраивает просто открыть файл с расширением *.py? обязательно хотите через командную строку. ну как хотите

и вообще

print '%d + %d = %d' % (a, b, a+b)

так надо, а то не проробит

Большое спасибо! Помогло! А через командную строку мне надо, так как иначе он выдаёт ответ действия и тут же закрывает окно (то есть я не успеваю просмотреть результат).

Ещё раз БОЛЬШОЕ спасибо!

0x0c0de
21.09.2008, 18:30
чтобы успевали в конце кода напишите

input()

и запускайте py-файл



print 'Please, enter a'
a = input()
print 'Please, enter b'
b = input()
print '%d + %d = %d' % (a, b, a+b)
input()


как вариант застоппить так

iddqd
21.09.2008, 18:31
если хочешь запустить именно через cmd, а не интерпретатор питона, просто открой ком.строку и закинь туда файл drag'n'drop-ом

VIP
21.09.2008, 18:43
если хочешь запустить именно через cmd, а не интерпретатор питона, просто открой ком.строку и закинь туда файл drag'n'drop-ом
Большое спасибо за совет! Дейстивтельно гораздо удобнее! :)

VIP
21.09.2008, 18:47
У меня возникло ещё два вопроса. Дело в том, что нам сказали в начале каждой программы добавлять две строки:


#! /usr/bin/env python
# -*- coding: utf-8 -*-


Первая нужна только для Linux, а вот вторая для назначения кодировки. Вот только не могу никак сделать, чтобы эти строчки заработали. Думаю, что я напутал с пробелами (где-то не хватает, где-то лишние). :confused:

Подскажите, пожалуйста, как правильно!

Digimortal
21.09.2008, 19:04
Если ты под виндой, то и кодировку соответствующую ставь:
#!/usr/bin/python
# -*- coding: cp1251 -*-

Larionich
21.09.2008, 23:08
>> А вопрос у меня возник такой: как запустить исходник на Python?
Один способ.
cd <папка с исходниками>
Запускаешь в командной строке python2.5 (например c:\python2.5, как у тебя сам знаешь)
Пишешь >>> execfile('test.py')
Другой способ.
(Для более частого использования)
В твой test.py записываешь:
def main():
print 'Please, enter a'
a = input()
print 'Please, enter b'
b = input()
print '%d + %d = %d' % (a, b, a+b)

Это уже твой модуль. Из него можно вызывать функцию main()
cd <папка с исходниками>
Запускаешь в командной строке python2.5
>>> import test.py
>>> test.main() #Вот так мы вызываем нашу функцию
Если же нужно быстро вызвать фунцию, можно сделать следующее (но перед этим повторить шаги "Другого способа"):
>>> z=test.main #Присвоить локальное имя
>>> z() #вызываем нашу функцию
Написал, как можно понятнее, разберешься.

VIP
22.09.2008, 19:01
У меня ещё один вопрос:

Мне нужно задать в программе Гравитационную постоянную G = 6.672*10^(-11). Как мне это сделать. Нам объясняли на лекциях, что в питоне не нужно объявлять типы переменных, что мол они всегда определяются сами. Но как мне присвоить переменной G значение 6.672*10^(-11)?

Digimortal
22.09.2008, 19:29
G = 6.672*10**-11

VIP
23.09.2008, 03:36
G = 6.672*10**-11

Большое спасибо!

У меня снова вопрос: В чём ошибка кода???


#!/usr/bin/python
# -*- coding: utf-8 -*-

print 'Enter m1:'
m1=input()
print 'Enter m2:'
m2=input()
print 'Enter r:'
r=input()

g = 6.672*10**-11

print 'F = G * (%d * %d)/%d^2 = %d' %(m1, m2, r, (g*m1*m2)/r^2)

Пишет, что мол неподдерживаемая операция над переменными такого типа (это я так прочитал)

Это программа для расчёта силы взаимного притяжения. G - это гравитационная постоянная.

P.S. Может быть существует в питоне какой-нить список констант (типа пи, g или G)??? И если да то как его вызвать?

nerezus
23.09.2008, 07:31
а зачем ты ксоришь на 2? о_О
Может тебе нужно возведение в степень?

VIP
23.09.2008, 13:59
а зачем ты ксоришь на 2? о_О
Может тебе нужно возведение в степень?
а что значит ксорить?

nitx
23.09.2008, 14:17
P.S. Может быть существует в питоне какой-нить список констант (типа пи, g или G)??? И если да то как его вызвать?
в модуле math было что то.
print 'F = G * (%d * %d)/%d^2 = %d' %(m1, m2, r, (g*m1*m2)/r^2)
я может уже не помню, но возведение в степень не ^ а **

VIP
23.09.2008, 14:32
а зачем ты ксоришь на 2? о_О
Может тебе нужно возведение в степень?
а что значит ксорить?

Digimortal
23.09.2008, 16:01
>> а что значит ксорить?

Не знаю, что это, но слышал, что тру хеккеры умеють ксорить в уме целые дворды! Только не спрашуй, что такое "дворды" - все равно тут никто не знает. И в гугле хрен найдешь значения этих слов. )

Может, тебе книжку про программированию на пайтоне стоит почитать для начала? )

nerezus
23.09.2008, 21:35
а что значит ксорить? http://ru.wikipedia.org/wiki/Xor

VIP
24.09.2008, 19:45
Спасибо большое! Я разобался с этим, но у меня очередная проблемка:

Когда в прогамме нужно ввести число и вывести его на экран, то я печатаю команды


print 'Enter A, please:'
a=float(raw_input())
print '%f' %(a)

Соответственно если я ввожу число 5, то он мне выводит 5.0000000

Как мне сделать, чтобы он выводил только 5 если после запятой нет знака или со знаками после запятой, если они есть?

t00th
25.09.2008, 16:22
Спасибо большое! Я разобался с этим, но у меня очередная проблемка:

Когда в прогамме нужно ввести число и вывести его на экран, то я печатаю команды


Соответственно если я ввожу число 5, то он мне выводит 5.0000000

Как мне сделать, чтобы он выводил только 5 если после запятой нет знака или со знаками после запятой, если они есть?
Если ты ограничиваешься только выводом на экран то оставь raw_input,пусть значение так и будет в string.Т.е a=raw_input().Если это не подходит то попробуй что-нибудь с try,exсept(офф дока - http://docs.python.org/tut/node10.html )
>>> while True:
... try:
... x = int(raw_input("Please enter a number: "))
... break
... except ValueError:
... print "Oops! That was no valid number. Try again..."

Digimortal
25.09.2008, 17:05
>> Как мне сделать, чтобы он выводил только 5 если после запятой нет знака или со знаками после запятой, если они есть?

Приведи ее к типу string перед выводом:
print '%s' % str(a)

VIP
27.09.2008, 19:58
Как в питоне можно от числа откинуть дробную часть?

iddqd
27.09.2008, 20:37
Если ты про целочисленное деление, то для python 2.* это / , а для 3.0 //

VIP
27.09.2008, 21:15
Если ты про целочисленное деление, то для python 2.* это / , а для 3.0 //

нет я имею ввиду, чтобы если при делении получилось число а=2.5, а применив к нему какой-нибудь оператор получилось бы 2

nerezus
27.09.2008, 22:11
import math
help(math)

Larionich
27.09.2008, 23:01
nerezus, аха, в питоне без операций импорта доступно больше сотни встроенных объектов, в частности много функций. Например round(a, exactness) и int(a).
print 'Enter a'
a = input()
a = int(a) #a = round(a,0)
print '%g' % (a) #да, действительно отбросили целую часть
print '%d' % (a) #теперь выводим нормально
input()
Можно вместо преобразования типа (к целому- a=int(a)) можно оставить число вещественным, просто округлить число до заданного знака (a=round(a,0) - в данном случае точность 0).

VIP
28.09.2008, 11:34
nerezus, аха, в питоне без операций импорта доступно больше сотни встроенных объектов, в частности много функций. Например round(a, exactness) и int(a).
print 'Enter a'
a = input()
a = int(a) #a = round(a,0)
print '%g' % (a) #да, действительно отбросили целую часть
print '%d' % (a) #теперь выводим нормально
input()
Можно вместо преобразования типа (к целому- a=int(a)) можно оставить число вещественным, просто округлить число до заданного знака (a=round(a,0) - в данном случае точность 0).

БОЛЬШОЕ спасибо! Это именно то, что я спрашивал.

VIP
03.11.2008, 11:44
С помощью какой функции можно вычислить факториал числа?

astrologer
03.11.2008, 12:08
С помощью какой функции можно вычислить факториал числа?
def factorial (http://tinyurl.com/6geqhe)(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)

VIP
07.11.2008, 14:52
def factorial (http://tinyurl.com/6geqhe)(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)

Спасибо! Просто я думал там есть, что-то по проще, типа как pow для возведения в степень!

А какую команду нужно написать, чтобы прога остановилась?

H1Z
07.11.2008, 15:10
Если выйти, то "exit()"

VIP
07.11.2008, 17:56
Если выйти, то "exit()"

СПАСИБО! ;)

VIP
08.12.2008, 22:05
У меня к вам очередной вопрос:

в чём ошибка в этой программе:


#! usr/bin/env python
#! -*- coding: utf-8 -*-

print "Enter x1 of first triangle, please:"
x11=raw_input()
print "Enter y1 of first triangle, please:"
y11=raw_input()
print "Enter x2 of first triangle, please:"
x21=raw_input()
print "Enter y2 of first triangle, please:"
y21=raw_input()
print "Enter x3 of first triangle, please:"
x31=raw_input()
print "Enter y3 of first triangle, please:"
y31=raw_input()

print "Enter x1 of second triangle, please:"
x12=raw_input()
print "Enter y1 of second triangle, please:"
y12=raw_input()
print "Enter x2 of second triangle, please:"
x22=raw_input()
print "Enter y2 of second triangle, please:"
y22=raw_input()
print "Enter x3 of second triangle, please:"
x32=raw_input()
print "Enter y3 of second triangle, please:"
y32=raw_input()

x11=3
x21=7
x31=12
x12=5
x22=7
x32=8
y11=1
y21=9
y31=1
y12=3
y22=5
y32=3

try:
x11=float(x11)
x21=float(x21)
x31=float(x31)
x12=float(x12)
x22=float(x22)
x32=float(x32)
y11=float(y11)
y21=float(y21)
y31=float(y31)
y12=float(y12)
y22=float(y22)
y32=float(y32)
except ValueError:
print "Error!"

## проверка существования треугольников
A1_B1=((x21-x11)**2+(y21-y11)**2)**0.5 ## нахождение длины AB в первом треугольнике
B1_C1=((x31-x21)**2+(y31-y21)**2)**0.5 ## нахождение длины BC в первом треугольнике
A1_C1=((x31-x11)**2+(y31-y11)**2)**0.5 ## нахождение длины AC в первом треугольнике

A2_B2=((x22-x12)**2+(y22-y12)**2)**0.5 ## нахождение длины AB вo втором треугольнике
B2_C2=((x32-x22)**2+(y32-y22)**2)**0.5 ## нахождение длины BC во втором треугольнике
A2_C2=((x32-x12)**2+(y32-y12)**2)**0.5 ## нахождение длины AC во втором треугольнике

if A1_B1+B1_C1<=A1_C1 or A1_B1+A1_C1<=B1_C1 or A1_C1+B1_C1<=A1_B1:
print "Error"
elif A2_B2+B2_C2<=A2_C2 or A2_B2+A2_C2<=B2_C2 or A2_C2+B2_C2<=A2_B2:
print "Error"
else:
a=0

## построение отрезков от вершины второго к вершинам первого
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A2_B1=((x21-x12)**2+(y21-y12)**2)**0.5
A2_C1=((x31-x12)**2+(y31-y12)**2)**0.5

## вычисление площадей треугольников
S_A1_B1_C1=(((A1_B1+B1_C1+A1_C1)/2)*(((A1_B1+B1_C1+A1_C1)/2)-A1_B1)*(((A1_B1+B1_C1+A1_C1)/2)-B1_C1)*(((A1_B1+B1_C1+A1_C1)/2)-A1_C1))**0.5 ## площадь первого треугольника по формуле Герона
S_A2_B2_C2=(((A2_B2+B2_C2+A2_C2)/2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_B2)*(((A2_B2+B2_C2+A2_C2)/2)-B2_C2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь второго треугольника по формуле Герона

S_A2_A1_C1=(((A2_A1+A1_C1+A2_C1)/2)*(((A2_A1+A1_C1+A2_C1)/2)-A2_A1)*(((A2_A1+A1_C1+A2_C1)/2)-A1_C1)*(((A2_A1+A1_C1+A2_C1)/2)-A2_C1))**0.5 ## площадь треугольника A2_A1_C1 по формуле Герона
S_A2_A1_B1=(((A2_A1+A1_B1+A2_B1)/2)*(((A2_A1+A1_B1+A2_B1)/2)-A2_A1)*(((A2_A1+A1_B1+A2_B1)/2)-A1_B1)*(((A2_A1+A1_B1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_A1_B1 по формуле Герона
S_A2_C1_B1=(((A2_C1+B1_C1+A2_B1)/2)*(((A2_C1+B1_C1+A2_B1)/2)-A2_C1)*(((A2_C1+B1_C1+A2_B1)/2)-B1_C1)*(((A2_C1+B1_C1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_C1_B1 по формуле Герона

## построение отрезков от вершины первого к вершинам второго
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A1_B2=((x11-x22)**2+(y11-y22)**2)**0.5
A1_C2=((x11-x32)**2+(y11-y32)**2)**0.5

## вычисление площадей треугольников
S_A1_A2_B2=(((A2_A1+A1_B2+A2_B2)/2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_A1)*(((A2_A1+A1_B2+A2_B2)/2)-A1_B2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_B2))**0.5 ## площадь треугольника A2_A1_B2 по формуле Герона
S_A1_B2_C2=(((A1_B2+A1_C2+B2_C2)/2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_B2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_C2)*(((A1_B2+A1_C2+B2_C2)/2)-B2_C2))**0.5 ## площадь треугольника A1_B2_C2 по формуле Герона
S_A1_A2_C2=(((A2_A1+A1_C2+A2_C2)/2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_A1)*(((A2_A1+A1_C2+A2_C2)/2)-A1_C2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь треугольника A1_A2_C2 по формуле Герона

## сравнение площадей треугольников
if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
print "First triangle in second"
else:
print "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2)


Программа должна определять вложен ли один треугольник в другой. Но меня интересуют последний цик if. Если выполнить программу, то она выводит на печать значения S_A2_B2_C2 и S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2 = 36, то есть они одинаковы, но само то, что он печатает эти значения говорит о том, что он уходит не в первую ветку цикла, а в ELSE :confused: Почему так происходит?

login999
08.12.2008, 22:41
У меня к вам очередной вопрос:

в чём ошибка в этой программе:


#! usr/bin/env python
#! -*- coding: utf-8 -*-

print "Enter x1 of first triangle, please:"
x11=raw_input()
print "Enter y1 of first triangle, please:"
y11=raw_input()
print "Enter x2 of first triangle, please:"
x21=raw_input()
print "Enter y2 of first triangle, please:"
y21=raw_input()
print "Enter x3 of first triangle, please:"
x31=raw_input()
print "Enter y3 of first triangle, please:"
y31=raw_input()

print "Enter x1 of second triangle, please:"
x12=raw_input()
print "Enter y1 of second triangle, please:"
y12=raw_input()
print "Enter x2 of second triangle, please:"
x22=raw_input()
print "Enter y2 of second triangle, please:"
y22=raw_input()
print "Enter x3 of second triangle, please:"
x32=raw_input()
print "Enter y3 of second triangle, please:"
y32=raw_input()

x11=3
x21=7
x31=12
x12=5
x22=7
x32=8
y11=1
y21=9
y31=1
y12=3
y22=5
y32=3

try:
x11=float(x11)
x21=float(x21)
x31=float(x31)
x12=float(x12)
x22=float(x22)
x32=float(x32)
y11=float(y11)
y21=float(y21)
y31=float(y31)
y12=float(y12)
y22=float(y22)
y32=float(y32)
except ValueError:
print "Error!"

## проверка существования треугольников
A1_B1=((x21-x11)**2+(y21-y11)**2)**0.5 ## нахождение длины AB в первом треугольнике
B1_C1=((x31-x21)**2+(y31-y21)**2)**0.5 ## нахождение длины BC в первом треугольнике
A1_C1=((x31-x11)**2+(y31-y11)**2)**0.5 ## нахождение длины AC в первом треугольнике

A2_B2=((x22-x12)**2+(y22-y12)**2)**0.5 ## нахождение длины AB вo втором треугольнике
B2_C2=((x32-x22)**2+(y32-y22)**2)**0.5 ## нахождение длины BC во втором треугольнике
A2_C2=((x32-x12)**2+(y32-y12)**2)**0.5 ## нахождение длины AC во втором треугольнике

if A1_B1+B1_C1<=A1_C1 or A1_B1+A1_C1<=B1_C1 or A1_C1+B1_C1<=A1_B1:
print "Error"
elif A2_B2+B2_C2<=A2_C2 or A2_B2+A2_C2<=B2_C2 or A2_C2+B2_C2<=A2_B2:
print "Error"
else:
a=0

## построение отрезков от вершины второго к вершинам первого
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A2_B1=((x21-x12)**2+(y21-y12)**2)**0.5
A2_C1=((x31-x12)**2+(y31-y12)**2)**0.5

## вычисление площадей треугольников
S_A1_B1_C1=(((A1_B1+B1_C1+A1_C1)/2)*(((A1_B1+B1_C1+A1_C1)/2)-A1_B1)*(((A1_B1+B1_C1+A1_C1)/2)-B1_C1)*(((A1_B1+B1_C1+A1_C1)/2)-A1_C1))**0.5 ## площадь первого треугольника по формуле Герона
S_A2_B2_C2=(((A2_B2+B2_C2+A2_C2)/2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_B2)*(((A2_B2+B2_C2+A2_C2)/2)-B2_C2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь второго треугольника по формуле Герона

S_A2_A1_C1=(((A2_A1+A1_C1+A2_C1)/2)*(((A2_A1+A1_C1+A2_C1)/2)-A2_A1)*(((A2_A1+A1_C1+A2_C1)/2)-A1_C1)*(((A2_A1+A1_C1+A2_C1)/2)-A2_C1))**0.5 ## площадь треугольника A2_A1_C1 по формуле Герона
S_A2_A1_B1=(((A2_A1+A1_B1+A2_B1)/2)*(((A2_A1+A1_B1+A2_B1)/2)-A2_A1)*(((A2_A1+A1_B1+A2_B1)/2)-A1_B1)*(((A2_A1+A1_B1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_A1_B1 по формуле Герона
S_A2_C1_B1=(((A2_C1+B1_C1+A2_B1)/2)*(((A2_C1+B1_C1+A2_B1)/2)-A2_C1)*(((A2_C1+B1_C1+A2_B1)/2)-B1_C1)*(((A2_C1+B1_C1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_C1_B1 по формуле Герона

## построение отрезков от вершины первого к вершинам второго
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A1_B2=((x11-x22)**2+(y11-y22)**2)**0.5
A1_C2=((x11-x32)**2+(y11-y32)**2)**0.5

## вычисление площадей треугольников
S_A1_A2_B2=(((A2_A1+A1_B2+A2_B2)/2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_A1)*(((A2_A1+A1_B2+A2_B2)/2)-A1_B2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_B2))**0.5 ## площадь треугольника A2_A1_B2 по формуле Герона
S_A1_B2_C2=(((A1_B2+A1_C2+B2_C2)/2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_B2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_C2)*(((A1_B2+A1_C2+B2_C2)/2)-B2_C2))**0.5 ## площадь треугольника A1_B2_C2 по формуле Герона
S_A1_A2_C2=(((A2_A1+A1_C2+A2_C2)/2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_A1)*(((A2_A1+A1_C2+A2_C2)/2)-A1_C2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь треугольника A1_A2_C2 по формуле Герона

## сравнение площадей треугольников
if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
print "First triangle in second"
else:
print "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2)


Программа должна определять вложен ли один треугольник в другой. Но меня интересуют последний цик if. Если выполнить программу, то она выводит на печать значения S_A2_B2_C2 и S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2 = 36, то есть они одинаковы, но само то, что он печатает эти значения говорит о том, что он уходит не в первую ветку цикла, а в ELSE :confused: Почему так происходит?

Все у тебя в порядке с последним циклом, только что попробовал присвоить вручную:
S_A1_B1_C1=3
S_A2_A1_C1=1
S_A2_A1_B1=1
S_A2_C1_B1=1
, результат :Second triangle in first
У тебя просто не выполняется условие

VIP
08.12.2008, 22:50
Но почему он тогда с данными значениями не выполняет условие??? Получается у него 36 не равно 36 ?

login999
08.12.2008, 23:02
Но почему он тогда с данными значениями не выполняет условие??? Получается у него 36 не равно 36 ?
Не вижу условий, если честно :), точнее значений

Упс, сорри, увидел :)

Короче, блин в глазах уже рябит от твоих цифр - глянь формулы свои, скорее всего ошибка в них

Короче смотри, сделал
S_A2_B2_C2=3
S_A1_A2_B2=1
S_A1_B2_C2=1
S_A1_A2_C2=1
результат: First triangle in second

Значит: 1 вариант - ошибка в формулах
2 вариант- заданные условия не являются подходящими для данной ветки цикла

Цикл у тебя отрабатывает нормально

Блин, и если уж на то пошло, то код у тебя отрабатывает нормально :

#! usr/bin/env python
#! -*- coding: utf-8 -*-

print "Enter x1 of first triangle, please:"
x11=raw_input()
print "Enter y1 of first triangle, please:"
y11=raw_input()
print "Enter x2 of first triangle, please:"
x21=raw_input()
print "Enter y2 of first triangle, please:"
y21=raw_input()
print "Enter x3 of first triangle, please:"
x31=raw_input()
print "Enter y3 of first triangle, please:"
y31=raw_input()

print "Enter x1 of second triangle, please:"
x12=raw_input()
print "Enter y1 of second triangle, please:"
y12=raw_input()
print "Enter x2 of second triangle, please:"
x22=raw_input()
print "Enter y2 of second triangle, please:"
y22=raw_input()
print "Enter x3 of second triangle, please:"
x32=raw_input()
print "Enter y3 of second triangle, please:"
y32=raw_input()

x11=3
x21=7
x31=12
x12=5
x22=7
x32=8
y11=1
y21=9
y31=1
y12=3
y22=5
y32=3

try:
x11=float(x11)
x21=float(x21)
x31=float(x31)
x12=float(x12)
x22=float(x22)
x32=float(x32)
y11=float(y11)
y21=float(y21)
y31=float(y31)
y12=float(y12)
y22=float(y22)
y32=float(y32)
except ValueError:
print "Error!"

## проверка существования треугольников
A1_B1=((x21-x11)**2+(y21-y11)**2)**0.5 ## нахождение длины AB в первом треугольнике
B1_C1=((x31-x21)**2+(y31-y21)**2)**0.5 ## нахождение длины BC в первом треугольнике
A1_C1=((x31-x11)**2+(y31-y11)**2)**0.5 ## нахождение длины AC в первом треугольнике

A2_B2=((x22-x12)**2+(y22-y12)**2)**0.5 ## нахождение длины AB вo втором треугольнике
B2_C2=((x32-x22)**2+(y32-y22)**2)**0.5 ## нахождение длины BC во втором треугольнике
A2_C2=((x32-x12)**2+(y32-y12)**2)**0.5 ## нахождение длины AC во втором треугольнике

if A1_B1+B1_C1<=A1_C1 or A1_B1+A1_C1<=B1_C1 or A1_C1+B1_C1<=A1_B1:
print "Error"
elif A2_B2+B2_C2<=A2_C2 or A2_B2+A2_C2<=B2_C2 or A2_C2+B2_C2<=A2_B2:
print "Error"
else:
a=0

## построение отрезков от вершины второго к вершинам первого
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A2_B1=((x21-x12)**2+(y21-y12)**2)**0.5
A2_C1=((x31-x12)**2+(y31-y12)**2)**0.5

## вычисление площадей треугольников
S_A1_B1_C1=(((A1_B1+B1_C1+A1_C1)/2)*(((A1_B1+B1_C1+A1_C1)/2)-A1_B1)*(((A1_B1+B1_C1+A1_C1)/2)-B1_C1)*(((A1_B1+B1_C1+A1_C1)/2)-A1_C1))**0.5 ## площадь первого треугольника по формуле Герона
S_A2_B2_C2=(((A2_B2+B2_C2+A2_C2)/2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_B2)*(((A2_B2+B2_C2+A2_C2)/2)-B2_C2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь второго треугольника по формуле Герона

S_A2_A1_C1=(((A2_A1+A1_C1+A2_C1)/2)*(((A2_A1+A1_C1+A2_C1)/2)-A2_A1)*(((A2_A1+A1_C1+A2_C1)/2)-A1_C1)*(((A2_A1+A1_C1+A2_C1)/2)-A2_C1))**0.5 ## площадь треугольника A2_A1_C1 по формуле Герона
S_A2_A1_B1=(((A2_A1+A1_B1+A2_B1)/2)*(((A2_A1+A1_B1+A2_B1)/2)-A2_A1)*(((A2_A1+A1_B1+A2_B1)/2)-A1_B1)*(((A2_A1+A1_B1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_A1_B1 по формуле Герона
S_A2_C1_B1=(((A2_C1+B1_C1+A2_B1)/2)*(((A2_C1+B1_C1+A2_B1)/2)-A2_C1)*(((A2_C1+B1_C1+A2_B1)/2)-B1_C1)*(((A2_C1+B1_C1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_C1_B1 по формуле Герона

## построение отрезков от вершины первого к вершинам второго
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A1_B2=((x11-x22)**2+(y11-y22)**2)**0.5
A1_C2=((x11-x32)**2+(y11-y32)**2)**0.5

## вычисление площадей треугольников
S_A1_A2_B2=(((A2_A1+A1_B2+A2_B2)/2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_A1)*(((A2_A1+A1_B2+A2_B2)/2)-A1_B2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_B2))**0.5 ## площадь треугольника A2_A1_B2 по формуле Герона
S_A1_B2_C2=(((A1_B2+A1_C2+B2_C2)/2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_B2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_C2)*(((A1_B2+A1_C2+B2_C2)/2)-B2_C2))**0.5 ## площадь треугольника A1_B2_C2 по формуле Герона
S_A1_A2_C2=(((A2_A1+A1_C2+A2_C2)/2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_A1)*(((A2_A1+A1_C2+A2_C2)/2)-A1_C2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь треугольника A1_A2_C2 по формуле Герона

## сравнение площадей треугольников
S_A2_B2_C2=3
S_A1_A2_B2=1
S_A1_B2_C2=1
S_A1_A2_C2=1
if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
print "First triangle in second"
else:
print "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2)

Результат: First triangle in second

VIP
08.12.2008, 23:43
Так они перед циклом высчитываются по формулам. В формулах ошибок вроде нет - всё проверял. Дело в том, что в последнем цикле он должен сравнивать два числа, он их почему-то считает различными, а потом выводит их на печать : и это 36 и 36 :confused:

login999
09.12.2008, 00:07
Так они перед циклом высчитываются по формулам. В формулах ошибок вроде нет - всё проверял. Дело в том, что в последнем цикле он должен сравнивать два числа, он их почему-то считает различными, а потом выводит их на печать : и это 36 и 36 :confused:
Короче, читаю твой цикл, как его вижу я :

if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
print "First triangle in second"
else:
print "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2)

ЕСЛИ
S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1, то : напечатать "Second triangle in first"
ЕЩЕ ЕСЛИ
S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2, то : напечатать "First triangle in second"
ЕЩЕ (во всех остальных случаях)
НАПЕЧАТАТЬ "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2) - где здесь сравнение ?
в первых двух ветках сравнение есть, в третьей же ветке сравнения нету, есть только задание вывода на печать, цикл отрабатывает все так как ему указано, скажи, что должна делать третья ветка ?

login999
09.12.2008, 00:21
#! usr/bin/env python
#! -*- coding: utf-8 -*-
x11=3
x21=7
x31=12
x12=5
x22=7
x32=8
y11=1
y21=9
y31=1
y12=3
y22=5
y32=3

try:
x11=float(x11)
x21=float(x21)
x31=float(x31)
x12=float(x12)
x22=float(x22)
x32=float(x32)
y11=float(y11)
y21=float(y21)
y31=float(y31)
y12=float(y12)
y22=float(y22)
y32=float(y32)
except ValueError:
print "Error!"

## проверка существования треугольников
A1_B1=((x21-x11)**2+(y21-y11)**2)**0.5 ## нахождение длины AB в первом треугольнике
B1_C1=((x31-x21)**2+(y31-y21)**2)**0.5 ## нахождение длины BC в первом треугольнике
A1_C1=((x31-x11)**2+(y31-y11)**2)**0.5 ## нахождение длины AC в первом треугольнике

A2_B2=((x22-x12)**2+(y22-y12)**2)**0.5 ## нахождение длины AB вo втором треугольнике
B2_C2=((x32-x22)**2+(y32-y22)**2)**0.5 ## нахождение длины BC во втором треугольнике
A2_C2=((x32-x12)**2+(y32-y12)**2)**0.5 ## нахождение длины AC во втором треугольнике

if A1_B1+B1_C1<=A1_C1 or A1_B1+A1_C1<=B1_C1 or A1_C1+B1_C1<=A1_B1:
print "Error"
elif A2_B2+B2_C2<=A2_C2 or A2_B2+A2_C2<=B2_C2 or A2_C2+B2_C2<=A2_B2:
print "Error"
else:
a=0

## построение отрезков от вершины второго к вершинам первого
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A2_B1=((x21-x12)**2+(y21-y12)**2)**0.5
A2_C1=((x31-x12)**2+(y31-y12)**2)**0.5

## вычисление площадей треугольников
S_A1_B1_C1=(((A1_B1+B1_C1+A1_C1)/2)*(((A1_B1+B1_C1+A1_C1)/2)-A1_B1)*(((A1_B1+B1_C1+A1_C1)/2)-B1_C1)*(((A1_B1+B1_C1+A1_C1)/2)-A1_C1))**0.5 ## площадь первого треугольника по формуле Герона
S_A2_B2_C2=(((A2_B2+B2_C2+A2_C2)/2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_B2)*(((A2_B2+B2_C2+A2_C2)/2)-B2_C2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь второго треугольника по формуле Герона

S_A2_A1_C1=(((A2_A1+A1_C1+A2_C1)/2)*(((A2_A1+A1_C1+A2_C1)/2)-A2_A1)*(((A2_A1+A1_C1+A2_C1)/2)-A1_C1)*(((A2_A1+A1_C1+A2_C1)/2)-A2_C1))**0.5 ## площадь треугольника A2_A1_C1 по формуле Герона
S_A2_A1_B1=(((A2_A1+A1_B1+A2_B1)/2)*(((A2_A1+A1_B1+A2_B1)/2)-A2_A1)*(((A2_A1+A1_B1+A2_B1)/2)-A1_B1)*(((A2_A1+A1_B1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_A1_B1 по формуле Герона
S_A2_C1_B1=(((A2_C1+B1_C1+A2_B1)/2)*(((A2_C1+B1_C1+A2_B1)/2)-A2_C1)*(((A2_C1+B1_C1+A2_B1)/2)-B1_C1)*(((A2_C1+B1_C1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_C1_B1 по формуле Герона

## построение отрезков от вершины первого к вершинам второго
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A1_B2=((x11-x22)**2+(y11-y22)**2)**0.5
A1_C2=((x11-x32)**2+(y11-y32)**2)**0.5

## вычисление площадей треугольников
S_A1_A2_B2=(((A2_A1+A1_B2+A2_B2)/2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_A1)*(((A2_A1+A1_B2+A2_B2)/2)-A1_B2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_B2))**0.5 ## площадь треугольника A2_A1_B2 по формуле Герона
S_A1_B2_C2=(((A1_B2+A1_C2+B2_C2)/2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_B2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_C2)*(((A1_B2+A1_C2+B2_C2)/2)-B2_C2))**0.5 ## площадь треугольника A1_B2_C2 по формуле Герона
S_A1_A2_C2=(((A2_A1+A1_C2+A2_C2)/2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_A1)*(((A2_A1+A1_C2+A2_C2)/2)-A1_C2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь треугольника A1_A2_C2 по формуле Герона

## сравнение площадей треугольников
if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
print "First triangle in second"
else:
print "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2)


оТработал нормально, вышло 3.000000 | 9.000000 блин, в упор не вижу проблемы у себя, ткни носом плиз, цикл то работает норм, проверял то уже, где проблема ?

VIP
09.12.2008, 00:21
Короче, читаю твой цикл, как его вижу я :

if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
print "First triangle in second"
else:
print "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2)

ЕСЛИ
S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1, то : напечатать "Second triangle in first"
ЕЩЕ ЕСЛИ
S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2, то : напечатать "First triangle in second"
ЕЩЕ (во всех остальных случаях)
НАПЕЧАТАТЬ "%f | %f" %(S_A2_B2_C2, S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2) - где здесь сравнение ?
в первых двух ветках сравнение есть, в третьей же ветке сравнения нету, есть только задание вывода на печать, цикл отрабатывает все так как ему указано, скажи, что должна делать третья ветка ?

Дело в том, что если убрать третью ветку, то прога вообще ничего не выдаёт (то есть, она выполняет первое сравнение - оно у неё почему-то не выполняется, выполняет второе сравнение - оно не выполняется (это правильно, так как там и должны получаться разные числа)), а затем она тупо встаёт и ничего не делает... Последнюю ветку я сделал, для того, чтобы понять почему она встаёт и заодно просмотреть значения переменных во время выполнения проги (это пока просто для тестирования сделано).

login999
09.12.2008, 00:27
По заданным тобой данным выполняется только 3 условие, все она нормально работает, я в ней в упор не вижу того что видишь ты, хз короче

VIP
09.12.2008, 00:32
По заданным тобой данным выполняется только 3 условие, все она нормально работает, я в ней в упор не вижу того что видишь ты, хз короче


#! usr/bin/env python
#! -*- coding: utf-8 -*-
x11=3
x21=7
x31=12
x12=5
x22=7
x32=8
y11=1
y21=9
y31=1
y12=3
y22=5
y32=3

try:
x11=float(x11)
x21=float(x21)
x31=float(x31)
x12=float(x12)
x22=float(x22)
x32=float(x32)
y11=float(y11)
y21=float(y21)
y31=float(y31)
y12=float(y12)
y22=float(y22)
y32=float(y32)
except ValueError:
print "Error!"

## проверка существования треугольников
A1_B1=((x21-x11)**2+(y21-y11)**2)**0.5 ## нахождение длины AB в первом треугольнике
B1_C1=((x31-x21)**2+(y31-y21)**2)**0.5 ## нахождение длины BC в первом треугольнике
A1_C1=((x31-x11)**2+(y31-y11)**2)**0.5 ## нахождение длины AC в первом треугольнике

A2_B2=((x22-x12)**2+(y22-y12)**2)**0.5 ## нахождение длины AB вo втором треугольнике
B2_C2=((x32-x22)**2+(y32-y22)**2)**0.5 ## нахождение длины BC во втором треугольнике
A2_C2=((x32-x12)**2+(y32-y12)**2)**0.5 ## нахождение длины AC во втором треугольнике

if A1_B1+B1_C1<=A1_C1 or A1_B1+A1_C1<=B1_C1 or A1_C1+B1_C1<=A1_B1:
print "Error"
elif A2_B2+B2_C2<=A2_C2 or A2_B2+A2_C2<=B2_C2 or A2_C2+B2_C2<=A2_B2:
print "Error"
else:
a=0

## построение отрезков от вершины второго к вершинам первого
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A2_B1=((x21-x12)**2+(y21-y12)**2)**0.5
A2_C1=((x31-x12)**2+(y31-y12)**2)**0.5

## вычисление площадей треугольников
S_A1_B1_C1=(((A1_B1+B1_C1+A1_C1)/2)*(((A1_B1+B1_C1+A1_C1)/2)-A1_B1)*(((A1_B1+B1_C1+A1_C1)/2)-B1_C1)*(((A1_B1+B1_C1+A1_C1)/2)-A1_C1))**0.5 ## площадь первого треугольника по формуле Герона
S_A2_B2_C2=(((A2_B2+B2_C2+A2_C2)/2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_B2)*(((A2_B2+B2_C2+A2_C2)/2)-B2_C2)*(((A2_B2+B2_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь второго треугольника по формуле Герона

S_A2_A1_C1=(((A2_A1+A1_C1+A2_C1)/2)*(((A2_A1+A1_C1+A2_C1)/2)-A2_A1)*(((A2_A1+A1_C1+A2_C1)/2)-A1_C1)*(((A2_A1+A1_C1+A2_C1)/2)-A2_C1))**0.5 ## площадь треугольника A2_A1_C1 по формуле Герона
S_A2_A1_B1=(((A2_A1+A1_B1+A2_B1)/2)*(((A2_A1+A1_B1+A2_B1)/2)-A2_A1)*(((A2_A1+A1_B1+A2_B1)/2)-A1_B1)*(((A2_A1+A1_B1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_A1_B1 по формуле Герона
S_A2_C1_B1=(((A2_C1+B1_C1+A2_B1)/2)*(((A2_C1+B1_C1+A2_B1)/2)-A2_C1)*(((A2_C1+B1_C1+A2_B1)/2)-B1_C1)*(((A2_C1+B1_C1+A2_B1)/2)-A2_B1))**0.5 ## площадь треугольника A2_C1_B1 по формуле Герона

## построение отрезков от вершины первого к вершинам второго
A2_A1=((x11-x12)**2+(y11-y12)**2)**0.5
A1_B2=((x11-x22)**2+(y11-y22)**2)**0.5
A1_C2=((x11-x32)**2+(y11-y32)**2)**0.5

## вычисление площадей треугольников
S_A1_A2_B2=(((A2_A1+A1_B2+A2_B2)/2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_A1)*(((A2_A1+A1_B2+A2_B2)/2)-A1_B2)*(((A2_A1+A1_B2+A2_B2)/2)-A2_B2))**0.5 ## площадь треугольника A2_A1_B2 по формуле Герона
S_A1_B2_C2=(((A1_B2+A1_C2+B2_C2)/2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_B2)*(((A1_B2+A1_C2+B2_C2)/2)-A1_C2)*(((A1_B2+A1_C2+B2_C2)/2)-B2_C2))**0.5 ## площадь треугольника A1_B2_C2 по формуле Герона
S_A1_A2_C2=(((A2_A1+A1_C2+A2_C2)/2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_A1)*(((A2_A1+A1_C2+A2_C2)/2)-A1_C2)*(((A2_A1+A1_C2+A2_C2)/2)-A2_C2))**0.5 ## площадь треугольника A1_A2_C2 по формуле Герона

## сравнение площадей треугольников
if S_A1_B1_C1==S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1:
print "Second triangle in first"
elif S_A2_B2_C2==S_A1_A2_B2+S_A1_B2_C2+S_A1_A2_C2:
print "First triangle in second"
else:
print "%f | %f" %(S_A1_B1_C1, S_A2_A1_C1+S_A2_A1_B1+S_A2_C1_B1)


Вот этот код не работает. Когда он сравнивает числа, которые получаются в первой ветке цикла они получаются 36 и 36, а он уходит в ELSE.

В этом коде он на печать выдаёт переменные из первой ветки цикла

login999
09.12.2008, 00:38
ЫЫ (вырезано цензурой), (вырезано цензурой), (вырезано цензурой), понял, в чем срань - ты походу сравниваешь разные типы данных, попробуй первый if написать так :
if str(S_A1_B1_C1)==str(S_A2_A1_C1+S_A2_A1_B1+S_A2_C1 _B1):print "Second triangle in first" - то есть, перевести его в строку, походу у тебя сравниваются int и float - что для интерпритатора походу разные вещи

Хотя это какие-то бакапоры самого if - он сцуко не хочет нормально сравнивать никакие значения, кроме тех случаев когда они не str() - пробовал и
if int(S_A1_B1_C1)==int(S_A2_A1_C1+S_A2_A1_B1+S_A2_C1 _B1):print "Second triangle in first"
и
if float(S_A1_B1_C1)==float(S_A2_A1_C1+S_A2_A1_B1+S_A 2_C1_B1):print "Second triangle in first"
корректно работает только если
if str(S_A1_B1_C1)==str(S_A2_A1_C1+S_A2_A1_B1+S_A2_C1 _B1):print "Second triangle in first"

VIP
16.12.2008, 12:27
Сегодня мне объяснили в чём проблема: оказывается там не ровно 36 получается, а с хвостиком, поэтому надо было вводить погрешность =)

Спасибо тем, кто мне помогал!