SlideShare a Scribd company logo
Unit 3
parameters and graphics
By Alex Cheung
2
Constants
• Python doesn't really have constants.
– Instead, declare a variable at the top of your code.
– All methods will be able to use this "constant" value.
constant.py
1
2
3
4
5
6
7
8
9
10
11
12
13
MAX_VALUE = 3
def print_top():
for i in range(MAX_VALUE):
for j in range(i):
print(j)
print()
def print_bottom():
for i in range(MAX_VALUE, 0, -1):
for j in range(i, 0, -1):
print(MAX_VALUE)
print()
3
Exercise
• Rewrite the Mirror lecture program in Python. Its output:
#================#
| <><> |
| <>....<> |
| <>........<> |
|<>............<>|
|<>............<>|
| <>........<> |
| <>....<> |
| <><> |
#================#
– Make the mirror resizable by using a "constant."
4
Exercise Solution
SIZE = 4
def bar():
print("#" + 4 * SIZE * "=" + "#")
def top():
for line in range(1, SIZE + 1):
# split a long line by ending it with 
print("|" + (-2 * line + 2 * SIZE) * " " + 
"<>" + (4 * line - 4) * "." + "<>" + 
(-2 * line + 2 * SIZE) * " " + "|")
def bottom():
for line in range(SIZE, 0, -1):
print("|" + (-2 * line + 2 * SIZE) * " " + 
"<>" + (4 * line - 4) * "." + "<>" + 
(-2 * line + 2 * SIZE) * " " + "|")
# main
bar()
top()
bottom()
bar()
5
Parameters
def name(parameter, parameter, ..., parameter):
statements
– Parameters are declared by writing their names (no types)
>>> def print_many(message, n):
... for i in range(n):
... print(message)
>>> print_many("hello", 4)
hello
hello
hello
hello
6
Exercise
• Recreate the lines/boxes of stars example from lecture:
*************
*******
***********************************
**********
* *
**********
*****
* *
* *
*****
7
Exercise Solution
stars.py
1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
# Draws a box of stars with the given width and
height.
def box(width, height):
print(width * "*")
for i in range(height - 2):
print("*" + (width - 2) * " " + "*")
print(width * "*")
# main
print(13 * "*")
print( 7 * "*")
print(35 * "*")
box(10, 3)
box(5, 4)
8
Default Parameter Values
def name(parameter=value, ..., parameter=value):
statements
– Can make parameter(s) optional by specifying a default value
– Exercise: Modify stars.py to add an optional parameter for
the character to use for the outline of the box (default "*").
>>> def print_many(message, n=1):
... for i in range(n):
... print(message)
>>> print_many("shrubbery")
shrubbery
>>> print_many("shrubbery", 3)
shrubbery
shrubbery
shrubbery
9
Parameter Keywords
name(parameter=value, ..., parameter=value)
– Can specify name of each parameter as you call a function
– This allows you to pass the parameters in any order
>>> def print_many(message, n):
... for i in range(n):
... print(message)
>>> print_many(str="shrubbery", n=4)
shrubbery
shrubbery
shrubbery
shrubbery
>>> print_many(n=3, str="Ni!")
Ni!
Ni!
Ni!
10
DrawingPanel
• Instructor-provided drawingpanel.py file must be in the
same folder as your Python program
• At the top of your program, write:
– from drawingpanel import *
• Panel's canvas field behaves like Graphics g in Java
11
DrawingPanel Example
draw1.py
1
2
3
4
5
from drawingpanel import *
panel = DrawingPanel(400, 300)
panel.set_background("yellow")
panel.canvas.create_rectangle(100, 50, 200, 300)
12
– Notice, methods take x2/y2 parameters, not width/height
Drawing Methods
Java Python
drawLine panel.canvas.create_line(x1, y1, x2, y2)
drawRect,
fillRect
panel.canvas.create_rect(x1, y1, x2, y2)
drawOval,
fillOval
panel.canvas.create_oval(x1, y1, x2, y2)
drawString panel.canvas.create_text(x, y, text="text")
setColor (see next slide)
setBackground panel.set_background(color)
13
Colors and Fill
• Python doesn't have fillRect, fillOval, or setColor.
– Instead, pass outline and fill colors when drawing a shape.
– List of all color names: http://wiki.tcl.tk/16166
– See class web site for visual index of colors!
drawcolors.py
1
2
3
4
5
from drawingpanel import *
panel = DrawingPanel(400, 300)
panel.canvas.create_rectangle(100, 50, 200, 200,
outline="red", fill="yellow")
panel.canvas.create_oval(20, 10, 180, 70, fill="blue")
14
Polygons
• Draw arbitrary polygons with create_polygon
• Draw line groups by passing more params to create_line
drawpoly.py
1
2
3
4
5
from drawingpanel import *
panel = DrawingPanel(200, 200)
panel.canvas.create_polygon(100, 50, 150, 0,
150, 100, fill="green")
panel.canvas.create_line(10, 120, 20, 160,
30, 120, 40, 175)
15
Exercise
• Write a Python version of the Car program.
– Convert this Java code to Python:
DrawingPanel panel = new DrawingPanel(200, 200);
panel.setBackground(Color.LIGHT_GRAY);
Graphics g = panel.getGraphics();
g.setColor(Color.BLACK); // body
g.fillRect(10, 30, 100, 50);
g.setColor(Color.RED); // wheels
g.fillOval(20, 70, 20, 20);
g.fillOval(80, 70, 20, 20);
g.setColor(Color.CYAN); // windshield
g.fillRect(80, 40, 30, 20);
16
Exercise
• Modify your car program to use parameters so that cars can
be drawn in many different locations.
17
Exercise
• Write a variation of the Car program
where the car body is octagonal
and there is a stop sign.
– Stop sign at (150, 10), size 40
• post at (165, 50), size 10x30, brown fill
– Write an octagon function to draw the car body / stop sign.
• Points of car body, located at (10, 10):
1. (10, 20), 2. (20, 10), 3. (100, 10), 4. (110, 20),
5. (110, 50), 6. (100, 60), 7. (20, 60), 8. (10, 50)
• Points of stop sign, located at (150, 10):
1. (150, 20), 2. (160, 10), 3. (180, 10), 4. (190, 20),
5. (190, 40), 6. (180, 50), 7. (160, 50), 8. (150, 40)
(An octagon has 10x10 triangular cuts in each corner.)
1
2 3
4
5
6
7
8
18
Animation
• Pause the panel by calling sleep
animation.py
1
2
3
4
5
6
7
8
9
from drawingpanel import *
panel = DrawingPanel(350, 300)
for i in range(20):
# clear any previous image
panel.canvas.create_rectangle(0, 0, 400, 400,
outline="white", fill="white")
panel.canvas.create_polygon(20 * i, 50, 20 * i,
100, 20 * i + 50, 75)
panel.sleep(100)
19
Exercise
• Animate the car to make it drive across the panel using the
sleep function.

