2. GIỚI THIỆU VỀ PYTHON
Mở IDLE. Để tạo file mới trong IDLE bạn nhấp vào File > New Windows hoặc nhấn tổ hợp phím tắt Ctrl + N.
3. Sao chép đoạn code Python:
print("Xin chào!")
vào file vừa tạo, rồi nhấn Ctrl + S để lưu. File sẽ có đuôi là .py, đặt một cái tên cho nó, chẳng hạn: firstProg.py.
print("Xin chào!")
6. Tìm hiểu chương trình Python đầu tiên
Như đã đề cập ở những bài viết trước, Python là ngôn ngữ lập trình rất dễ để học, và việc tạo ra chương
trình "Hello, World!" lại càng đơn giản, bạn chỉ cần viết dòng code print("Hello, World!").
Vì thế, chúng ta sẽ đi tìm hiểu một chương trình khác, cũng đơn giản thôi, để bạn hiểu thêm một chút về
ngôn ngữ lập trình này. Tạm đặt tên nó là Thêm hai số:
# Them hai so va in tong
num1 = 6
num2 = 9
sum = num1+num2
print(sum)
7. Đoạn code trên sẽ làm gì?
Dòng 1: # Them hai so va in tong
Bất kỳ dòng code nào trong Python bắt đầu với dấu # sẽ là chú thích, bình luận. Nó được sử dụng để mô tả
về đoạn code bên dưới dùng để làm gì. Điều này sẽ giúp cho những người đọc code, hiểu code rõ hơn.
Những dòng bắt đầu với # sẽ được các trình biên dịch code và trình phiên dịch code bỏ qua.
Dòng 2: num1 = 6
num1 ở đây là biến, bạn có thể lưu trữ giá trị trong biến và trong trường hợp này, num1 lưu giá trị 6.
Dòng 3: num2 = 9
Tương tự như trên, 9 được lưu trữ trong num2.
Dòng 4: sum = num1+num2
Tổng của biến num1 và num2 được lưu trữ trong một biến khác là sum.
Dòng 5: print(sum)
Hàm print() in đầu ra trên màn hình. Trong trường hợp này nó sẽ in kết quả 15 trên màn hình, sau khi bạn
nhấn F5.
8.
9. Writing Programs in Python
# YourName.py
name = input("What is your name?n")
print("Hi, ", name)
MadLib.py
name = input("Your name: ")
age = input("Your age: ")
location = input("Your location: ")
print('Hello', name, age, 'from', location)
10. Từ khóa và định danh trong Python
• Keyword của Python như đã nói là những từ chỉ dành riêng cho Python.
• Bạn không thể sử dụng những keyword này để đặt tên cho biến, hay sử dụng chúng như các hằng, tên
định danh.
• Trong Python, ngoại trừ True, False và None được viết hoa ra thì các keyword khác đều được viết
dưới dạng chữ thường, đây là điều bắt buộc.
Keyword của Python
11. Định danh trong Python
• Định danh là tên gọi của các thành phần trong chương trình Python như tên biến, tên hằng, tên kiểu, tên hàm, v.v..
• Nó giúp phân biệt thực thể này với thực thể khác.
Quy tắc đặt định danh trong Python như sau:
Định danh chỉ được phép chứa các ký tự thường (a-z), ký tự hoa (A-Z), chữ số (0-9), dấu gạch chân (_). Định danh hợp lệ
sẽ giống như thế này: bien_1, tinh_tong_0_9, firstClass.
Các ký tự khác (như @, $, %, dấu cách, v.v.) không được phép có mặt trong định danh.
Có thể sử dụng ký tự unicode trong định danh (ví dụ, có thể đặt tên biến bằng tiếng Việt có dấu).
Định danh chỉ được phép bắt đầu bằng ký tự (thường/hoa) hoặc dấu gạch chân. Tên gọi bắt đầu bằng chữ số là không hợp
lệ. Ví dụ: 1bien là không hợp lệ.
Định danh không được trùng với một số từ dành riêng cho các mục đích đặc biệt (từ khóa).
Định danh trong Python phân biệt chữ hoa/thường.
Định danh có thể dài bao nhiêu tùy ý.
Nếu định danh bắt đầu và kết thúc bằng 2 dấu gạch dưới (__init__ chẳng hạn) thì định danh đó là tên đặc biệt được ngôn
ngữ định nghĩa.
12. Dòng lệnh và ghi chú trong Python
• Trong Python, mặc định mỗi lệnh được viết trên một dòng.
• Kết thúc dòng(Xuống dòng) cũng là báo hiệu kết thúc lệnh. Do vậy, các lệnh không phải dùng dấu báo kết
thúc dòng).
• Ví dụ:
name = input("Your name? ")
age = int(input("Your age? "))
print(name, age, sep = ' ')
Nếu cần viết nhiều lệnh trên cùng một dòng, các lệnh được phân tách bằng ký tự: ;
Ví dụ: import sys; x = 'foo'; sys.stdout.write(x + 'n')
Tuy nhiên lối viết này không được khuyến khích trong Python vì nó gây khó đọc code.
13. Nếu một lệnh quá dài, bạn có thể viết tách nó ra nhiều dòng bằng cách thêm ký tự vào cuối dòng.
Gọi là ký tự nối dòng (line continuation character). Ví dụ:
total = item_one +
item_two +
item_three
Một số lệnh chứa các cặp dấu [], {}, () có thể viết trên nhiều dòng mà không cần ký tự nối dòng .
Ví dụ: days = ['Monday',
'Tuesday',
'Wednesday',
'Friday']
Hiện tượng này được gọi là nối dòng ngầm định (implicit line continuation). Python có thể tự mình xác
định được là lệnh trải trên nhiều dòng.
14. Ghi chú trong Python được đánh dấu bắt đầu bằng ký tự #. Tất cả những gì nằm sau # cho đến hết dòng tương ứng
được xem là ghi chú.
Python tự động bỏ qua ghi chú khi dịch mã nguồn. Ví dụ:
# First comment
print(Hello, Python!") # second comment
name = "Madisetti" # This is again comment
# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.
Trong Python chỉ sử dụng ghi chú trên từng dòng. Python không có ghi chú nhiều dòng.
ghi chú
15. Thụt lề trong Python
Trong Python những khối lệnh sẽ được nhận biết thông qua thụt lề, nếu bạn thụt hoặc thò nhầm là sẽ bị báo lỗi ngay.
Một khối code (thường là khối lệnh của hàm, vòng lặp,...) bắt đầu với thụt lề và kết thúc với dòng đầu tiên không thụt lề.
Thụt lề bao nhiêu là tùy thuộc ở bạn nhưng chúng phải nhất quán trong suốt khối code đó, tức là các lệnh trong cùng một khối thì phải có
độ thụt lề bằng nhau.
Thông thường, sẽ dùng 4 lần phím cách để thụt lề, chúng được các lập trình viên yêu thích hơn là phím tab, giống như ví dụ dưới đây:
for i in range(1,11):
print(i)
if i == 5:
break
Khối lệnh của for gồm có print(i) và if, được viết thụt lề bằng nhau, break là lệnh trong if, nên lại được thụt lề thêm một đoạn nữa.
Nếu lệnh trên được viết thành:
for i in range(1,11):
print(i)
if i == 5:
break
Bạn sẽ nhận được thông báo lỗi ngay lập tức, và lỗi sẽ hiện trước lệnh print(i).
Nhờ thụt đầu dòng mà code trong Python trông gọn gàng và rõ ràng hơn. Ví dụ
16. Khối code trong Python
Một số lệnh có thể tạo thành một khối code. Khối code
là một/nhóm lệnh có ranh giới với phần code khác xung
quanh.
Một khối code trong Python được tạo thành bằng cách
viết các lệnh với cùng số thụt đầu dòng (indentation).
Tất cả code với cùng số thụt đầu dòng được xem là nằm
trong một khối code.
Thông thường, các IDE Python sử dụng dấu tab để thụt
đầu dòng với quy ước một thụt đầu dòng là 4 dấu cách.
17. Xuất nhập dữ liệu với console
Python sử dụng các phương thức sau để làm việc với console:
print() – xuất dữ liệu ra console.
input() – nhập dữ liệu từ console.
Hãy xem các ví dụ sau:
name = input("Your name: ")
age = input("Your age: ")
location = input("Your location: ")
print('Hello', name, age, 'from', location)
18. SquareSpiral1.py
# SquareSpiral1.py - Draws a square spiral
import turtle
t = turtle.Pen()
for x in range(100):
t.forward(x)
t.left(90)
SquareSpiral2.py
import turtle
t = turtle.Pen()
for x in range(100):
t.forward(x)
t.left(91)
19. CircleSpiral1.py
import turtle
t = turtle.Pen()
for x in range(100):
t.circle(x)
t.left(91)
SquareSpiral3.py
import turtle
t = turtle.Pen()
t.pencolor("red")
for x in range(100):
t.forward(x)
t.left(91)
20. ColorSquareSpiral.py
import turtle
t = turtle.Pen()
colors = ["red", "yellow", "blue", "green"]
for x in range(100):
t.pencolor(colors[x%4])
t.forward(x)
t.left(91)
ColorCircleSpiral.py
import turtle
t = turtle.Pen()
turtle.bgcolor("black")
colors = ["red", "yellow", "blue", "green"]
for x in range(100):
t.pencolor(colors[x%4])
t.circle(x)
t.left(91)
21. ColorSpiral.py
import turtle
t = turtle.Pen()
turtle.bgcolor("black")
# You can choose between 2 and 6 sides for some cool shapes!
sides = 6
colors = ["red", "yellow", "blue", "orange", "green", "purple"]
for x in range(360):
t.pencolor(colors[x%sides])
t.forward(x * 3/sides + x)
t.left(360/sides + 1)
t.width(x*sides/200)
22.
23. Biến, phép gán, kiểu dữ liệu trong Python
Hãy xem một số lệnh sau:
variables.py
name = 'Donald Trump' # biến kiểu chuỗi
age = 40 # biến kiểu số
companies = ['Apple', 'Google', 'Microsoft'] # biến kiểu danh sách
person_tuple = ('Trump', 'USA', 40, 'President') # biến kiểu tuple
person_dict = {'Name': 'Trump', 'Age': 40, 'Job': 'US President'} # biến kiểu từ điển
print(name)
print(age)
print(companies)
print(person_tuple)
print(person_dict)
24. Đây là các lệnh khai báo và gán giá trị cho biến với một số kiểu dữ liệu cơ sở của Python.
Trong ví dụ trên, name, age, companies, person_tuple, person_dict là các biến, dấu = là
dấu phép gán, bên tay phải dấu = là giá trị của biến.
25. Numbers aNd Variables: PythoN does the math
my_name = "Bryson"
my_age = 43
your_name = input("What is your name? ")
your_age = input("How old are you? ")
print("My name is", my_name, ", and I am", my_age, "years old.")
print("Your name is", your_name, ", and you are", your_age, ".")
print("Thank you for buying my book,", your_name, "!")
ThankYou.py
26. Biến là một vị trí trong bộ nhớ được sử dụng để lưu trữ dữ liệu (giá trị).
Biến được đặt tên duy nhất để phân biệt giữa các vị trí bộ nhớ khác nhau.
Các quy tắc để viết tên một biến giống như quy tắc viết các định danh trong Python.
Trong Python, bạn không cần khai báo biến trước khi sử dụng, chỉ cần gán cho biến một giá trị và nó sẽ tồn
tại.
Cũng không cần phải khai báo kiểu biến, kiểu biến sẽ được nhận tự động dựa vào giá trị mà bạn đã gán
cho biến.
Để dễ hình dung, biến trong Python có nét tương tự như file và shortcut trong windows. Trong đó, file trên ổ
đĩa tương tự như giá trị của biến trong bộ nhớ. Shortcut (lối tắt) đến file tương tự như biến trong Python.
Biến trong Python bắt buộc phải tạo ra cùng phép gán. Giá trị của biến trong bộ nhớ được tự động “thu dọn”
khi không sử dụng đến nhờ một tiến trình gọi là Garbage Collection.
Biến trong Python
27. Gán giá trị cho biến:
Để gán giá trị cho biến ta sử dụng toán tử =. Bất kỳ loại giá trị nào cũng có thể gán cho biến hợp lệ.
Ví dụ:
hoa = "Hồng"
la = 3
canh = 5.5
Phía trên là 3 câu lệnh gán, "Hồng" là một chuỗi ký tự, được gán cho biến hoa, 3 là số nguyên và được
gán cho la, 5.5 là số thập phân và gán cho canh.
Gán nhiều giá trị:
Trong Python bạn có thể thực hiện gán nhiều giá trị trong một lệnh như sau:
hoa, la, canh = "Hồng", 3, 5.5
Nếu muốn gán giá trị giống nhau cho nhiều biến thì có thể viết lệnh như sau:
hoa, la, canh = 3
Lệnh trên sẽ gán giá trị 3 cho cả 3 biến là hoa, la và canh.
28. Lập trình với các toán tử:
Máy tính Pizza
Nhắc đến pizza, bây giờ hãy tưởng tượng bạn sở hữu một tiệm bánh pizza.Hãy viết một chương trình nhỏ để
tìm ra tổng chi phí của một đơn đặt hàng pizza đơn giản, bao gồm cả thuế bán hàng. Giả sử chúng tôi đang
đặt một hoặc nhiều chiếc bánh pizza có giá như nhau và chúng tôi đang đặt hàng ở Atlanta, Georgia, Hoa Kỳ.
Thuế bán hàng không được bao gồm trong giá thực đơn nhưng được thêm vào khi mua hàng. Tỷ lệ là 8 phần
trăm, có nghĩa là cứ mỗi đô la chúng tôi trả cho chiếc bánh pizza, chúng tôi cũng phải trả tám xu tiền thuế bán
hàng. Chúng tôi có thể mô hình hóa chương trình này bằng các từ như sau:
1. Hỏi người đó muốn có bao nhiêu chiếc bánh pizza.
2. Hỏi giá thực đơn của mỗi chiếc bánh pizza.
3. Tính tổng chi phí của những chiếc pizza làm tổng phụ của chúng tôi.
4. Tính thuế bán hàng còn nợ, ở mức 8 phần trăm của tổng phụ.
5. Cộng thuế bán hàng vào tổng phụ để có tổng cuối cùng.
6. Hiển thị cho người dùng tổng số tiền đến hạn, bao gồm cả thuế.
Chúng tôi đã biết cách yêu cầu người dùng nhập. Để tính toán vớicác số chúng tôi đã nhập làm đầu vào,
chúng tôi cần thêm một hàm nữa: eval ().Hàm eval () đánh giá hoặc tìm ra giá trị của đầu vào mà chúng ta đã
nhập. Đầu vào bàn phím bằng Python luôn được nhận dưới dạng một chuỗi ký tự văn bản, vì vậy chúng tôi
sử dụng eval () để biến đầu vào đó thành một số. Vì vậy, nếu chúng ta nhập "20" vào chương trình của mình,
eval ("20") sẽ cung cấp cho chúng ta giá trị số 20, sau đó chúng ta có thể sử dụng trong các công thức toán
học để tính các số mới, chẳng hạn như giá của 20 chiếc pizza. Hàm eval () khá mạnh khi làm việc với các số
trong Python.Bây giờ chúng ta đã biết cách biến đầu vào của người dùng thành các con số mà chúng ta có
thể tính toán, chúng ta có thể chuyển đổi các bước được đánh số của kế hoạch chương trình của chúng ta
thành mã thực tế.
29. AtlantaPizza.py
# AtlantaPizza.py - a simple pizza cost calculator
# Ask the person how many pizzas they want, get the number with eval()
number_of_pizzas = eval(input("How many pizzas do you want? "))
# Ask for the menu cost of each pizza
cost_per_pizza = eval(input("How much does each pizza cost? "))
# Calculate the total cost of the pizzas as our subtotal
subtotal = number_of_pizzas * cost_per_pizza
# Calculate the sales tax owed, at 8% of the subtotal
tax_rate = 0.08 # Store 8% as the decimal value 0.08
sales_tax = subtotal * tax_rate
# Add the sales tax to the subtotal for the final total
total = subtotal + sales_tax
# Show the user the total amount due, including tax
print("The total cost is $",total)
print("This includes $", subtotal, "for the pizza and")
print("$", sales_tax, "in sales tax.")
30.
31. SayMyName.py
# SayMyName.py - prints a screen full of the user's name
# Ask the user for their name
name = input("What is your name? ")
# Print their name 100 times
for x in range(100):
# Print their name followed by a space, not a new line
print(name, end = " ")
32. SpiralMyName.py
# SpiralMyName.py - prints a colorful spiral of the user's name
import turtle # Set up turtle graphics
t = turtle.Pen()
turtle.bgcolor("black")
colors = ["red", "yellow", "blue", "green"]
# Ask the user's name using turtle's textinput pop-up window
u your_name = turtle.textinput("Enter your name", "What is your name?")
# Draw a spiral of the name on the screen, written 100 times
for x in range(100):
t.pencolor(colors[x%4]) # Rotate through the four colors
v t.penup() # Don't draw the regular spiral lines
w t.forward(x*4) # Just move the turtle on the screen
x t.pendown() # Write the user's name, bigger each time
y t.write(your_name, font = ("Arial", int( (x + 4) / 4), "bold") )
t.left(92) # Turn left, just as in our other spirals
33.
34. ColorSpiralInput.py
import turtle # Set up turtle graphics
t = turtle.Pen()
turtle.bgcolor("black")
# Set up a list of any 8 valid Python color names
colors = ["red", "yellow", "blue", "green", "orange", "purple", "white", "gray"]
# Ask the user for the number of sides, between 1 and 8, with a default of 4
sides = int(turtle.numinput("Number of sides",
"How many sides do you want (1-8)?", 4, 1, 8))
# Draw a colorful spiral with the user-specified number of sides
for x in range(360):
u t.pencolor(colors[x % sides]) # Only use the right number of colors
v t.forward(x * 3 / sides + x) # Change the size to match number of sides
w t.left(360 / sides + 1) # Turn 360 degrees / number of sides, plus 1
x t.width(x * sides / 200) # Make the pen larger as it goes outward
35.
36. MathHomework.py
print("MathHomework.py")
# Ask the user to enter a math problem
problem = input("Enter a math problem, or 'q' to quit: ")
# Keep going until the user enters 'q' to quit
while (problem != "q"):
# Show the problem, and the answer using eval()
print("The answer to ", problem, "is:", eval(problem) )
# Ask for another math problem
problem = input("Enter another math problem, or 'q' to quit: ")
# This while loop will keep going until you enter 'q' to quit
37.
38. Các kiểu dữ liệu cơ bản của Python
Python có các loại kiểu dữ liệu cơ bản: số, chuỗi, danh sách, tuple, từ điển, boolean.
Kiếu số trong python chia làm 3 loại: số nguyên (int), số thực (float), số phức (complex).
Dưới đây là ví dụ về biểu diễn giá trị số trong Python:
Số nguyên có thể viết ở cơ số 10 (mặc định), cơ số 8 (bắt đầu bằng 0o), cơ số 16 (bắt đầu bằng 0x). Kiểu
float phải có dấu chấm thập phân và có thể viết ở dạng khoa học. Kiểu complex phải có ký tự ảo j (hoặc J).
39. Số nguyên có thể viết ở cơ số 10 (mặc định), cơ số 8 (bắt đầu bằng 0o), cơ số 16 (bắt đầu bằng
0x). Kiểu float phải có dấu chấm thập phân và có thể viết ở dạng khoa học. Kiểu complex phải
có ký tự ảo j (hoặc J).
Chú ý: Python 2.x có hai kiểu số nguyên int và long. Kiểu long cần biểu diễn với hậu tố L (hoặc
l). Số nguyên ở hệ cơ số 8 viết bắt đầu bằng 0. Vì vậy, khi đọc tài liệu nên lưu ý xem đó là
Python 2 hay Python 3. Hai phiên bản này có nhiều điểm không tương thích.
Kiểu boolean chỉ nhận một trong hai giá trị True hoặc False và là một kiểu con của kiểu số
nguyên.
Lưu ý giá trị boolean phải viết chính xác là True/False.
Kiểu chuỗi ký tự được viết trong cặp dấu ngoặc đơn ”, ngoặc kép “”, trong cặp ba dấu ngoặc đơn hoặc ba
dấu ngoặc kép.
Mặc định chuỗi ký tự trong Python chỉ chứa ký tự Unicode. Python không có kiểu ký tự. Ký tự được coi là một
chuỗi có 1 phần tử.
Kiểu danh sách trong Python tương tự như kiểu mảng trong các ngôn ngữ như C nhưng không giới hạn kiểu
dữ liệu của phần tử cũng như không cố định số phần tử. Cách viết giá trị kiểu danh sách như sau:
companies = ['Apple', 'Google', 'Microsoft', 'IBM', 1945, 1975]
42. Rosette.py
import turtle
t = turtle.Pen()
t.circle(100) # This makes our first circle (pointing north)
t.left(90) # Then the turtle turns left 90 degrees
t.circle(100) # This makes our second circle (pointing west)
t.left(90) # Then the turtle turns left 90 degrees
t.circle(100) # This makes our third circle (pointing south)
t.left(90) # Then the turtle turns left 90 degrees
t.circle(100) # This makes our fourth circle (pointing east)
Rosette4.py
import turtle
t = turtle.Pen()
for x in range(4):
t.circle(100)
t.left(90)
44. RosetteGoneWild.py
import turtle
t = turtle.Pen()
# Ask the user for the number of circles in their rosette, default to 6
number_of_circles = int(turtle.numinput("Number of circles",
"How many circles in your rosette?", 6))
for x in range(number_of_circles):
t.circle(100)
t.left(360/number_of_circles)
45. SayOurNames.py
# Ask the user for their name
name = input("What is your name? ")
# Keep printing names until we want to quit
while name != "":
# Print their name 100 times
for x in range(100):
# Print their name followed by a space, not a new line
print(name, end = " ")
print() # After the for loop, skip down to the next line
# Ask for another name, or quit
name = input("Type another name, or just hit [ENTER] to quit: ")
print("Thanks for playing!")
46.
47. SpiralFamily.py
import turtle # Set up turtle graphics
t = turtle.Pen()
turtle.bgcolor("black")
colors = ["red", "yellow", "blue", "green", "orange",
"purple", "white", "brown", "gray", "pink" ]
family = [] # Set up an empty list for family names
# Ask for the first name
name = turtle.textinput("My family",
"Enter a name, or just hit [ENTER] to end:")
# Keep asking for names
while name != "":
# Add their name to the family list
family.append(name)
# Ask for another name, or end
name = turtle.textinput("My family", "Enter a name, or just hit [ENTER] to end:")
# Draw a spiral of the names on the screen
for x in range(100):
t.pencolor(colors[x%len(family)]) # Rotate through the colors
t.penup() # Don't draw the regular spiral lines
t.forward(x*4) # Just move the turtle on the screen
t.pendown() # Draw the next family member's name
t.write(family[x%len(family)], font = ("Arial", int((x+4)/4), "bold") )
t.left(360/len(family) + 2) # Turn left for our spiral
48.
49. ViralSpiral.py
import turtle
t = turtle.Pen()
t.penup()
turtle.bgcolor("black")
# Ask the user for the number of sides, default to 4, min 2, max 6
sides = int(turtle.numinput("Number of sides", "How many sides in your spiral of spirals? (2-6)", 4,2,6))
colors = ["red", "yellow", "blue", "green", "purple", "orange"]
# Our outer spiral loop
for m in range(100):
t.forward(m*4)
position = t.position() # Remember this corner of the spiral
heading = t.heading() # Remember the direction we were heading
print(position, heading)
# Our "inner" spiral loop
# Draws a little spiral at each corner of the big spiral
for n in range(int(m/2)):
t.pendown()
t.pencolor(colors[n%sides])
t.forward(2*n)
t.right(360/sides - 2)
t.penup()
t.setx(position[0]) # Go back to the big spiral's x location
t.sety(position[1]) # Go back to the big spiral's y location
t.setheading(heading) # Point in the big spiral's heading
t.left(360/sides + 2) # Aim at the next point on the big spiral
50.
51.
52.
53. if statements if condition:
indented statement(s)
IfSpiral.py
answer = input("Do you want to see a spiral? y/n:")
if answer == 'y':
print("Working...")
import turtle
t = turtle.Pen()
t.width(2)
for x in range(100):
t.forward(x*2)
t.left(89)
{ print("Okay, we're done!")
54. OldEnough.py
driving_age = eval(input("What is the legal driving age where you live? "))
your_age = eval(input("How old are you? "))
if your_age >= driving_age:
print("You're old enough to drive!")
if your_age < driving_age:
print("Sorry, you can drive in", driving_age - your_age, "years.")
55. OldEnoughOrElse.py
driving_age = eval(input("What is the legal driving age where you live? "))
your_age = eval(input("How old are you? "))
if your_age >= driving_age:
print("You're old enough to drive!")
else:
print("Sorry, you can drive in", driving_age - your_age, "years.")
56. PolygonOrRosette.py
import turtle
t = turtle.Pen()
# Ask the user for the number of sides or circles, default to 6
number = int(turtle.numinput("Number of sides or circles",
"How many sides or circles in your shape?", 6))
# Ask the user whether they want a polygon or rosette
shape = turtle.textinput("Which shape do you want?",
"Enter 'p' for polygon or 'r' for rosette:")w for x in range(number):
if shape == 'r': # User selected rosette
t.circle(100)
else: # Default to polygon
t.forward (150)
t.left(360/number)
57. RosettesAndPolygons.py
# RosettesAndPolygons.py - a spiral of polygons AND rosettes!
import turtle
t = turtle.Pen()# Ask the user for the number of sides, default to 4
sides = int(turtle.numinput("Number of sides",
"How many sides in your spiral?", 4))
# Our outer spiral loop for polygons and rosettes, from size 5 to 75
for m in range(5,75):
t.left(360/sides + 5)
t.width(m//25+1)
t.penup() # Don't draw lines on spiral
t.forward(m*4) # Move to next corner
t.pendown() # Get ready to draw
# Draw a little rosette at each EVEN corner of the spiral
if (m % 2 == 0):
for n in range(sides):
t.circle(m/3)
t.right(360/sides)
# OR, draw a little polygon at each ODD corner of the spiral
else:
for n in range(sides):
t.forward(m)
t.right(360/sides)
58. WhatsMyGrade.py
grade = eval(input("Enter your number grade (0-100): "))
if grade >= 90:
print("You got an A! :) ")
elif grade >= 80:
print("You got a B!")
elif grade >= 70:
print("You got a C.")
elif grade >= 60:
print("You got a D...")
else:
print("You got an F. :( ")
59.
60. WhatToWear.py
rainy = input("How's the weather? Is it raining? (y/n)").lower()
cold = input("Is it cold outside? (y/n)").lower()
w if (rainy == 'y' and cold == 'y'): # Rainy and cold, yuck!
print("You'd better wear a raincoat.")
elif (rainy == 'y' and cold != 'y'): # Rainy, but warm
print("Carry an umbrella with you.")
elif (rainy != 'y' and cold == 'y'): # Dry, but cold
print("Put on a jacket, it's cold out!")
elif (rainy != 'y' and cold != 'y'): # Warm and sunny, yay!
print("Wear whatever you want, it's beautiful outside!")
61.
62. RandomSpiralsFunction.py
import random
import turtle
t = turtle.Pen()
t.speed(0)
turtle.bgcolor("black")
colors = ["red", "yellow", "blue", "green", "orange", "purple",
"white", "gray"]
def random_spiral():
t.pencolor(random.choice(colors))
size = random.randint(10,40)
x = random.randrange(-turtle.window_width()//2,
turtle.window_width()//2)
y = random.randrange(-turtle.window_height()//2,
turtle.window_height()//2)
t.penup()
t.setpos(x,y)
t.pendown()
for m in range(size):
t.forward(m*2)
t.left(91)
for n in range(50):
random_spiral()
63. RandomSmileys.py
import random
import turtle
t = turtle.Pen()
t.speed(0)
t.hideturtle()
turtle.bgcolor("black")
def draw_smiley(x,y):
t.penup()
t.setpos(x,y)
t.pendown()
# Head
t.pencolor("yellow")
t.fillcolor("yellow")
t.begin_fill()
t.circle(50)
t.end_fill()
# Left eye
t.setpos(x-15, y+60)
t.fillcolor("blue")
t.begin_fill()
t.circle(10)
t.end_fill()
# Right eye
t.setpos(x+15, y+60)
t.begin_fill()
t.circle(10)
t.end_fill()
# Mouth
t.setpos(x-25, y+40)
t.pencolor("black")
t.width(10)
t.goto(x-10, y+20)
t.goto(x+10, y+20)
t.goto(x+25, y+40)
t.width(1)
v for n in range(50):
x = random.randrange(-turtle.window_width()//2,turtle.window_width()//2)
y = random.randrange(-turtle.window_height()//2,turtle.window_height()//2)
draw_smiley(x,y)