python 之路,200行Python程式碼寫了個打飛機遊戲!
早就知道pygame模組,就是沒怎麼深入研究過,恰逢這周未沒約到妹子,只能自己在家玩自己啦,一時興起,花了幾個小時寫了個打飛機程式。
很有意思,跟大家分享下。
先看一下專案結構
""" PlayPlane/ |-- bin/ | |-- main.py 程式執行主體程式 |-- config/ | |-- settings.py 程式配置(例如: 遊戲背景音樂的載入等) |-- material 程式素材放置(打飛機遊戲素材放置) |-- ... |-- src/ 程式主體模組存放 | |-- __init__.py | |-- bullet.py 我方飛機發射子彈實現程式碼存放 | |-- enemy.py 敵方飛機實現程式碼存放 | |-- plane.py 我方飛機實現程式碼存放 |-- manage.py 程式啟動檔案 |-- README.md """
再晒下專案成果圖
實現步驟
一、首先在 config/settings.py 中進行以下功能的實現
- 遊戲初始化
- 遊戲混音器初始化
- 背景音樂初始化
- 我方飛機掛了音樂
- 敵方飛機掛了音樂
- 子彈發射音樂
#! /usr/bin/env python # -*- coding: utf-8 -*- import pygame pygame.init() # 遊戲初始化 pygame.mixer.init() # 混音器初始化 # 遊戲背景音樂 pygame.mixer.music.load("material/sound/game_music.wav") pygame.mixer.music.set_volume(0.2) # 子彈發射音樂 bullet_sound = pygame.mixer.Sound("material/sound/bullet.wav") bullet_sound.set_volume(0.2) # 我方飛機掛了的音樂 me_down_sound = pygame.mixer.Sound("material/sound/game_over.wav") me_down_sound.set_volume(0.2) # 敵方飛機掛了的音樂 enemy1_down_sound = pygame.mixer.Sound("material/sound/enemy1_down.wav") enemy1_down_sound.set_volume(0.2) config/settings.py
注:遊戲素材滑動到文章底部點選連結即可下載
二、小試牛刀
飛機和子彈都是可移動的,那麼怎麼實現讓它們動起來呢(我方飛機可以玩家進行操控,敵機就是隨機性的出現,子彈暫由我方飛機發射)。
在Pygame中,所有移動物件都可看做是一個精靈(sprite),精靈之間能夠進行相互的互動通訊,例如如何讓碰撞檢測更加精準等等。
那麼先讓我們先在螢幕上製作一個遊戲板,根據 settings.py 配置,並讓它有聲音播放,首先我們在 bin/main.py 中這麼寫:
我們可以直接執行它,那麼我們會看到以下畫面,並且還會有激情的聲音吆!!!但是我們要將檔案配置為絕對路徑才可以執行,因為剛剛在settings中的載入的音樂檔案為相對路徑。
#! /usr/bin/env python # -*- coding: utf-8 -*- import sys from config.settings import * bg_size = 480, 852 # 初始化遊戲背景大小(寬, 高) screen = pygame.display.set_mode(bg_size) # 設定背景對話方塊 pygame.display.set_caption("飛機大戰") # 設定標題 background = pygame.image.load(os.path.join(BASE_DIR, "material/image/background.png")) # 載入背景圖片,並設定為不透明 def main(): pygame.mixer.music.play(loops=-1) # loops 對應的值為 -1 則音樂會無限迴圈播放 while True: # 繪製背景圖 screen.blit(background, (0, 0)) # 響應使用者的操作(一定要有響應的使用者操作) for event in pygame.event.get(): if event.type == 12: # 如果使用者按下螢幕上的關閉按鈕,觸發QUIT事件,程式退出 pygame.quit() sys.exit() # 再而我們將背景影象並輸出到螢幕上面 pygame.display.flip() if __name__ == '__main__': main()
接下來呢,我們將要製作我方飛機,敵方飛機和子彈如何讓它們展示在遊戲畫板上,繼而讓它們變得可移動起來,請看程式碼實現方案...
從遊戲畫板上新增飛機,首先我們應怎樣在螢幕上輸出飛機???
上述講過,pygame中的 sprite(精靈)可使一張圖片或者一個靜態物體動起來,那麼製作飛機需要考慮並做些什麼呢?
- 飛機的初始位置
- 通過按鍵 上下左右 來調控飛機的位置移動
- 飛機只能呆在製作的遊戲畫板中
- 飛機的速度
- 飛機死亡的載入
- 設定一個狀態標識飛機的存活
- 讓飛機具有動態的噴氣式效果
那麼如何實現以上的功能呢?接下來結合上述的示例程式碼我們先將我方飛機繪製到畫板上方,並且我們通過按鍵 J 判定我方飛機的存活狀態為死亡,繪製飛機的死亡畫面並重置飛機
""" 建立飛機 在pygame中, 所有可移動的物件均叫可看作一個精靈(sprite) 該類並實現了碰撞方法 spritecollide 我方飛機和敵方飛機指定掩膜屬性以及生存狀態標誌位 新增 self.mask 屬性(可以實現更精準的碰撞效果) """ # 倒入精靈模組, 使飛機可以動起來 import pygame class OurPlane(pygame.sprite.Sprite): def __init__(self, bg_size): super(OurPlane, self).__init__() # 確定我方飛機背景圖(有倆張,可以讓它們不停的切換,形成動態效果) self.image_one = pygame.image.load("material/image/hero1.png") self.image_two = pygame.image.load("material/image/hero2.png") # 獲取我方飛機的位置 self.rect = self.image_one.get_rect() # 本地化背景圖片的尺寸 self.width, self.height = bg_size[0], bg_size[1] # 獲取飛機影象的掩膜用以更加精確的碰撞檢測 self.mask = pygame.mask.from_surface(self.image_one) # 定義飛機初始化位置,底部預留60畫素 self.rect.left, self.rect.top = (self.width - self.rect.width) // 2, (self.height - self.rect.height - 60) # 設定飛機移動速度 self.speed = 10 # 設定飛機存活狀態(True為存活, False為死亡) self.active = True # 載入飛機損毀圖片 self.destroy_images = [] self.destroy_images.extend( [ pygame.image.load("material/image/hero_blowup_n1.png"), pygame.image.load("material/image/hero_blowup_n2.png"), pygame.image.load("material/image/hero_blowup_n3.png"), pygame.image.load("material/image/hero_blowup_n4.png") ] ) def move_up(self): """ 飛機向上移動的操作函式,其餘移動函式方法類似 """ if self.rect.top > 0: # 如果飛機尚未移動出背景區域 self.rect.top -= self.speed else: # 若即將移動出背景區域,則及時糾正為背景邊緣位置 self.rect.top = 0 def move_down(self): """ 飛機向下移動 """ if self.rect.bottom < self.height - 60: self.rect.top += self.speed else: self.rect.bottom = self.height - 60 def move_left(self): """ 飛機向左移動 """ if self.rect.left > 0: self.rect.left -= self.speed else: self.rect.left = 0 def move_right(self): """ 飛機向右移動 """ if self.rect.right < self.width: self.rect.right += self.speed else: self.rect.right = self.width def reset(self): # 初始化飛機(飛機掛了, 初始化到初始位置) self.rect.left, self.rect.top = (self.width - self.rect.width) // 2, (self.height - self.rect.height - 60) # 重置飛機的存活狀態 self.active = True
上面的程式碼寫了一個 我們的飛機 (OurPlane) 類,它初始化了一些屬性以及 上下左右 移動的方法和重置方法,接下來將要運用它展示到遊戲畫板上面
由於飛機是一直存在的,接下我們主程式 main 下面的死迴圈中這樣寫
def main(): pygame.mixer.music.play(loops=-1) # loops 對應的值為 -1 則音樂會無限迴圈播放 our_plane = OurPlane(bg_size) # 初始化 switch_image = False # 定義飛機的切圖效果標識 while True: # 繪製背景圖 screen.blit(background, (0, 0)) # 飛機狀態是存活 if our_plane.active: if switch_image: screen.blit(our_plane.image_one, our_plane.rect) else: screen.blit(our_plane.image_two, our_plane.rect) switch_image = not switch_image # 讓切圖狀態不停的變換 else: pass # 響應使用者的操作(一定要有響應的使用者操作) for event in pygame.event.get(): if event.type == 12: # 如果使用者按下螢幕上的關閉按鈕,觸發QUIT事件,程式退出 pygame.quit() sys.exit() # 再而我們將背景影象並輸出到螢幕上面 pygame.display.flip() if __name__ == '__main__': main()1.在螢幕上繪製飛機
def main(): pygame.mixer.music.play(loops=-1) # loops 對應的值為 -1 則音樂會無限迴圈播放 our_plane = OurPlane(bg_size) # 初始化 switch_image = False # 定義飛機的切圖效果標識 while True: # 繪製背景圖 screen.blit(background, (0, 0)) # 飛機狀態是存活 if our_plane.active: if switch_image: screen.blit(our_plane.image_one, our_plane.rect) else: screen.blit(our_plane.image_two, our_plane.rect) switch_image = not switch_image # 讓切圖狀態不停的變換 else: pass # 獲得使用者所有的鍵盤輸入序列(如果使用者通過鍵盤發出“向上”的指令,其他類似) key_pressed = pygame.key.get_pressed() if key_pressed[K_w] or key_pressed[K_UP]: our_plane.move_up() if key_pressed[K_s] or key_pressed[K_DOWN]: our_plane.move_down() if key_pressed[K_a] or key_pressed[K_LEFT]: our_plane.move_left() if key_pressed[K_d] or key_pressed[K_RIGHT]: our_plane.move_right() # 響應使用者的操作(一定要有響應的使用者操作) for event in pygame.event.get(): if event.type == 12: # 如果使用者按下螢幕上的關閉按鈕,觸發QUIT事件,程式退出 pygame.quit() sys.exit() # 再而我們將背景影象並輸出到螢幕上面 pygame.display.flip() if __name__ == '__main__': main()2.讓飛機上下左右動起來
def main(): pygame.mixer.music.play(loops=-1) # loops 對應的值為 -1 則音樂會無限迴圈播放 our_plane = OurPlane(bg_size) # 初始化 switch_image = False # 定義飛機的切圖效果標識 our_plane_destroy_index = 0 while True: # 繪製背景圖 screen.blit(background, (0, 0)) # 飛機狀態是存活(如果按鍵 為 J, 讓飛機死亡並繪製爆炸效果) if our_plane.active: if switch_image: screen.blit(our_plane.image_one, our_plane.rect) else: screen.blit(our_plane.image_two, our_plane.rect) switch_image = not switch_image # 讓切圖狀態不停的變換 else: """ 飛機死亡也是進行按順序的圖片切換, 那麼在死迴圈之外定義索引 """ me_destroy_index = (our_plane_destroy_index + 1) % 4 if me_destroy_index == 1: me_down_sound.play() # 爆炸聲音效果 our_plane.reset() # 初始化飛機 if our_plane_destroy_index >= len(our_plane.destroy_images): our_plane_destroy_index = 0 else: screen.blit(our_plane.destroy_images[our_plane_destroy_index], our_plane.rect) our_plane_destroy_index += 1 # 獲得使用者所有的鍵盤輸入序列(如果使用者通過鍵盤發出“向上”的指令,其他類似) key_pressed = pygame.key.get_pressed() if key_pressed[K_w] or key_pressed[K_UP]: our_plane.move_up() if key_pressed[K_s] or key_pressed[K_DOWN]: our_plane.move_down() if key_pressed[K_a] or key_pressed[K_LEFT]: our_plane.move_left() if key_pressed[K_d] or key_pressed[K_RIGHT]: our_plane.move_right() # 按鍵為 j 飛機更改存活標識 if key_pressed[K_j]: our_plane.active = False # 響應使用者的操作(一定要有響應的使用者操作) for event in pygame.event.get(): if event.type == 12: # 如果使用者按下螢幕上的關閉按鈕,觸發QUIT事件,程式退出 pygame.quit() sys.exit() # 再而我們將背景影象並輸出到螢幕上面 pygame.display.flip()3.按鍵為 j 繪製飛機的死亡狀態
那麼上述的功能都已經實現了,接下來就開始真正的"打飛機"
三、接下來可以製作我方飛機,敵方戰機,子彈等,這些功能均在 src/ 目錄下實現
- 我方飛機根據按鍵上下左右進行移動,初始化位置,噴氣式圖片載入切換及重置效果等
#! /usr/bin/env python # -*- coding: utf-8 -*- """ 建立飛機 在pygame中, 所有可移動的物件均叫可看作一個精靈(sprite) 該類並實現了碰撞方法 spritecollide 我方飛機和敵方飛機指定掩膜屬性以及生存狀態標誌位 新增 self.mask 屬性(可以實現更精準的碰撞效果) """ # 倒入精靈模組, 使飛機可以動起來 import pygame class OurPlane(pygame.sprite.Sprite): def __init__(self, bg_size): super(OurPlane, self).__init__() # 確定我方飛機背景圖 self.image_one = pygame.image.load("material/image/hero1.png") self.image_two = pygame.image.load("material/image/hero2.png") # 獲取我方飛機的位置 self.rect = self.image_one.get_rect() # 本地化背景圖片的尺寸 self.width, self.height = bg_size[0], bg_size[1] # 獲取飛機影象的掩膜用以更加精確的碰撞檢測 self.mask = pygame.mask.from_surface(self.image_one) # 定義飛機初始化位置,底部預留60畫素 self.rect.left, self.rect.top = (self.width - self.rect.width) // 2, (self.height - self.rect.height - 60) # 設定飛機移動速度 self.speed = 10 # 設定飛機存活狀態(True為存活, False為死亡) self.active = True # 載入飛機損毀圖片 self.destroy_images = [] self.destroy_images.extend( [ pygame.image.load("material/image/hero_blowup_n1.png"), pygame.image.load("material/image/hero_blowup_n2.png"), pygame.image.load("material/image/hero_blowup_n3.png"), pygame.image.load("material/image/hero_blowup_n4.png") ] ) def move_up(self): """ 飛機向上移動的操作函式,其餘移動函式方法類似 """ if self.rect.top > 0: # 如果飛機尚未移動出背景區域 self.rect.top -= self.speed else: # 若即將移動出背景區域,則及時糾正為背景邊緣位置 self.rect.top = 0 def move_down(self): if self.rect.bottom < self.height - 60: self.rect.top += self.speed else: self.rect.bottom = self.height - 60 def move_left(self): if self.rect.left > 0: self.rect.left -= self.speed else: self.rect.left = 0 def move_right(self): if self.rect.right < self.width: self.rect.right += self.speed else: self.rect.right = self.width def reset(self): # 初始化飛機(飛機掛了, 初始化到初始位置) self.rect.left, self.rect.top = (self.width - self.rect.width) // 2, (self.height - self.rect.height - 60) self.active = True src/plane.pysrc/plane.py
- 敵方飛機隨機移動出現及重置(製作出我方飛機之後,敵機和子彈其實都是大同小異的)
-
#! /usr/bin/env python # -*- coding: utf-8 -*- """ 定義敵機 """ from random import randint import pygame class SmallEnemy(pygame.sprite.Sprite): """ 定義小飛機敵人 """ def __init__(self, bg_size): super(SmallEnemy, self).__init__() self.image = pygame.image.load("material/image/enemy1.png") self.rect = self.image.get_rect() self.width, self.height = bg_size[0], bg_size[1] self.mask = pygame.mask.from_surface(self.image) # 獲取飛機影象的掩膜用以更加精確的碰撞檢測 self.speed = 2 # 定義敵機出現的位置, 保證敵機不會在程式已開始就立即出現 self.rect.left, self.rect.top = ( randint(0, self.width - self.rect.width), randint(-5 * self.rect.height, -5), ) self.active = True # 載入飛機損毀圖片 self.destroy_images = [] self.destroy_images.extend( [ pygame.image.load("material/image/enemy1_down1.png"), pygame.image.load("material/image/enemy1_down2.png"), pygame.image.load("material/image/enemy1_down3.png"), pygame.image.load("material/image/enemy1_down4.png") ] ) def move(self): """ 定義敵機的移動函式 :return: """ if self.rect.top < self.height: self.rect.top += self.speed else: self.reset() def reset(self): """ 當敵機向下移動出螢幕時, 以及敵機死亡 :return: """ self.rect.left, self.rect.top = (randint(0, self.width - self.rect.width), randint(-5 * self.rect.height, 0)) self.active = True
src/enemy.py
- 子彈按照我方飛機正中上方發射及頻率調控,重置
#! /usr/bin/env python # -*- coding: utf-8 -*- """ 子彈的實現 """ import pygame class Bullet(pygame.sprite.Sprite): def __init__(self, position): super(Bullet, self).__init__() self.image = pygame.image.load("material/image/bullet1.png") self.rect = self.image.get_rect() self.rect.left, self.rect.top = position self.speed = 30 self.active = True self.mask = pygame.mask.from_surface(self.image) def move(self): """ 子彈移動, 超出螢幕範圍, 則設定死亡 :return: """ if self.rect.top < 0: self.active = False else: self.rect.top -= self.speed def reset(self, position): """ 復位函式 :param position: :return: """ self.rect.left, self.rect.top = position self.active = True src/bullet.pysrc/bullet.py
在上面的內容中,使用面向物件的形式製作了遊戲中可移動的物件並繼承 pygame.sprite.Sprite
四、然後在 bin/main.py 中進行主體功能的實現
- 初始化背景圖及大小
- 我方飛機移動及發射子彈
- 敵方飛機移動
- 我方飛機和敵方飛機碰撞檢測
- 鍵盤按鍵監測效果
- 我方飛機和敵方飛機掛了效果繪製
import sys from pygame.locals import * from config.settings import * from src.plane import OurPlane from src.enemy import SmallEnemy from src.bullet import Bullet bg_size = 480, 852 # 初始化遊戲背景大小(寬, 高) screen = pygame.display.set_mode(bg_size) # 設定背景對話方塊 pygame.display.set_caption("飛機大戰") # 設定標題 background = pygame.image.load("material/image/background.png") # 載入背景圖片,並設定為不透明 # 獲取我方飛機 our_plane = OurPlane(bg_size) def add_small_enemies(group1, group2, num): """ 新增小型敵機 指定個敵機物件新增到精靈組(sprite.group) 引數group1、group2是兩個精靈組型別的形參,用以儲存多個精靈物件(敵機)。 需要注意的一點是group既然是特定的精靈組結構體,在向其內部新增精靈物件時需要呼叫其對應的成員函式add() :return: """ for i in range(num): small_enemy = SmallEnemy(bg_size) group1.add(small_enemy) group2.add(small_enemy) def main(): # 響應音樂 pygame.mixer.music.play(-1) # loops 接收該引數, -1 表示無限迴圈(預設迴圈播放一次) running = True switch_image = False # 切換飛機的標識位(使飛機具有噴氣式效果) delay = 60 # 對一些效果進行延遲, 效果更好一些 enemies = pygame.sprite.Group() # 生成敵方飛機組(一種精靈組用以儲存所有敵機精靈) small_enemies = pygame.sprite.Group() # 敵方小型飛機組(不同型號敵機建立不同的精靈組來儲存) add_small_enemies(small_enemies, enemies, 4) # 生成若干敵方小型飛機 # 定義子彈, 各種敵機和我方敵機的毀壞影象索引 bullet_index = 0 e1_destroy_index = 0 me_destroy_index = 0 # 定義子彈例項化個數 bullet1 = [] bullet_num = 6 for i in range(bullet_num): bullet1.append(Bullet(our_plane.rect.midtop)) while running: # 繪製背景圖 screen.blit(background, (0, 0)) # 微信的飛機貌似是噴氣式的, 那麼這個就涉及到一個幀數的問題 clock = pygame.time.Clock() clock.tick(60) # 繪製我方飛機的兩種不同的形式 if not delay % 3: switch_image = not switch_image for each in small_enemies: if each.active: # 隨機迴圈輸出小飛機敵機 for e in small_enemies: e.move() screen.blit(e.image, e.rect) else: if e1_destroy_index == 0: enemy1_down_sound.play() screen.blit(each.destroy_images[e1_destroy_index], each.rect) e1_destroy_index = (e1_destroy_index + 1) % 4 if e1_destroy_index == 0: each.reset() # 當我方飛機存活狀態, 正常展示 if our_plane.active: if switch_image: screen.blit(our_plane.image_one, our_plane.rect) else: screen.blit(our_plane.image_two, our_plane.rect) # 飛機存活的狀態下才可以發射子彈 if not (delay % 10): # 每十幀發射一顆移動的子彈 bullet_sound.play() bullets = bullet1 bullets[bullet_index].reset(our_plane.rect.midtop) bullet_index = (bullet_index + 1) % bullet_num for b in bullets: if b.active: # 只有啟用的子彈才可能擊中敵機 b.move() screen.blit(b.image, b.rect) enemies_hit = pygame.sprite.spritecollide(b, enemies, False, pygame.sprite.collide_mask) if enemies_hit: # 如果子彈擊中飛機 b.active = False # 子彈損毀 for e in enemies_hit: e.active = False # 小型敵機損毀 # 毀壞狀態繪製爆炸的場面 else: if not (delay % 3): screen.blit(our_plane.destroy_images[me_destroy_index], our_plane.rect) me_destroy_index = (me_destroy_index + 1) % 4 if me_destroy_index == 0: me_down_sound.play() our_plane.reset() # 呼叫 pygame 實現的碰撞方法 spritecollide (我方飛機如果和敵機碰撞, 更改飛機的存活屬性) enemies_down = pygame.sprite.spritecollide(our_plane, enemies, False, pygame.sprite.collide_mask) if enemies_down: our_plane.active = False for row in enemies: row.active = False # 響應使用者的操作 for event in pygame.event.get(): if event.type == 12: # 如果使用者按下螢幕上的關閉按鈕,觸發QUIT事件,程式退出 pygame.quit() sys.exit() if delay == 0: delay = 60 delay -= 1 # 獲得使用者所有的鍵盤輸入序列(如果使用者通過鍵盤發出“向上”的指令,其他類似) key_pressed = pygame.key.get_pressed() if key_pressed[K_w] or key_pressed[K_UP]: our_plane.move_up() if key_pressed[K_s] or key_pressed[K_DOWN]: our_plane.move_down() if key_pressed[K_a] or key_pressed[K_LEFT]: our_plane.move_left() if key_pressed[K_d] or key_pressed[K_RIGHT]: our_plane.move_right() # 繪製圖像並輸出到螢幕上面 pygame.display.flip()bin/main.py
五、暢汗淋漓,一氣呵成打飛機
from bin.main import main if __name__ == '__main__': """ 環境: python3 + pygame running 起來就可以打飛機了O(∩_∩)O~. """ main()
最終效果!
完整專案程式碼 : https://github.com/triaquae/jerkoff
另外,本專案所用到的基礎知識視訊 已上傳至 路飛學城 ,需要者自取! http://luffy.oldboyedu.com/course/detail/python/5
相關推薦
python 之路,200行Python程式碼寫了個打飛機遊戲!
早就知道pygame模組,就是沒怎麼深入研究過,恰逢這周未沒約到妹子,只能自己在家玩自己啦,一時興起,花了幾個小時寫了個打飛機程式。 很有意思,跟大家分享下。 先看一下專案結構 """ PlayPlane/ |-- bin/ | |-- main.py 程式執行主體程式
python之路,Day2-python模塊初認識&數據類型
存在 logs key sort 等價 不可 bsp list 變量 一、模塊初識 首先,文件名不能和導入的模塊名稱一樣。因為系統默認先從當前文件尋找模塊名,如果文件名和導入的模塊名稱一樣的話,就相當於自己調用自己,會找不到相應的方法的。 sys模塊 sys.path
2 -12 字串編碼 python 之路,致那些年,我們依然沒搞明白的編碼
python 之路,致那些年,我們依然沒搞明白的編碼 python編碼終極版 1 檔案與記憶體的編碼格式 搞清楚了ASCII、Unicode和UTF-8的關係,我們就可以總結一下現在計算機系統通用的字元編碼工作方式: 在計算機記憶體中,統一使用Unicode編碼,當
python 之路,致那些年,我們依然沒搞明白的編碼
轉自:http://www.cnblogs.com/alex3714/articles/7550940.html(一個Python大牛的部落格) 本節內容 編碼回顧 編碼轉換 Python的bytes型別 編碼回顧
用Python寫了個色情文章檢測器!投放各大自媒體!就年薪百萬了?
但是,有些作者發表的文章充斥著色情與暴力,一旦被青少年看到,會產生難以想象的後果。我們需要對網路上的文章進行檢測,以標記出其是否為色情文章,如果是,那麼我們就要將其過濾不予顯示。而人工檢測在資訊爆炸的今天幾乎不可能實現。所以,我們提出了基於神經網路的色情文章檢測。 具體的
贊最多就是班長!Python寫了個刷贊程式!誰叫我女兒有個程式設計師爹
朋友圈貼出來的那個連結我就不用出來了,畢竟裡面有小孩子們的隱私,而且我這麼做的目的雖然是不公平,但是是我女兒所不知道的情況下進行的,每個父親都有私心吧!畢竟她還小,所以應該多多歷練一下也好,希望我女兒能成長的更好,更快吧!所以確實是不公平,本來世界就是不公平的不!但是還是想歷練一下自己的女兒,別以後
利用Python寫了個成語接龍!我弟弟已經玩了三天了!還是玩不過!
詩歌語料庫 首先,我們利用Python爬蟲來爬取詩歌,製作語料庫。爬取的網址為: https://www.gushiwen.org,頁面如下 : 由於本文主要為試了展示該專案的思路,因此,只爬取了該頁面中的唐詩三百首、古詩三百、宋詞三百、宋詞精
Python之路第二天,基礎2-基本數據類型
cheng python ech odi lun ron zid ast aof %E5%BE%AE%E4%BF%A1%E5%85%AC%E5%85%B1%E5%8F%B7%E7%9A%84PHP%E5%BC%80%E5%8F%91%E5%9F%BA%E7%A1%80%E7
python 小白(無編程基礎,無計算機基礎)的開發之路 輔助知識3 python os 用法
padding 我們 .so mtime mage os.chdir 實現 exists 返回 獲取文件所在路徑 import os os.path.dirname(__file__) 獲取當前文件的所在路徑 print (os.path.dirname(os.p
python之路——函數叠代,生成器
什麽 上一個 dir 指針 tor sin import lec collect ---恢復內容開始--- 叠代器 生成器 叠代器: 1, 什麽是叠代器協議 ① dir(被測對象) 如果它含有 __iter__,那這個對象叫做可叠代對象,遵循可叠代協議。 ② 可叠代對
python之路一,python基本語法
orm 一個 依次 條件 多語言 表示 都是 註意 方式 python基本語法: 1.python基本語句結構: 首先,在其他的語言中,比如java,c++,c#等,沒寫完一行語句之後,都需要在語句的末尾加一個分號,表示該語句結束,但是在python中,我們是不需要在每一行
Python學習之路,Day1 – Python基礎1
inf avr jet 源代碼 pre 創始人 UC 修改 學習python 寫在前面的話: 大學畢業之後沒有從事自己專業方面的工作,期間也做了很多工作,現在來到了一家物流公司,但是每天日復一日的工作,枯燥,乏味,發現這並不是自己想要的,自己也有自己的夢想,也有自己的追
python之路——函數名的應用,閉包,叠代器
glob 協議 字符串 () closure nco 異常處理 類類型 單向 # ##函數名的應用# def func():# print(666)# func()## 1.函數名就是函數的內存地址# print(func) #結果<functio
第5天,python之路
循環 reverse() 元組 [] def .so int fault rem 已經過了兩三天了,東西一點沒來寫,今天慢慢的寫吧。 還是會按Alex Li的流程來學習,編寫 寫出自己的東西 常用的數據類型 簡單的有,str ,int ,
人臉檢測真的不難,50行Python程式碼就能實現人臉檢測
現在的人臉識別技術已經得到了非常廣泛的應用,支付領域、身份驗證、美顏相機裡都有它的應用。用iPhone的同學們應該對下面的功能比較熟悉 iPhone的照片中有一個“人物”的功能,能夠將照片裡的人臉識別出來並分類,背後的原理也是人臉識別技術。 這篇文章主要介紹怎樣用Python實現
python打造特別火的一個小遊戲,16行程式碼實現3D撞球小遊戲!
以下是製作上面炫酷動畫所需的全部程式碼: 我們需要三組剛體(當您在Blender的物件上開啟一個剛體的屬性時,Blender將模擬與其它剛體的碰撞): 1.平面 第2行程式碼建立了一個簡單的平面,立方體將放置在
神奇,幾行Python程式碼實現隨機生成生成優惠券
生活中我們到處搶優惠券,到處用到優惠券,彷彿一輸入類似“yxune1uaqc5”一串代號的優惠券,立刻感覺撿到大便宜。商家這些優惠券的編碼都是怎麼生成的呢? 學習Python中有不明白推薦加入交流群 &n
無聊,幾行python程式碼寫一個聊天機器人陪你聊天
程式碼 利用爬蟲功能實現。 import urllib.request import re while True: x = input("主人:") x = urllib.parse.quote(x) link = urllib.req
python之路day03--資料型別分析,轉換,索引切片,str常用操作方法
資料型別整體分析 int :用於計算bool:True False 使用者判斷str:少量資料的儲存list:列表 儲存大量資料 上億資料[1,2,3,'zzy',[aa]]元組:只讀列表(1,23,'asdadas')dist:字典 鍵值對的形式儲存,關係型{'name':'小王八','age':16}
python之路day04--列表的增刪改查,巢狀、元組的巢狀、range、for迴圈巢狀
列表增刪改查 增加 append li = ['taibai','zy','nvshen'] li.append('aa') print(li) #['taibai', 'zy', 'nvshen', 'aa'] #需求:迴圈,互動,退出 # li = ['taibai','zy'