Page 1 of 1

[IP - python] vreemde error bij Turtle (solved)

Posted: Mon Oct 08, 2012 10:57 pm
by Lttlemoi
Hallo,
ik heb al de eerste huistaak afgemaakt maar ik blijf met een vreemde bug zitten waar ik niets van snap.
(Als je zelf de oefening nog niet af hebt, gelieve dan niet al te veel inspiratie hier te halen)

ik heb twee bestanden, huistaak.py en discs.py

huistaak.py roept de functies van discs op om de schijven werkelijk te tekenen
SPOILERS - Click here:

Code: Select all

#
# Created on 8-okt.-2012
#
# @author: Stijn Manhaeve rolnummer: 20121442
# editor used: Eclipse 4.2.0 + PyDev
#
# This shows how to use the discs module

# import statements
import turtle
import discs

colors = ["green", # the colors
"purple", "magenta",
"blue", "yellow",
"orange", "red"]

wn = turtle.Screen() # create a window for the turtles
discs.draw_discs(colors, 600)
wn.mainloop()
discs.py bevat alles dat nodig is om de schijven te tekenen
SPOILERS - Click here:

Code: Select all

#
# Created on 8-okt.-2012
#
# @author: Stijn Manhaeve rolnummer: 20121442
# editor used: Eclipse 4.2.0 + PyDev
#
# to draw your own set of discs:
# import this module
# create a list of strings to use as colors
# choose the outer_radius of the largest disc
# call draw_discs(colors, start_radius)

# import statements
import turtle
import math
import random

# local fields
circle_quality = 270 # the number of sides used to draw a circle
circle_amount = 20 # amount of circles in each disc
animation_speed = 0 # the default animation speed for the turtles
radius_ratio = 7/8 # inner radius = radius_ratio*outer_radius
radius_degradation = 1/2 # new disc.radius = old radius*radius_degradation

# functions
def draw_poly(t, sides, length):
# t = turtle
# sides = number of sides
# length = length of sides
# (this function was already written by me for exercise 3 of chapter 4)

angle = 360/sides
for i in range(sides):
t.forward(length)
t.right(angle)

def draw_circle(t, x, y, r):
# t = turtle
# - should be positioned at the origin and facing east!
# x = x-coordinate of the midpoint
# y = y-coordinate of the midpoint
# r = radius

# calculate length of the sides
length = 2*r*math.sin(180/circle_quality)

# move to starting point
t.penup()
t.forward(x)
t.left(90)
t.forward(y+r)
t.right(90)
t.pendown()

# draw the circle
draw_poly(t, circle_quality, length)

def draw_disc(r, count, color):
# r = radius of the midpoints = outer radius
# count = the number of circles to draw for each disc
# color = disc color

inner = r*radius_ratio # calculate radius of the circles (the 'inner radius')
angle_jump = 360/count # the angle between two successive midpoints and the origin

# draw the circles
for i in range(count):
# calculate midpoint
x = r*math.cos(i*angle_jump)
y = r*math.sin(i*angle_jump)
# define the turtle
t = turtle.Turtle()
t.color(color)
t.hideturtle()
t.speed(animation_speed)
# draw the circle
draw_circle(t, x, y, inner)

def draw_discs(colors, start_radius):
# colors = which colors to use
# start_radius = starting outer radius

radius = start_radius
random.shuffle(colors)
for i in colors:
draw_disc(radius, circle_amount, i)
radius *= radius_degradation
als ik huistaak.py dan afspeel verschijnt er een nieuw venster, maar wordt er niks getekend.
Als ik het venster sluit verschijnt ineens deze foutmelding:

Code: Select all

