[Tutor] Hey guys!

Dave Angel davea at davea.name
Tue Feb 17 11:36:28 CET 2015


On 02/16/2015 11:22 PM, Levi Adissi wrote:

Thank you for using text email, rather than the html mail that so many 
newcomers use.

> So I'm kind of stuck trying to program a function that returns a list of
> tuples. The function takes 2 lists containing circles of which it should
> compare list1[0] to list2[0] to see if they intersect. If they intersect or
> touch then I should return them on a list of tuples(in the tuple would be
> both intersecting circles).
>
> I can't get circles_only to work the way I see it I'm comparing h to x only
> if they're both in the same place on the list (hence my "h==x") I know it
> doesn't work because the test returns None so I would really appreciate an
> alternative method if you guys see one.
>
> Here are my functions:
>
>
> def circles_overlap(c1, c2):
>     x=(c2.center.y-c1.center.y)**2
>     y=(c2.center.x-c1.center.x)**2
>     distancemid=math.sqrt(x+y)
>     distancerad=(c1.radius+c2.radius)
>     if distancemid > distancerad:
>         return 1
>     elif distancemid < distancerad:
>         return -1
>     elif distancemid == distancerad:
>         return 0
>
> def circles_only(lst1, lst2):
>     newlst=[]
>     for h in lst1:
>        for x in lst2:
>           if h==x:

That's silly.  You don't want to compare the two circles to see if 
they're equal.  Remove this line.

>              if circles_overlap(lst1[h],lst2[x])== -1:

Why don't you tell us the exception this line causes?  lst1 is 
subscripted by integers, not by circle objects.

What you really want in this line is something like:
                if circles_overlap(h, x) ! = 1:
                    newlst.append(h, x)


>                 newlst.append(lst1[h],lst2[x])
>
>              elif circles_overlap(lst1[h],lst2[x])== 0:
>                 newlst.append(lst1[h],lst2[x])
>
>     print newlst

Don't print it, return it.  Otherwise, you're returning None.

>
>
> TEST CASE:
>
>      def test_circles_olap1(self):
>          list1=[data_2.Circle(data_2.Point(2,3),
> 2),data_2.Circle(data_2.Point(2,3), 2), data_2.Circle(data_2.Point(2,3), 2)
>                 ]
>          list2=[data_2.Circle(data_2.Point(6,3),
> 2),data_2.Circle(data_2.Point(10,3), 2), data_2.Circle(data_2.Point(5,3), 2)
>                 ]
>          testor=functions_2.circles_only(list1,list2)
>          newlist=[(data_2.Circle(data_2.Point(2,3),
> 2),data_2.Circle(data_2.Point(6,3), 2)),(data_2.Circle(data_2.Point(2,3),
> 2),data_2.Circle(data_2.Point(10,3), 2))]
>          self.assertEqual(testor, newlist)
>

The test code makes no sense to me at all.  it's a method of some 
unspecified class, and it uses some namespaces called data_2  and 
functions_2 for an unknown purpose.



-- 
-- 
DaveA


More information about the Tutor mailing list