歡迎光臨
每天分享高質量文章

Python有趣的小案例

美國隊長的鍋


emmmmmmmm…….沒錯就是他的鍋

程式碼

  1. # 所需依賴:python3 pycharm

  2. # print 列印

  3. print('hello world!')

  4. # 註釋符號

  5. # 井號後麵灰色的內容是註釋,相當於筆記,會被機器忽略

  6. # 變數和值

  7. # n 是變數, 100 是值,等號的作用是賦值

  8. # n 相當於高中數學的 xyz ,只不過 xyz 的值只能是數字,變數的功能要更強大

  9. n = 100

  10. m = 'hello'

  11. print(n)

  12. print(m)

  13. # 資料型別,這裡只講兩個,剩下的需要同學自己去系統地學習了

  14. # 字串 和 整數

  15. # 100 是整數型別

  16. # 'hello' 是字串型別

  17. # 匯入 turtle 模組

  18. # 模組是 python 自帶的工具箱,這裡將工具箱匯入就能使用了

  19. # turtle 模組是 python 用來畫圖的工具箱

  20. import turtle

  21. # 將 turtle 裡的工具拿出來,賦給 t 變數

  22. # 照貓畫虎用就是了,這些東西要到很後面才能理解

  23. t = turtle.Turtle()

  24. # 這一行用來加快畫筆速度,從 1~9 依次變快,但 0 是最快

  25. t.speed(0)

  26. # 這是向前走,單位是畫素

  27. t.forward(100)

  28. # 這是轉彎,單位是角度

  29. t.right(120)

  30. t.forward(100)

  31. t.right(120)

  32. t.forward(100)

  33. t.right(120)

  34. # 複製三次,就畫了一個三角形

  35. # 正方形

  36. # 長方形

  37. # 如果我們需要改變三角形的邊長怎麼辦?

  38. # 這就要用到變數了,到時候只需改變變數就能改變長度

  39. # 如果有相同的變數,後面定義的會改寫前面的

  40. l = 200

  41. t.forward(l)

  42. t.right(120)

  43. t.forward(l)

  44. t.right(120)

  45. t.forward(l)

  46. t.right(120)

  47. # for 迴圈

  48. # 迴圈還有 while 迴圈,考慮到用不著就不講了

  49. # 迴圈用來處理重覆的事情

  50. # range() 是一個區間

  51. # range(3) 相當於 0 1 2

  52. # range(5) 相當於 0 1 2 3 4

  53. # i 取的是 range() 裡的值,一次取一個,取一次就迴圈一次

  54. # 冒號後面必有縮排,縮排的代表是同一個程式碼塊

  55. # 照著用就行了,註意一個字元都不能敲錯,不能用中文符號

  56. for i in range(3):

  57.    t.forward(l)

  58.    t.right(120)

  59. # 如果想畫兩個三角形怎麼辦,再複製一個 for 迴圈?

  60. # 我們用函式將程式碼封裝起來,到時候直接呼叫就好了

  61. # def 關鍵字用來定義函式, triangle 是函式名

  62. # 必須要有冒號接縮排,函式裡面也是一個程式碼塊

  63. def triangle():

  64.    for i in range(3):

  65.        t.forward(l)

  66.        t.right(120)

  67. # 函式的呼叫

  68. # triangle()

  69. # 函式可以傳遞引數進去

  70. def triangle2(l):

  71.    for i in range(3):

  72.        t.forward(l)

  73.        t.right(120)

  74. # 需要傳遞個引數進去才能呼叫這個函式

  75. # triangle2(250)

  76. # 定一個函式畫長方形

  77. # 四則運算

  78. #   +   加

  79. #   -   減

  80. #   *   乘

  81. #   /   除

  82. #   //  整除

  83. #   %   取餘

  84. # 寫一個畫 n 邊形的通用函式

  85. def polygon(l, n):

  86.    angle = 360 / n

  87.    for i in range(n):

  88.        t.forward(l)

  89.        t.right(angle)

  90. # polygon(100, 6)

  91. # 畫一個五角星

  92. def five_star(l):

  93.    for i in range(5):

  94.        t.forward(l)

  95.        t.right(144)

  96. # five_star(100)

  97. # 畫一個圓

  98. # 邊長在 36 以上就是個圓

  99. def circle():

  100.    for i in range(36):

  101.        t.forward(10)

  102.        t.right(15)

  103. # circle()

  104. # 在指定的坐標畫圖

  105. # 比如要在坐標為 (100, 150) 的位置畫個正方形

  106. def square(x, y, l):

  107.    t.penup()

  108.    t.goto(x, y)

  109.    t.pendown()

  110.    for i in range(4):

  111.        t.forward(l)

  112.        t.right(90)

  113. # square(100, 150, 100)

  114. # 將畫筆定位封裝成函式使用,就能有效去除重覆程式碼

  115. def setpen(x, y):

  116.    t.penup()

  117.    t.goto(x, y)

  118.    t.pendown()

  119.    t.setheading(0)

  120. def square(x, y, l):

  121.    setpen(x, y)

  122.    for i in range(4):

  123.        t.forward(l)

  124.        t.right(90)

  125. # square(100, 150, 100)

  126. # 畫一排正方形,共五個,間隔 10

  127. # 蠢方法

  128. # square(100, 150, 30)

  129. # square(140, 150, 30)

  130. # square(180, 150, 30)

  131. # square(220, 150, 30)

  132. # square(260, 150, 30)

  133. # 使用 for 迴圈、函式

  134. def square_line(x, y, l, n, dis):

  135.    for i in range(n):

  136.        inner_x = x + (l + dis) * i

  137.        square(inner_x, y, l)

  138. # square_line(100, 150, 30, 6, 10)

  139. # 畫一個正方形方陣

  140. def square_matrix(x, y, l, n, dis, m):

  141.    for i in range(m):

  142.        inner_y = y - (l + dis) * i

  143.        square_line(x, inner_y, l, n, dis)

  144. # square_matrix(100, 150, 30, 5, 10, 6)

  145. # 填充顏色,給圖形上色

  146. def five_star(l):

  147.    t.fillcolor('yello')

  148.    t.begin_fill()

  149.    for i in range(5):

  150.        t.forward(l)

  151.        t.right(144)

  152.    t.end_fill()

  153. # five_star(100)

  154. # 字典的簡單用法

  155. # 抽象畫

  156. # for i in range(500):

  157. #     t.forward(i)

  158. #     t.left(90)

  159. # for i in range(500):

  160. #     t.forward(i)

  161. #     t.left(91)

  162. colors = ['red', 'yellow', 'blue', 'green']

  163. # for i in range(500):

  164. #     t.pencolor(colors[i % 4])

  165. #     t.circle(i)

  166. #     t.left(91)

  167. # sides = 5

  168. # colors = ['red', 'yellow', 'blue', 'orange', 'green', 'purple']

  169. # for i in range(360):

  170. #     t.pencolor(colors[i % sides])

  171. #     t.forward(i * 3 / sides + i)

  172. #     t.left(360 / sides + 1)

  173. #     t.width(i * sides / 200)

  174. # 美隊盾牌

  175. def circle(x, y, r, color):

  176.    n = 36

  177.    angle = 360 / n

  178.    pi = 3.1415926

  179.    c = 2 * pi * r

  180.    l = c / n

  181.    start_x = x - l / 2

  182.    start_y = y + r

  183.    setpen(start_x, start_y)

  184.    t.pencolor(color)

  185.    t.fillcolor(color)

  186.    t.begin_fill()

  187.    for i in range(n):

  188.        t.forward(l)

  189.        t.right(angle)

  190.    t.end_fill()

  191. def five_star(l):

  192.    setpen(0, 0)

  193.    t.setheading(162)

  194.    t.forward(150)

  195.    t.setheading(0)

  196.    t.fillcolor('WhiteSmoke')

  197.    t.begin_fill()

  198.    t.hideturtle()

  199.    t.penup()

  200.    for i in range(5):

  201.        t.forward(l)

  202.        t.right(144)

  203.    t.end_fill()

  204. def sheild():

  205.    circle(0, 0, 300, 'red')

  206.    circle(0, 0, 250, 'white')

  207.    circle(0, 0, 200, 'red')

  208.    circle(0, 0, 150, 'blue')

  209.    five_star(284)

  210. sheild()

  211. # 結尾這一行必須有,照著用就行了

  212. turtle.done()

