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

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