Traceback (most recent call last):
File "C:\Users\Stijn Manhaeve\school\ua - bachelor Informatica\inleiding programmeren\Python projecten\huistaak1.py", line 19, in <module>
discs.draw_discs(colors, 600)
File "C:\Users\Stijn Manhaeve\school\ua - bachelor Informatica\inleiding programmeren\Python projecten\discs.py", line 86, in draw_discs
draw_disc(radius, circle_amount, i)
File "C:\Users\Stijn Manhaeve\school\ua - bachelor Informatica\inleiding programmeren\Python projecten\discs.py", line 77, in draw_disc
draw_circle(t, x, y, inner)
File "C:\Users\Stijn Manhaeve\school\ua - bachelor Informatica\inleiding programmeren\Python projecten\discs.py", line 56, in draw_circle
draw_poly(t, circle_quality, length)
File "C:\Users\Stijn Manhaeve\school\ua - bachelor Informatica\inleiding programmeren\Python projecten\discs.py", line 34, in draw_poly
t.forward(length)
File "C:\Users\Stijn Manhaeve\programma's\programmeren\python\lib\turtle.py", line 1629, in forward
self._go(distance)
File "C:\Users\Stijn Manhaeve\programma's\programmeren\python\lib\turtle.py", line 1597, in _go
self._goto(ende)
File "C:\Users\Stijn Manhaeve\programma's\programmeren\python\lib\turtle.py", line 3170, in _goto
self._pencolor, self._pensize, top)
File "C:\Users\Stijn Manhaeve\programma's\programmeren\python\lib\turtle.py", line 544, in _drawline
self.cv.coords(lineitem, *cl)
File "<string>", line 1, in coords
File "C:\Users\Stijn Manhaeve\programma's\programmeren\python\lib\tkinter\__init__.py", line 2264, in coords
self.tk.call((self._w, 'coords') + args))]
_tkinter.TclError: invalid command name ".53357928"

Re: [IP - python] vreemde error bij Turtle

Posted: Mon Oct 08, 2012 11:09 pm
by Flipper
Mmh, waar heb jij de discs.py opgeslagen? Het is (denk ik) niet zo dat je een geschreven functie zomaar eender waar kunt opslaan om ze dan vervolgens vanuit een andere script te importeren. Je zou dat kunnen oplossen door

(1) De discs.py en die hele hoop die je daar geschreven heb, gewoon ergens bovenaan in je huistaak.py te copy-pasten. Vergeet dan niet daar de "import disc....(blah)" weg te halen, want je hebt die functie nu zelf binnenin je huistaak.py gedefinieerd.

(2) Of de discs.py in de directory van python te steken waar je alsnog vanuit je huistaak.py de discs.py kunt importeren.


(denk ik he, ik kan er totaal naast staan hoor :P )

Re: [IP - python] vreemde error bij Turtle

Posted: Mon Oct 08, 2012 11:24 pm
by Lttlemoi
Ik heb 1 al geprobeert en kreeg exact dezelfde errors.
Ik denk niet dat het probleem daar ergens zit omdat in de traceback alle functies in de juiste volgorde staan.
Als de bestanden in dezelfde map staan kun je ze gewoon importeren zoals de andere modules

Ik heb ondertussen nog wat verder opzoekwerk gedaan en er staat iets soortgelijks in de buglist van Python
link: http://psf.upfronthosting.co.za/roundup ... s=1&type=5

(het is het derde laatste item in de tabel)

Re: [IP - python] vreemde error bij Turtle

Posted: Mon Oct 08, 2012 11:43 pm
by Flipper
ja, je zou ook de script discs.py kunnen nakijken op syntax en/of runtime errors, ik heb al vaak datzelfde soort problemen gehad met verschillende opdrachten. De traceback in Python werkt trouwens niet altijd zuiver, ik kreeg bijvoorbeeld een error op een lijn die eigenlijk in orde was, maar de error zat in een paar lijnen hoger, waar ik een ")" vergeten was..

Re: [IP - python] vreemde error bij Turtle

Posted: Mon Oct 08, 2012 11:50 pm
by Lttlemoi
da zou uitgeslote moete zijn (Eclipse is vrij goed in het opsporen van zulke fouten) maar ik ga ht nog eens nakijken (je weet mr nooit natuurlijk :wink: )

Re: [IP - python] vreemde error bij Turtle

Posted: Tue Oct 09, 2012 12:05 am
by Lttlemoi
ik weet al wat het probleem is.
Omdat er niets verscheen sloot ik het scherm af en dat genereerde de fout. blijkbaar moet ik gewoon wat geduldiger zijn met turtle :mrgreen:

Re: [IP - python] vreemde error bij Turtle

Posted: Tue Oct 09, 2012 2:24 am
by Timmy
Flipper wrote:Mmh, waar heb jij de discs.py opgeslagen? Het is (denk ik) niet zo dat je een geschreven functie zomaar eender waar kunt opslaan om ze dan vervolgens vanuit een andere script te importeren. Je zou dat kunnen oplossen door
Dan wilk later u eindwerk wel eens bekijken als ge alles in 1 file begint te definieren :D