效果圖


小豬佩奇

程式碼

  1. # coding:utf-8

  2. import turtle as t

  3. t.pensize(4)

  4. t.hideturtle()

  5. t.colormode(255)

  6. t.color((255,155,192),"pink")

  7. t.setup(840,500)

  8. t.speed(10)

  9. #鼻子

  10. t.pu()

  11. t.goto(-100,100)

  12. t.pd()

  13. t.seth(-30)

  14. t.begin_fill()

  15. a=0.4

  16. for i in range(120):

  17.    if 0<=i<30 or 60<=i<90:

  18.        a=a+0.08

  19.        t.lt(3) #向左轉3度

  20.        t.fd(a) #向前走a的步長

  21.    else:

  22.        a=a-0.08

  23.        t.lt(3)

  24.        t.fd(a)

  25. t.end_fill()

  26. t.pu()

  27. t.seth(90)

  28. t.fd(25)

  29. t.seth(0)

  30. t.fd(10)

  31. t.pd()

  32. t.pencolor(255,155,192)

  33. t.seth(10)

  34. t.begin_fill()

  35. t.circle(5)

  36. t.color(160,82,45)

  37. t.end_fill()

  38. t.pu()

  39. t.seth(0)

  40. t.fd(20)

  41. t.pd()

  42. t.pencolor(255,155,192)

  43. t.seth(10)

  44. t.begin_fill()

  45. t.circle(5)

  46. t.color(160,82,45)

  47. t.end_fill()

  48. #頭

  49. t.color((255,155,192),"pink")

  50. t.pu()

  51. t.seth(90)

  52. t.fd(41)

  53. t.seth(0)

  54. t.fd(0)

  55. t.pd()

  56. t.begin_fill()

  57. t.seth(180)

  58. t.circle(300,-30)

  59. t.circle(100,-60)

  60. t.circle(80,-100)

  61. t.circle(150,-20)

  62. t.circle(60,-95)

  63. t.seth(161)

  64. t.circle(-300,15)

  65. t.pu()

  66. t.goto(-100,100)

  67. t.pd()

  68. t.seth(-30)

  69. a=0.4

  70. for i in range(60):

  71.    if 0<=i<30 or 60<=i<90:

  72.        a=a+0.08

  73.        t.lt(3) #向左轉3度

  74.        t.fd(a) #向前走a的步長

  75.    else:

  76.        a=a-0.08

  77.        t.lt(3)

  78.        t.fd(a)

  79. t.end_fill()

  80. #耳朵

  81. t.color((255,155,192),"pink")

  82. t.pu()

  83. t.seth(90)

  84. t.fd(-7)

  85. t.seth(0)

  86. t.fd(70)

  87. t.pd()

  88. t.begin_fill()

  89. t.seth(100)

  90. t.circle(-50,50)

  91. t.circle(-10,120)

  92. t.circle(-50,54)

  93. t.end_fill()

  94. t.pu()

  95. t.seth(90)

  96. t.fd(-12)

  97. t.seth(0)

  98. t.fd(30)

  99. t.pd()

  100. t.begin_fill()

  101. t.seth(100)

  102. t.circle(-50,50)

  103. t.circle(-10,120)

  104. t.circle(-50,56)

  105. t.end_fill()

  106. #眼睛

  107. t.color((255,155,192),"white")

  108. t.pu()

  109. t.seth(90)

  110. t.fd(-20)

  111. t.seth(0)

  112. t.fd(-95)

  113. t.pd()

  114. t.begin_fill()

  115. t.circle(15)

  116. t.end_fill()

  117. t.color("black")

  118. t.pu()

  119. t.seth(90)

  120. t.fd(12)

  121. t.seth(0)

  122. t.fd(-3)

  123. t.pd()

  124. t.begin_fill()

  125. t.circle(3)

  126. t.end_fill()

  127. t.color((255,155,192),"white")

  128. t.pu()

  129. t.seth(90)

  130. t.fd(-25)

  131. t.seth(0)

  132. t.fd(40)

  133. t.pd()

  134. t.begin_fill()

  135. t.circle(15)

  136. t.end_fill()

  137. t.color("black")

  138. t.pu()

  139. t.seth(90)

  140. t.fd(12)

  141. t.seth(0)

  142. t.fd(-3)

  143. t.pd()

  144. t.begin_fill()

  145. t.circle(3)

  146. t.end_fill()

  147. #腮

  148. t.color((255,155,192))

  149. t.pu()

  150. t.seth(90)

  151. t.fd(-95)

  152. t.seth(0)

  153. t.fd(65)

  154. t.pd()

  155. t.begin_fill()

  156. t.circle(30)

  157. t.end_fill()

  158. #嘴

  159. t.color(239,69,19)

  160. t.pu()

  161. t.seth(90)

  162. t.fd(15)

  163. t.seth(0)

  164. t.fd(-100)

  165. t.pd()

  166. t.seth(-80)

  167. t.circle(30,40)

  168. t.circle(40,80)

  169. #身體

  170. t.color("red",(255,99,71))

  171. t.pu()

  172. t.seth(90)

  173. t.fd(-20)

  174. t.seth(0)

  175. t.fd(-78)

  176. t.pd()

  177. t.begin_fill()

  178. t.seth(-130)

  179. t.circle(100,10)

  180. t.circle(300,30)

  181. t.seth(0)

  182. t.fd(230)

  183. t.seth(90)

  184. t.circle(300,30)

  185. t.circle(100,3)

  186. t.color((255,155,192),(255,100,100))

  187. t.seth(-135)

  188. t.circle(-80,63)

  189. t.circle(-150,24)

  190. t.end_fill()

  191. #手

  192. t.color((255,155,192))

  193. t.pu()

  194. t.seth(90)

  195. t.fd(-40)

  196. t.seth(0)

  197. t.fd(-27)

  198. t.pd()

  199. t.seth(-160)

  200. t.circle(300,15)

  201. t.pu()

  202. t.seth(90)

  203. t.fd(15)

  204. t.seth(0)

  205. t.fd(0)

  206. t.pd()

  207. t.seth(-10)

  208. t.circle(-20,90)

  209. t.pu()

  210. t.seth(90)

  211. t.fd(30)

  212. t.seth(0)

  213. t.fd(237)

  214. t.pd()

  215. t.seth(-20)

  216. t.circle(-300,15)

  217. t.pu()

  218. t.seth(90)

  219. t.fd(20)

  220. t.seth(0)

  221. t.fd(0)

  222. t.pd()

  223. t.seth(-170)

  224. t.circle(20,90)

  225. #腳

  226. t.pensize(10)

  227. t.color((240,128,128))

  228. t.pu()

  229. t.seth(90)

  230. t.fd(-75)

  231. t.seth(0)

  232. t.fd(-180)

  233. t.pd()

  234. t.seth(-90)

  235. t.fd(40)

  236. t.seth(-180)

  237. t.color("black")

  238. t.pensize(15)

  239. t.fd(20)

  240. t.pensize(10)

  241. t.color((240,128,128))

  242. t.pu()

  243. t.seth(90)

  244. t.fd(40)

  245. t.seth(0)

  246. t.fd(90)

  247. t.pd()

  248. t.seth(-90)

  249. t.fd(40)

  250. t.seth(-180)

  251. t.color("black")

  252. t.pensize(15)

  253. t.fd(20)

  254. #尾巴

  255. t.pensize(4)

  256. t.color((255,155,192))

  257. t.pu()

  258. t.seth(90)

  259. t.fd(70)

  260. t.seth(0)

  261. t.fd(95)

  262. t.pd()

  263. t.seth(0)

  264. t.circle(70,20)

  265. t.circle(10,330)

  266. t.circle(70,30)

  267. t.done()

