关于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
(
)