More Related Content

PDF
Reibling - Effective Use of Social Media For Knowledge Mobilization
Shawna Reibling
 
PPT
SIFT Algorithm Introduction
Truong LD
 
PPTX
Yolov3
SHREY MOHAN
 
PDF
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
XAIC
 
PDF
YOLOv8 - Cách mạng hóa nhận diện đối tượng với hiệu suất vượt trội.pdf
aicandy
 
PDF
Bai tap xác suất
TzaiMink
 
PPTX
ppt sepelios 2019.pptx
YessicaValenzuela4
 
Reibling - Effective Use of Social Media For Knowledge Mobilization
Shawna Reibling
 
SIFT Algorithm Introduction
Truong LD
 
Yolov3
SHREY MOHAN
 
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
XAIC
 
YOLOv8 - Cách mạng hóa nhận diện đối tượng với hiệu suất vượt trội.pdf
aicandy
 
Bai tap xác suất
TzaiMink
 
ppt sepelios 2019.pptx
YessicaValenzuela4
 

What's hot (12)

PDF
Tính toán khoa học - Chương 1: Nhập môn Matlab
Chien Dang
 
PDF
A Brief History of Object Detection / Tommi Kerola
Preferred Networks
 
DOC
Chuong6 hoạt động ngắt
Đinh Công Thiện Taydo University
 
PDF
Tổng hợp câu hỏi ôn tập android có đáp án
bsb_2209
 
PPTX
chuong 4. dai so boole
kikihoho
 
PDF
Overview of tree algorithms from decision tree to xgboost
Takami Sato
 
PPTX
Diversity is all you need(DIAYN) : Learning Skills without a Reward Function
Yechan(Paul) Kim
 
PDF
Mobile Apps by Pure Go with Reverse Binding
Takuya Ueda
 
PDF
Xu ly anh
Anh Cương Nguyễn
 
PDF
텐서플로우로 배우는 딥러닝
찬웅 주
 
DOCX
Resume
Dr Sanjeev K Singh
 
Tính toán khoa học - Chương 1: Nhập môn Matlab
Chien Dang
 
A Brief History of Object Detection / Tommi Kerola
Preferred Networks
 
Chuong6 hoạt động ngắt
Đinh Công Thiện Taydo University
 
Tổng hợp câu hỏi ôn tập android có đáp án
bsb_2209
 
chuong 4. dai so boole
kikihoho
 
Overview of tree algorithms from decision tree to xgboost
Takami Sato
 
Diversity is all you need(DIAYN) : Learning Skills without a Reward Function
Yechan(Paul) Kim
 
Mobile Apps by Pure Go with Reverse Binding
Takuya Ueda
 
