關于Python3進度打卡
文章目錄
- 關于Python3進度打卡
- 第一天——9.4
- 一、安裝環境變量
- 二、關于編輯
- 三、基本介紹
- 第二天——9.5
- 一、基本數據類型
- 二、基本語句
- 三、編程實踐
- 第三天——9.7
- 一、制作貪吃蛇游戲的準備
- 二、需求及算法分析
- 三、代碼實現
- 四、一些全局參數的初始化
- 五、關于貪吃蛇及食物的位置
- 六、關于貪吃蛇的上下左右移動
- 七、判斷能否遲到食物
- 八、繪制貪吃蛇、食物的函數
- 九、貪吃蛇的邏輯調用
- 十、主邏輯層判斷游戲是否結束
第一天——9.4
一、安裝環境變量
1、首先訪問http://www.python.org/download/去下載最新的python版本。
2、安裝下載包,一路next。
3、為計算機添加安裝目錄搭到環境變量,如圖把python的安裝目錄添加到pth系統變量中即可。
4、測試python安裝是否成功,cmd打開命令行輸入 python 命令,如下圖即成功了,(我下的是最新版,所以為顯示為3.7.4)
二、關于編輯
python并不需要特意下載編輯器,在配置完后,可以直接使用自帶程序編輯,
可直接在電腦搜索IDLE便可編輯。(IDLE是python的一個shell,意為外殼,即文本與程序交互的途徑)
三、基本介紹
單引號 ’ ‘或者雙引號 " " 都可以,再或者 ‘’’ ‘’’ 三個引號,其中三個引號被用于過于長段的文字或者是說明,只要是三引號不完你就可以隨意換行寫下文字。
①字符串直接能相加,
1
、str1
=
'hi'
2
、str2
=
'hello'
3
、print
(
str1
+
str2
)
``
`
運行結果:
hi jaybo
1
②字符串相乘,如:
string
=
'bang!'
total
=
string
*
3
``
`
打印 total
結果:
bang!bang!bang!
第二天——9.5
一、基本數據類型
整數
Python可以處理任意大小的整數,當然包括負整數,在程序中的表示方法和數學上的寫法一模一樣,例如:1,100,-8080,0,等等。
計算機由于使用二進制,所以,有時候用十六進制表示整數比較方便,十六進制用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
浮點數
浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,比如,1.23x109和12.3x108是完全相等的。浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對于很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
整數和浮點數在計算機內部存儲的方式是不同的,整數運算永遠是精確的(除法難道也是精確的?是的!),而浮點數運算則可能會有四舍五入的誤差。
字符串
字符串是以單引號’或雙引號"括起來的任意文本,比如’abc’,“xyz"等等。請注意,’'或”“本身只是一種表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c這3個字符。如果’本身也是一個字符,那就可以用”"括起來,比如"I’m OK"包含的字符是I,’,m,空格,O,K這6個字符。
輸入如下:
counter
=
100
#整型變量
miles
=
100.0
#浮點型變量
name
=
"luyin"
#字符串
print
(
counter
)
print
(
miles
)
print
(
name
)
結果如下:
注意點:1、如果需要輸入字符串,一定要加雙引號“”,否則便是無定義,如圖中紅字錯誤部分。
2、如果遇到字符串中需要有雙引號的地方,則加上斜杠/防止錯誤。
- 縮進==(空格或者Tab)標明代碼的層次關系,是python語言中表明程序框架的唯一手段。==
a
=
True
if
a
:
print
(
"Hello,python"
)
else
:
print
(
"Hello word"
)
-
注釋
單行注釋:以#開頭
#這是一個注釋
a
=
True
if
a
:
print
(
"Hello,python"
)
else
:
print
(
"Hello word"
)
-
多行注釋:用三引號”’或者”“”開頭、結尾。
這是一行注釋
這是第二行注釋
這是第三行注釋
a
=
True
if
a
:
print
(
"Hello,python"
)
else
:
print
(
"Hello word"
)
————————————————
二、基本語句
- 賦值語句
f
=
1.8
*
float
(
input str
[
0
:
-
1
]
+
32
)
1
- 輸入語句
a
=
input
(
"請輸入一個整數"
)
1
- 輸出語句
a
=
input
(
"請輸入一個整數"
)
b
=
input
(
"請輸入另一個整數"
)
sum
=
(
float
(
a
)
+
float
(
b
)
)
print
(
"a+b: %f"
%
sum
)
1
2
3
4
5
- 分支語句
if
條件
1
:
語句組
1
elif 條件
2
:
語句組
2
#
...
...
else
:
語句組n
+
1
-
循環語句
計數循環格式:
#一段程序運行
10
次
for
i
in
range
(
1.11
)
:
<
源代碼
>
三、編程實踐
最終代碼:
print
(
"************文字游戲*************"
)
豬
=
"豬"
temp
=
input
(
"你和豬誰跑的快?"
)
guess
=
str
(
temp
)
if
guess
==
豬
:
print
(
"你可真厲害,你連豬都不如"
)
else
:
print
(
"恭喜你,居然能跑過豬"
)
結果如圖:
雖然成功了,但是如圖所示,中間錯誤了很多次,
錯誤版
整理如下:
1、由于輸入的為字符串,所以應該用str 而不是int
2、條件語句if后面要跟冒號:
3、中文字符的符合不能用于編程,不互通。如:中文的()和英文的()不是一個東西
4、需要提前定義,如豬=“豬”
第三天——9.7
一、制作貪吃蛇游戲的準備
-
下載集成開發環境pycharm
這個可直接誒在網上搜索下載,地址:http://soft.onlinedown.net/soft/255225.htm
如果需要中文則需要自己配置漢化包,鏈接:https://pan.baidu.com/s/1xODBZjdFKAz2RfDrxl2pwQ 密碼:1kps
下載后解壓放入lib文件夾中便可漢化。 -
配置解釋器
一個是日常編程需要的pip和setuptoods
二是制作貪吃蛇必不可少的pygame
配置完成后準備工作便結束接下來開始正式編程
二、需求及算法分析
內容:
- 需要有貪吃蛇、有食物;
- 需要能控制貪吃蛇來上下移動獲取食物;
- 貪吃蛇在吃取食物后,自身長度增加,同時食物消失并隨機生成新的食物;
- 如果貪吃蛇觸碰到四周墻壁或是觸碰到自己身體時,則游戲結束
三、代碼實現
- 首先我們需要的是python的第三方庫pygame ,這個我們在上面就已經配置完畢。
之后還會用到一些內置的模塊如sys(系統文件)、random(隨機)、time(時間),我們我們直接誒import就好。
順便解釋一下什么事pygame。(主要是我覺的如果以后想用python編寫游戲的話會經常用到)
Pygame是一個利用SDL庫的游戲庫, 是一組用來開發游戲軟件的 Python 程序模塊。
SDL(Simple DirectMedia Layer)是一個跨平臺庫,支持訪問計算機多媒體硬件(聲音、視頻、輸入等),SDL非常強大,但美中不足的是它是基于 C 語言的。
PyGame是 SDL 庫的 Python 包裝器(wrapper),Pygame 在SDL庫的基礎上提供了各種接口,從而使用用戶能夠使用python語言創建各種各樣的游戲或多媒體程序
四、一些全局參數的初始化
#一、全局部分的參數初始化
import
pygame
,
sys
,
random
,
time
#將pygame導入至python庫中,以便用來使用和導入常用的函數和常量
from
pygame
.
locals
import
*
def
main
(
)
:
global fpscock
,
display
,
basicfont
,
black
,
red
,
white
,
grey
#初始化python庫
pygame
.
init
(
)
#
這是游戲窗口
(
display展現
)
display
=
pygame
.
display
.
set_mode
(
(
640
,
480
)
)
#這是游戲的標題文字
pygame
.
display
.
set_caption
(
'鹿先森的貪吃蛇'
)
#定義一個變量控制游戲速度
spsclock
=
pygame
.
time
.
clock
(
)
#選擇游戲字體
basicfont
=
pygame
.
font
.
SysFont
(
""
,
80
)
#配置目標方塊的顏色信息
紅色
(
255
,
0
,
0
)
黑色(
0
,
0
,
0
) 紅色:(
255
,
255
,
255
)
red
=
pygame
.
__color_constructor
(
255
,
0
,
0
,
0
)
#貪吃蛇顏色黑色
black
=
pygame
.
__color_constructor
(
0
,
0
,
0
,
0
)
#背景顏色白色
white
=
pygame
.
__color_constructor
(
255
,
255
,
255
,
0
)
playgame
(
)
#開始游戲
def
playgame
(
)
:
五、關于貪吃蛇及食物的位置
#整個界面可以看成是許多個小方格組成,每個方塊代表一個標準小格子,貪吃蛇蛇的長度可以用標準小格子表示。蛇身可以用列表儲存。
#貪吃蛇的初始位置
snake_head
=
[
100
,
100
]
#初始化貪吃蛇的長度(這里是以
20
*
20
為一個標準格子,加入小蛇開始有三段,則有三個標準小格子
"40.60.80"
)
snake_body
=
[
[
80
,
100
]
,
[
60
,
100
]
,
[
40
,
100
]
]
#貪吃蛇最初的前進方向,向右
direction
=
"right"
#改變方向,給方向賦予新的變量
changedirection
=
direction
#第一個食物的位置
food_position
=
[
300
,
300
]
#食物存在狀態
,
0
表示食物被吃,
1
表示食物存在
food_flag
=
1
六、關于貪吃蛇的上下左右移動
#通過監聽鍵盤的輸入,利用鍵盤的上下左右控制貪吃蛇移動
#檢測鍵盤按鍵
for
event
in
pygame
.
event
.
get
(
)
:
#接受退出按鍵,退出游戲
if
event
.
type
==
quit
(
)
:
pygame
.
quit
(
)
sys
.
exit
(
)
# 判斷鍵盤方向鍵或者wasd來表示上下左右
;
elif event
.
type
==
keydown
;
if
(
event
.
key
==
k_w
)
changedirection
=
'up'
if
(
event
.
key
==
k_s
)
and direction
!=
up
:
changedirection
=
'down'
if
(
event
.
key
==
k_a
)
and direction
!=
right
:
changedirection
=
'left'
'
if
(
event
.
key
==
k_d
)
and direction
!=
left
:
changedirection
=
'right'
#接下來就是將蛇前進的方向按照鍵盤的輸入就行轉彎操作的實現
#備注:由于由于是列表存儲的所以
[
0
]
調取的是列數,
[
1
]
改變的是劣數
if
direction
==
left
:
snake_head
[
0
]
-=
20
if
direction
==
right
:
snake_head
[
0
]
+=
20
if
direction
==
up
:
snake_head
[
0
]
-=
20
if
direction
==
down
:
snake_head
[
0
]
-=
20
#將蛇的頭和蛇身連在一起
snake_body
.
insert
(
0
,
list
(
)
)
七、判斷能否遲到食物
#如果將蛇頭和食物的位置重合,則判定為吃到食物,食物狀態從【
1
】變成【
0
】
#若是沒吃到到食物則蛇頭跟具按鍵輸入而改變方向,蛇身則將根據蛇頭而該改變位置,蛇尾可以會被直接清除出列表
if
snake_head
[
0
]
==
food_position
[
0
]
and snake_head
==
food_position
[
1
]
:
food_flag
=
0
else
:
snake_body
.
pop
(
)
#食物被吃后的重新生成,這里我們需要用到random函數生成隨機位置(初始化時已經配置完畢)
if
food_flag
==
0
#隨機生成
,
生成或食物狀態又從
0
變成
1
x
=
random
.
randrange
(
1
,
32
)
y
=
random
.
randrange
(
1
,
24
)
food_position
=
[
int
(
x
*
20
)
,
int
(
y
*
20
)
]
food_flag
=
1
八、繪制貪吃蛇、食物的函數
#繪制貪吃蛇
def
drawsnake
(
snake_body
)
:
for
i
in
snake_body
:
pygame
.
draw
.
rect
(
display
,
black
,
rect
(
i
[
0
]
,
i
[
i
]
,
20
,
20
)
)
#繪制食物
def
drawfood
(
food_position
)
:
pygame
.
draw
.
rect
(
display
,
red
,
rect
(
food_position
[
0
]
,
food_position
[
1
]
,
20
,
20
)
)
九、貪吃蛇的邏輯調用
#貪吃蛇每移動一次或者邏輯調用一次,就通過刷新pygame的顯示層。通過控制顯示層的刷新速度就可以控制游戲執行速度。
display
.
fill
(
white
)
#畫出貪吃蛇
drawsnake
(
snake_body
)
#畫出食物的位置
drawfood
(
food_position
)
#刷新pygame顯示層,每次移動都可以刷新顯示層的操作來顯示。
pygame
.
display
.
flip
(
)
#控制游戲速度
fpsclock
.
tick
(
7
)
十、主邏輯層判斷游戲是否結束
#游戲結束并退出
def
gameover
(
)
:
#gameover的顏色
gameover_surf
=
BASICFINT
.
reder
(
'抱歉,你掛了!'
,
True
,
red
)
#gameover位置
gameover_rect
=
gameover_surf
.
get_rect
(
)
gameover_surf
.
midtop
=
(
320
,
10
)
#確定以上設置到句字
display
.
blit
(
gameover_surf
,
gameover_rect
)
pygame
.
display
.
flip
(
)
#等待
2
秒,
time
.
sleep
(
2
)
#退出游戲
pygame
.
quit
(
)
#退出游戲
sys
.
exit
(
)
#一、蛇頭碰到邊界
if
snake_head
[
0
]
<
0
or
[
0
]
>
620
;
gameover
(
)
if
snake_head
[
1
]
<
0
or
[
1
]
>
460
;
gameover
(
)
二、蛇頭碰到自己
for
i
in
snake_body
[
1
:
]
;
if
snake_head
[
0
]
==
i
[
0
]
and snake_head
[
1
]
==
i
[
1
]
;
gameover
(
)
if
__name__
==
'__main__'
:
main
(
)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