效果圖

藍胖子

程式碼

  1. # !/usr/bin/env python3

  2. # -*- coding: utf-8 -*-

  3. # @Author: dong dong

  4. # @Env: python 3.6


  5. from turtle import *

  6. # 無軌跡跳躍

  7. def my_goto(x, y):

  8.    penup()

  9.    goto(x, y)

  10.    pendown()

  11. # 眼睛

  12. def eyes():

  13.    tracer(False)

  14.    a = 2.5

  15.    for i in range(120):

  16.        if 0 <= i < 30 or 60 <= i < 90:

  17.            a -= 0.05

  18.            lt(3)

  19.            fd(a)

  20.        else:

  21.            a += 0.05

  22.            lt(3)

  23.            fd(a)

  24.    tracer(True)

  25. # 鬍鬚

  26. def beard():

  27.    my_goto(-37, 135)

  28.    seth(165)

  29.    fd(60)

  30.    my_goto(-37, 125)

  31.    seth(180)

  32.    fd(60)

  33.    my_goto(-37, 115)

  34.    seth(193)

  35.    fd(60)

  36.    my_goto(37, 135)

  37.    seth(15)

  38.    fd(60)

  39.    my_goto(37, 125)

  40.    seth(0)

  41.    fd(60)

  42.    my_goto(37, 115)

  43.    seth(-13)

  44.    fd(60)

  45. # 嘴巴

  46. def mouth():

  47.    my_goto(5, 148)

  48.    seth(270)

  49.    fd(100)

  50.    seth(0)

  51.    circle(120, 50)

  52.    seth(230)

  53.    circle(-120, 100)

  54. # 圍巾

  55. def scarf():

  56.    fillcolor('#e70010')

  57.    begin_fill()

  58.    seth(0)

  59.    fd(200)

  60.    circle(-5, 90)

  61.    fd(10)

  62.    circle(-5, 90)

  63.    fd(207)

  64.    circle(-5, 90)

  65.    fd(10)

  66.    circle(-5, 90)

  67.    end_fill()

  68. # 鼻子

  69. def nose():

  70.    my_goto(-10, 158)

  71.    fillcolor('#e70010')

  72.    begin_fill()

  73.    circle(20)

  74.    end_fill()

  75. # 黑眼睛

  76. def black_eyes():

  77.    seth(0)

  78.    my_goto(-20, 195)

  79.    fillcolor('#000000')

  80.    begin_fill()

  81.    circle(13)

  82.    end_fill()

  83.    pensize(6)

  84.    my_goto(20, 205)

  85.    seth(75)

  86.    circle(-10, 150)

  87.    pensize(3)

  88.    my_goto(-17, 200)

  89.    seth(0)

  90.    fillcolor('#ffffff')

  91.    begin_fill()

  92.    circle(5)

  93.    end_fill()

  94.    my_goto(0, 0)

  95. # 臉

  96. def face():

  97.    fd(183)

  98.    fillcolor('#ffffff')

  99.    begin_fill()

  100.    lt(45)

  101.    circle(120, 100)

  102.    seth(90)

  103.    eyes()

  104.    seth(180)

  105.    penup()

  106.    fd(60)

  107.    pendown()

  108.    seth(90)

  109.    eyes()

  110.    penup()

  111.    seth(180)

  112.    fd(64)

  113.    pendown()

  114.    seth(215)

  115.    circle(120, 100)

  116.    end_fill()

  117. # 頭型

  118. def head():

  119.    penup()

  120.    circle(150, 40)

  121.    pendown()

  122.    fillcolor('#00a0de')

  123.    begin_fill()

  124.    circle(150, 280)

  125.    end_fill()

  126. # 畫哆啦A夢

  127. def Doraemon():

  128.    # 頭部

  129.    head()

  130.    # 圍脖

  131.    scarf()

  132.    # 臉

  133.    face()

  134.    # 紅鼻子

  135.    nose()

  136.    # 嘴巴

  137.    mouth()

  138.    # 鬍鬚

  139.    beard()

  140.    # 身體

  141.    my_goto(0, 0)

  142.    seth(0)

  143.    penup()

  144.    circle(150, 50)

  145.    pendown()

  146.    seth(30)

  147.    fd(40)

  148.    seth(70)

  149.    circle(-30, 270)

  150.    fillcolor('#00a0de')

  151.    begin_fill()

  152.    seth(230)

  153.    fd(80)

  154.    seth(90)

  155.    circle(1000, 1)

  156.    seth(-89)

  157.    circle(-1000, 10)

  158.    # print(pos())

  159.    seth(180)

  160.    fd(70)

  161.    seth(90)

  162.    circle(30, 180)

  163.    seth(180)

  164.    fd(70)

  165.    # print(pos())

  166.    seth(100)

  167.    circle(-1000, 9)

  168.    seth(-86)

  169.    circle(1000, 2)

  170.    seth(230)

  171.    fd(40)

  172.    # print(pos())

  173.    circle(-30, 230)

  174.    seth(45)

  175.    fd(81)

  176.    seth(0)

  177.    fd(203)

  178.    circle(5, 90)

  179.    fd(10)

  180.    circle(5, 90)

  181.    fd(7)

  182.    seth(40)

  183.    circle(150, 10)

  184.    seth(30)

  185.    fd(40)

  186.    end_fill()

  187.    # 左手

  188.    seth(70)

  189.    fillcolor('#ffffff')

  190.    begin_fill()

  191.    circle(-30)

  192.    end_fill()

  193.    # 腳

  194.    my_goto(103.74, -182.59)

  195.    seth(0)

  196.    fillcolor('#ffffff')

  197.    begin_fill()

  198.    fd(15)

  199.    circle(-15, 180)

  200.    fd(90)

  201.    circle(-15, 180)

  202.    fd(10)

  203.    end_fill()

  204.    my_goto(-96.26, -182.59)

  205.    seth(180)

  206.    fillcolor('#ffffff')

  207.    begin_fill()

  208.    fd(15)

  209.    circle(15, 180)

  210.    fd(90)

  211.    circle(15, 180)

  212.    fd(10)

  213.    end_fill()

  214.    # 右手

  215.    my_goto(-133.97, -91.81)

  216.    seth(50)

  217.    fillcolor('#ffffff')

  218.    begin_fill()

  219.    circle(30)

  220.    end_fill()

  221.    # 口袋

  222.    my_goto(-103.42, 15.09)

  223.    seth(0)

  224.    fd(38)

  225.    seth(230)

  226.    begin_fill()

  227.    circle(90, 260)

  228.    end_fill()

  229.    my_goto(5, -40)

  230.    seth(0)

  231.    fd(70)

  232.    seth(-90)

  233.    circle(-70, 180)

  234.    seth(0)

  235.    fd(70)

  236.    #鈴鐺

  237.    my_goto(-103.42, 15.09)

  238.    fd(90)

  239.    seth(70)

  240.    fillcolor('#ffd200')

  241.    # print(pos())

  242.    begin_fill()

  243.    circle(-