텐서플로우로 배우는 딥러닝
찬웅 주
 
Ad

Similar to Python 03-parameters-graphics.pptx (20)

PPT
Python tutorialfeb152012
Shani729
 
PPTX
Python Workshop - Learn Python the Hard Way
Utkarsh Sengar
 
PPTX
Learning python
Harry Potter
 
PPTX
Learning python
Tony Nguyen
 
PPTX
Learning python
Luis Goldster
 
PPTX
Learning python
Hoang Nguyen
 
PPTX
Learning python
James Wong
 
PPTX
Learning python
Young Alista
 
PPTX
Learning python
Fraboni Ec
 
PDF
Python: An introduction A summer workshop
ForrayFerenc
 
PDF
Raspberry Pi - Lecture 5 Python for Raspberry Pi
Mohamed Abdallah
 
PPTX
Core Concept_Python.pptx
Ashwini Raut
 
PDF
Python Manuel-R2021.pdf
RamprakashSingaravel1
 
PPTX
Pa2 session 1
aiclub_slides
 
PPT
Python
Vishal Sancheti
 
PPTX
Python_Unit1_Introduction.pptx
VidhyaB10
 
PPTX
python_computer engineering_semester_computer_language.pptx
MadhusmitaSahu40
 
PDF
Q-Step_WS_02102019_Practical_introduction_to_Python.pdf
Michpice
 
PPTX
introductionpart1-160906115340 (1).pptx
AsthaChaurasia4
 
PPTX
Python 101++: Let's Get Down to Business!
Paige Bailey
 
Python tutorialfeb152012
Shani729
 
Python Workshop - Learn Python the Hard Way
Utkarsh Sengar
 
Learning python
Harry Potter
 
Learning python
Tony Nguyen
 
Learning python
Luis Goldster
 
Learning python
Hoang Nguyen
 
Learning python
James Wong
 
Learning python
Young Alista
 
Learning python
Fraboni Ec
 
Python: An introduction A summer workshop
ForrayFerenc
 
Raspberry Pi - Lecture 5 Python for Raspberry Pi
Mohamed Abdallah
 
Core Concept_Python.pptx
Ashwini Raut
 
Python Manuel-R2021.pdf
RamprakashSingaravel1
 
Pa2 session 1
aiclub_slides
 
Python_Unit1_Introduction.pptx
VidhyaB10
 
python_computer engineering_semester_computer_language.pptx
MadhusmitaSahu40
 
Q-Step_WS_02102019_Practical_introduction_to_Python.pdf
Michpice
 
introductionpart1-160906115340 (1).pptx
AsthaChaurasia4
 
Python 101++: Let's Get Down to Business!
Paige Bailey
 
Ad

Recently uploaded (20)

PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 