Kvind vreemd dat gulle al gelijk zo'n dingen krijgen, wij begonnen nog me nen "Hello world", nen simpele invoer en na een paar weken misschien eens nen array :D

Re: [IP - python] vreemde error bij Turtle

Posted: Tue Oct 09, 2012 8:12 am
by DenBeke
Timmy wrote:Kvind vreemd dat gulle al gelijk zo'n dingen krijgen, wij begonnen nog me nen "Hello world", nen simpele invoer en na een paar weken misschien eens nen array :D
Dit is dan ook veel leuker dan Hello World en basis arrays... :)

Re: [IP - python] vreemde error bij Turtle

Posted: Tue Oct 09, 2012 11:42 am
by Timmy
DenBeke wrote:
Timmy wrote:Kvind vreemd dat gulle al gelijk zo'n dingen krijgen, wij begonnen nog me nen "Hello world", nen simpele invoer en na een paar weken misschien eens nen array :D
Dit is dan ook veel leuker dan Hello World en basis arrays... :)
Ja, maar gullie progt ni in een ferm deprimerende taal genaamd "Oberon" :(

Sfeeeeeer! http://www.ethoberon.ethz.ch/native/snaps/tile.jpg" onclick="window.open(this.href);return false;

Re: [IP - python] vreemde error bij Turtle

Posted: Tue Oct 09, 2012 12:47 pm
by Fristi
Timmy wrote:
DenBeke wrote:
Timmy wrote:Kvind vreemd dat gulle al gelijk zo'n dingen krijgen, wij begonnen nog me nen "Hello world", nen simpele invoer en na een paar weken misschien eens nen array :D
Dit is dan ook veel leuker dan Hello World en basis arrays... :)
Ja, maar gullie progt ni in een ferm deprimerende taal genaamd "Oberon" :(

Sfeeeeeer! http://www.ethoberon.ethz.ch/native/snaps/tile.jpg" onclick="window.open(this.href);return false;
KILL WITH FIRE :evil:

Re: [IP - python] vreemde error bij Turtle (solved)

Posted: Tue Oct 09, 2012 4:03 pm
by timvdm
Hmm, je weet toch dat er ook een turtle.Turtle.circle() functie is he :D

Re: [IP - python] vreemde error bij Turtle

Posted: Wed Oct 10, 2012 7:17 pm
by Nathan
Timmy wrote:
DenBeke wrote:
Timmy wrote:Kvind vreemd dat gulle al gelijk zo'n dingen krijgen, wij begonnen nog me nen "Hello world", nen simpele invoer en na een paar weken misschien eens nen array :D
Dit is dan ook veel leuker dan Hello World en basis arrays... :)
Ja, maar gullie progt ni in een ferm deprimerende taal genaamd "Oberon" :(

Sfeeeeeer! http://www.ethoberon.ethz.ch/native/snaps/tile.jpg" onclick="window.open(this.href);return false;
OBERONCLOWN IS WATCHING YOU TIMMY.

Image

Re: [IP - python] vreemde error bij Turtle

Posted: Wed Oct 10, 2012 7:29 pm
by Timmy
Nathan wrote:
Timmy wrote:
DenBeke wrote:
Timmy wrote:Kvind vreemd dat gulle al gelijk zo'n dingen krijgen, wij begonnen nog me nen "Hello world", nen simpele invoer en na een paar weken misschien eens nen array :D
Dit is dan ook veel leuker dan Hello World en basis arrays... :)
Ja, maar gullie progt ni in een ferm deprimerende taal genaamd "Oberon" :(

Sfeeeeeer! http://www.ethoberon.ethz.ch/native/snaps/tile.jpg" onclick="window.open(this.href);return false;
OBERONCLOWN IS WATCHING YOU TIMMY.

Image
*hides*

Re: [IP - python] vreemde error bij Turtle (solved)

Posted: Wed Oct 10, 2012 8:44 pm
by Lttlemoi
timvdm wrote:Hmm, je weet toch dat er ook een turtle.Turtle.circle() functie is he :D
ja, da heb ik daarna pas ontdekt :)
er is trouwes ook een setx() en sety() functie. Kheb trouwes al heel wa opnieuw veranderd aan mn programma.