Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Programming Training Main Points: - Python Turtle - Fractals Arrays / Lists Python lists represent sequence of [similar] elements - between [ ] - separated by , - which are indexed. [ ] represents lists / arrays. Examples: x = [1, 2, 3, 1, 0] list of 5 int numbers name = [‘s’, ’a’, ’b’, ’i’, ’n’] list of 5 string elements list = [1, 2, ‘sabin’, [0, 1, 3]] list with elements of different nature Arrays / Lists Indexing Python lists elements can be indexed using indices 0, 1, 2, …. A list l with n elements has the elements l[0], l[1], l[2],…, l[n-1]. l represents the list while l[i] is an element of the list. the first element of the list is indexed with 0. it is possible to have negative indexing. For a list l, the number of elements is given by the function len len(l) number of elements in l. ANY COMPUTATION WITH ARRAYS MUST USE THE LOOP FOR. Screen The screen is a rectangle of pixels on which we can draw. The screen origin is usually in the centre. Each pixel will have two coordinates which are float numbers. Python Turtle turtle – a Python module / library for drawing. What can turtles (as animals) do? Move forward or backward. Turn left or right. Retreat the head into the shell. Turtle-like Graphics Pens have: x, y give the turtle pen coordinates. dir the direction to go in radians. pen the pen’s status (pen=1 draws line) dir (x,y) Python Turtle turtle – a Python module / library for drawing. dir (x,y) Function to Move and Draw forward(d) – pen moves forward for distance d on the direction to go backward(d) – pen moves backward for distance on the direction to go right(angle) – pen turns right with angle (degrees) left(angle) – pen turns left with angle (degrees) goto(x, y) – pen moves to the point (x,y) drawing a line dot(size, color) – pen draws a dot of specified size with the given color circle(radius) – pen draws a circle with the specified radius Python Turtle turtle – a Python module / library for drawing. Function to Control the pen penup() – pen moves up so no drawing pendown() – pen goes down so it can draw width(w) – sets the thickness of the line color(colorname) – pen color is set as colorname color(r, g, b) – the color is set based on the r, g, b values. dir (x,y) Python Turtle turtle – a Python module / library for drawing. Function to Control the Screen bgcolor(color) – the screen background color is set to color. clear() – the screen is cleared. screensize() – it returns the width and the height of the screen dir (x,y) Python Turtle How to work with: 1. Make a pen object pen = Pen() 2. Set the pen features like color, width, etc pen.color(‘red’) pen.width(3) 3. Make you drawing using the move/draw functions pen.forward(100) pen.left(90) Python Turtle 1. What is the outcome of pen.forward(100) 1. Can be re written as for i in range(4) : pen.left(90) pen.forward(100) pen.forward(100) pen.left(90) pen.left(90) pen.forward(100) pen.left(90) pen.forward(100) pen.left(90) Python Turtle – Draw a Triangle 1. Make a pen and set some features 2. Draw the triangle A(x1, y1)B(x2, y2)C(x3,y3) - move the pen to A(x1, y1) - Draw AB using goto(x2, y2) - Draw BC using goto(x3, y3) - Draw CA using goto(x1, y1) Python Turtle – Draw a Random Circle 1. random a new module to generate random numbers random.randint(a,b) generate a random integer between a and b random.random() generate a random float between [0, 1) 2. Drawing a random circle - get a random radius - get a random color - get a random width - draw the circle Turtle Random Art 1. Develop methods to draw random shapes 2. Drawing few similar random shapes in your screen 3. Draw 30 random circles + 20 random triangles Python Recursive Functions A Python function can call any known / seen function from the imported modules or from the file. A function is recursive when it calls itself. Important Rule: A recursive method must have - a termination step that solves directly the problem - a recursion step. Python Recursive Functions Fibonacci sequence: 1, 1, 2, 3, 5, 8, 13, 21, … fib(0) = fib(1) = 1 and fib(n) = fib(n-1)+ fib(n-2) def fib(n): # termination if n== 0 or n==1 : return 1 # endif return fib(n-1) + fib(n-2) # end fib Recursive / Turtle Graphics 1. Define Recursively the figure Fn. - Termination: give the shape of F0 (point, line, etc) - Recursion: define Fn based on Fn-1. 2. Use a Turtle object to draw the figure. - The direction of the Turtle object must be preserved. Turtle Geometry represents the simplest way to construct geometrical fractals. Important Fractals: Trees, Koch’s curves, Sierpinski’s curves etc. The Binary Tree The Binary Tree T(n,l) n is the order or age l is the length T(0,l)= T(1,l)= T(1,l)= 17 T(3, l)= The Binary Tree The Binary Tree T(n,l) n is the order or age l is the length T(0,l)= nothing T(n,l) is defined as follows: - construct the trunk - left 45 (PI/4) - construct T(n-1,l/2) T(n,l) = - right 90 (PI/2) - construct T(n-1,l/2) - left 45 (PI/4) - go back at the root 18 T(n-1,l/2) T(n-1,l/2) The Binary Tree 19 The Fern F(n,l) The Fern Tree F(n,l) - n - the order or the age - l – the length of the curve 20 The Fern F(n,l) The Fern F(n,l) - n - the order or the age - l – the length of the curve The Fern F(n,l) is a tree with 3 asymmetric branches. The Fern depends - the braches angles and the branches trunks F(n-1,l/2) F(n,l) = 21 F(n-1,l/2) F(n-1,0.8*l) The Fern F(n,l) F(n-1,l/2) F(n,l) = The Fern F(n,l) is defined by: - F(0,l) is a dot or nothing. - F(n,l) is recursively defined by: 22 - F(n-1,l/2) Forward (0.3*l) Left 55; Construct F(n-1, l/2);Right 55 Forward (0.7*l) Right 40; Construct F(n-1, l/2); Left 40 Forward l Left 5; Construct F(n-1, 0.8*l); Right 5 Backward 2*l F(n-1,0.8*l) The Fern F(n,l) def fern(n,l): if n==0 or l<2: return # endif pen.forward (0.3*l); pen.left(55); fern(n-1, l/2);pen.right(55); pen.forward (0.7*l); pen.right(40); fern(n-1, l/2); pen.left(40); pen.forward(l); pen.left(5); fern(n-1, 0.8*l); pen.right(5); pen.backward(2*l); 23 } The Koch Curve The Koch Curve K(n,l) - n - the order or the age - l – the length of the curve 24 The Koch Curve The Koch Curve K(n,l) - n - the order or the age - l – the length of the curve K(n,l) is defined as follows: The Koch Curve K(n,l) is defined by - construct K(n-1,l/3); - left 60 (PI/3); construct K(n-1,l/3) - right 120 (2PI/3); construct K(n-1,l/3) - left 60 (PI/3); construct K(n-1,l/3) K(n,l) K(n,l) 25 K(n,l) K(n,l) The Koch Curve The snow flake F(n,k) - construct K(n,l); left 120 (2PI/3); - construct K(n,l); left 120 (2PI/3); - construct K(n,l); left 120 (2PI/3); F(n,k) is an infinite curve bounding a finite area. K(n,l) K(n,l) 26 K(n,l) The Koch Curve def koch(n, l): if l<2 or n==0: t.forward(l) return #endif koch(n-1,l/3) pen.left(60) koch(n-1,l/3) pen.right(120) koch(n-1,l/3) pen.left(60) koch(n-1,l/3); # end koch 27 def flake(n, l): for in range(3): koch(n,l,g) t.left(120) # endfor # end flake The Sierpinski Curve The Sierpinski Curve S(n,l) - n - the order or the age - l – the length of the curve S(n,l) is formed with 4 S(n-1,l) S(n,l)= S(n-1,l) S(n-1,l) S(n-1,l) 28 S(n-1,l) S(n,l)= The Sierpinski Curve S(n-1,l) S(n-1,l) S(n-1,l) S(0,l) is nothing S(n,l) is recursively defined by 29 - Construct S(n-1,l) Right 45; Forward d; Right 45; Construct S(n-1,l); Left 90;Forward l; Left 90; Construct S(n-1,l); Right 45; Forward d; Right 45; Construct S(n-1,l); S(n-1,l) To do List 1. 2. Solve the HW problems. Read more about the turtle module