Python 03-parameters-graphics.pptx

  • 1. Unit 3 parameters and graphics By Alex Cheung
  • 2. 2 Constants • Python doesn't really have constants. – Instead, declare a variable at the top of your code. – All methods will be able to use this "constant" value. constant.py 1 2 3 4 5 6 7 8 9 10 11 12 13 MAX_VALUE = 3 def print_top(): for i in range(MAX_VALUE): for j in range(i): print(j) print() def print_bottom(): for i in range(MAX_VALUE, 0, -1): for j in range(i, 0, -1): print(MAX_VALUE) print()
  • 3. 3 Exercise • Rewrite the Mirror lecture program in Python. Its output: #================# | <><> | | <>....<> | | <>........<> | |<>............<>| |<>............<>| | <>........<> | | <>....<> | | <><> | #================# – Make the mirror resizable by using a "constant."
  • 4. 4 Exercise Solution SIZE = 4 def bar(): print("#" + 4 * SIZE * "=" + "#") def top(): for line in range(1, SIZE + 1): # split a long line by ending it with print("|" + (-2 * line + 2 * SIZE) * " " + "<>" + (4 * line - 4) * "." + "<>" + (-2 * line + 2 * SIZE) * " " + "|") def bottom(): for line in range(SIZE, 0, -1): print("|" + (-2 * line + 2 * SIZE) * " " + "<>" + (4 * line - 4) * "." + "<>" + (-2 * line + 2 * SIZE) * " " + "|") # main bar() top() bottom() bar()
  • 5. 5 Parameters def name(parameter, parameter, ..., parameter): statements – Parameters are declared by writing their names (no types) >>> def print_many(message, n): ... for i in range(n): ... print(message) >>> print_many("hello", 4) hello hello hello hello
  • 6. 6 Exercise • Recreate the lines/boxes of stars example from lecture: ************* ******* *********************************** ********** * * ********** ***** * * * * *****
  • 7. 7 Exercise Solution stars.py 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 # Draws a box of stars with the given width and height. def box(width, height): print(width * "*") for i in range(height - 2): print("*" + (width - 2) * " " + "*") print(width * "*") # main print(13 * "*") print( 7 * "*") print(35 * "*") box(10, 3) box(5, 4)
  • 8. 8 Default Parameter Values def name(parameter=value, ..., parameter=value): statements – Can make parameter(s) optional by specifying a default value – Exercise: Modify stars.py to add an optional parameter for the character to use for the outline of the box (default "*"). >>> def print_many(message, n=1): ... for i in range(n): ... print(message) >>> print_many("shrubbery") shrubbery >>> print_many("shrubbery", 3) shrubbery shrubbery shrubbery
  • 9. 9 Parameter Keywords name(parameter=value, ..., parameter=value) – Can specify name of each parameter as you call a function – This allows you to pass the parameters in any order >>> def print_many(message, n): ... for i in range(n): ... print(message) >>> print_many(str="shrubbery", n=4) shrubbery shrubbery shrubbery shrubbery >>> print_many(n=3, str="Ni!") Ni! Ni! Ni!
  • 10. 10 DrawingPanel • Instructor-provided drawingpanel.py file must be in the same folder as your Python program • At the top of your program, write: – from drawingpanel import * • Panel's canvas field behaves like Graphics g in Java
  • 11. 11 DrawingPanel Example draw1.py 1 2 3 4 5 from drawingpanel import * panel = DrawingPanel(400, 300) panel.set_background("yellow") panel.canvas.create_rectangle(100, 50, 200, 300)
  • 12. 12 – Notice, methods take x2/y2 parameters, not width/height Drawing Methods Java Python drawLine panel.canvas.create_line(x1, y1, x2, y2) drawRect, fillRect panel.canvas.create_rect(x1, y1, x2, y2) drawOval, fillOval panel.canvas.create_oval(x1, y1, x2, y2) drawString panel.canvas.create_text(x, y, text="text") setColor (see next slide) setBackground panel.set_background(color)
  • 13. 13 Colors and Fill • Python doesn't have fillRect, fillOval, or setColor. – Instead, pass outline and fill colors when drawing a shape. – List of all color names: http://wiki.tcl.tk/16166 – See class web site for visual index of colors! drawcolors.py 1 2 3 4 5 from drawingpanel import * panel = DrawingPanel(400, 300) panel.canvas.create_rectangle(100, 50, 200, 200, outline="red", fill="yellow") panel.canvas.create_oval(20, 10, 180, 70, fill="blue")
  • 14. 14 Polygons • Draw arbitrary polygons with create_polygon • Draw line groups by passing more params to create_line drawpoly.py 1 2 3 4 5 from drawingpanel import * panel = DrawingPanel(200, 200) panel.canvas.create_polygon(100, 50, 150, 0, 150, 100, fill="green") panel.canvas.create_line(10, 120, 20, 160, 30, 120, 40, 175)
  • 15. 15 Exercise • Write a Python version of the Car program. – Convert this Java code to Python: DrawingPanel panel = new DrawingPanel(200, 200); panel.setBackground(Color.LIGHT_GRAY); Graphics g = panel.getGraphics(); g.setColor(Color.BLACK); // body g.fillRect(10, 30, 100, 50); g.setColor(Color.RED); // wheels g.fillOval(20, 70, 20, 20); g.fillOval(80, 70, 20, 20); g.setColor(Color.CYAN); // windshield g.fillRect(80, 40, 30, 20);
  • 16. 16 Exercise • Modify your car program to use parameters so that cars can be drawn in many different locations.
  • 17. 17 Exercise • Write a variation of the Car program where the car body is octagonal and there is a stop sign. – Stop sign at (150, 10), size 40 • post at (165, 50), size 10x30, brown fill – Write an octagon function to draw the car body / stop sign. • Points of car body, located at (10, 10): 1. (10, 20), 2. (20, 10), 3. (100, 10), 4. (110, 20), 5. (110, 50), 6. (100, 60), 7. (20, 60), 8. (10, 50) • Points of stop sign, located at (150, 10): 1. (150, 20), 2. (160, 10), 3. (180, 10), 4. (190, 20), 5. (190, 40), 6. (180, 50), 7. (160, 50), 8. (150, 40) (An octagon has 10x10 triangular cuts in each corner.) 1 2 3 4 5 6 7 8
  • 18. 18 Animation • Pause the panel by calling sleep animation.py 1 2 3 4 5 6 7 8 9 from drawingpanel import * panel = DrawingPanel(350, 300) for i in range(20): # clear any previous image panel.canvas.create_rectangle(0, 0, 400, 400, outline="white", fill="white") panel.canvas.create_polygon(20 * i, 50, 20 * i, 100, 20 * i + 50, 75) panel.sleep(100)
  • 19. 19 Exercise • Animate the car to make it drive across the panel using the sleep function.