tips:因为倒来倒去所以格式乱了正在整理中...
目录:
- 000-愉快的开始
- 001-我和Python的第一次亲密接触
- 002-用Python设计第一个游戏
- 003-变量和字符串
- 004-改进小游戏
- 005-数据类型
- 006-常用操作符
- 007-支和循环1
- 008-分支和循环2
- 009-分支和循环3
- 010-列表
- 011-列表2
- 012-列表3
- 013-元组(tuple)
- 014-字符串
- 015-字符串格式化 format
- 在八进制数前百显示(‘ 0′)在十六进制数前面显示’0x’或’0X’ 用于直接告诉你显示的是多少进制
- 016-序列!
- 017.函数-Python的乐高积木
- 018-函数 灵活即强大(参数)
- 019.函数-我的地盘听我的
- 020.函数-内嵌函数和闭包.
- 021.函数-lambda表达式(匿名函数)
- 022-递归
- 025-字典1
- 026- 字典2
- 027-集合 无序!,去重 不能索引
- 028-文件因为以永恒
- 029-文件:一个任务
000-愉快的开始
优点:入门容易,学习难,代码量少.
跨平台: Windows, Mac OS, Linux, UNIX.
应用领域: 操作系统 WEB 3D动画 企业应用 云计算等等.
001-我和Python的第一次亲密接触
- 安装
- IDLE 是一个Python Shell:一个通过键入文本与程序交互的途径.
- print(‘text’), print(5+3), print(123+456), print(‘test’ +’text’ ), print(‘test’ * 8), print(‘test ’ * 8)
- 上一条语句快捷键:Alt + p 下一条语句快捷键:Alt + n
002-用Python设计第一个游戏
- 在IDLE中Ctrl + N 新建一个编辑器
- 写入一个猜数字的小游戏
- Tab: 缩进 和 补全
- Ctrl + S 保存
- 按F5运行
- 缩进很重要! 末尾有冒号,回车后会自动缩进.
- 一个等号是赋值,两个等号是判断是否等于.
- 流程图
- BIF == Buile-in functions 内置函数
- 有多少个内置函数在IDLE中:dir(bulitins)
- 帮助:help(BIF_Name)
003-变量和字符串
-
变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内在中,称之为变量(variable),在大多数语言中,都把这种行为称为”给变量赋值”或”把值存储在变量中”.
但是在Python与大多数其他计算机语言的做法不同,他并不是把值存储在变量中,而更像是把名字贴在值上边.所以有些Python程序员会说Python没有”变量”,只有”名字”.
-
变量可以运算:
f = 3
s = 8
t = f + s
print(t)
–> 11
换成字符串也是可以的.
-
使用变量要注意的地方:
3.1 在使用变量之前,需要对其先赋值.
3.2 变量名可以包括字母,数字,下划线,但变量名不能以数字开头.
3.3 字母可以大写或小写,但大小写是不同的.
3.4 等号(=)是赋值的意思,是把右面的值赋给左面的变量名,不能写反了
3.5 变量名理论可以取任何合法的名字,但尽量要取一个专业点的名字:
-
我们所认知的字符串就是引号内的一切东西,我们也把字符串叫做文本.文本和数字是不同的.
-
要创建一个字符串,就要在字符两边加上引号,可以是单引号或者双引号,但必须成对出现.
-
转义符号用 –>
'Let’s go!'
-
但是要打印
'c: ow’'
文件路径,可以用’c: ow’也就是用转义来转义但是这种方法如果有很多的就不方便 -
对于上面的问题,我们就可以用原始字符串也就是
r 'test '
的方法,但是要注意原始字符串的最后面是不能加上 的解决办法是什么呢(我自己觉得可以字符拼接) -
长字符串:要得到一个跨越多行的文本可以用三引号.
-
符号一定要用英文标点符号.
004-改进小游戏
-
猜错的时候程序应该给提示
-
只能猜一次,应该多点机会
-
每次运行程序,答案可以是随机的
-
条件分支
4.1比较操作符: >, >=, <, <=, ==, != 反回 True或False 比较操作符左右要加空格
4.2 分支语法:
if条件: 条件为真(True)执行的操作 else: 条件为假(False)执行的操作
-
while循环
5.1 while 条件:
条件为真(
True
)执行的操作 (例如:while guess != 8:
)5.2 别忘了冒号和缩进.
5.3 and逻辑操作符 左右同时为
True
才为True
-
引入外援: random模块
6.1 我们写的每个程序其实就是模块
6.2 random模块里有一个函数叫
randint()
会反回一个随机整数. 例:
random.randint(1,10)
生成一到十中的一个随机整数.6.3 导入
import random
005-数据类型
-
字符串运算会拼接字符串
-
整型:python3整型和长整型和在一起了,长度不受限制. Python2里是分开的.
-
浮点型:就是小数,区别就是有没有小数点
-
e记法:就是科学户数法(有正负 负就是往小正就是往大)
A = 0.000000000025 A –> 2.5e-11 b = 150000000000 b –>1.5e11
-
布尔类型:是一种特殊的整型.True Fales可以当成 0和1也可以用来计算.
True +true = 2 True+false = 1 True*false = 0 True/false 会报错, 0不能做为除数 # 但是 一般不用来计算.
-
如何相互转换?
有BIF :
int() str() float()
int()
:转化为整数,a = ‘520’ b = int(a) b –> 520
也可以把浮点型转换为整数,但是python会把后面的数直接砍掉,不会四舍五入.
不能用
a=’string’
这种让int转换float
: a = ‘520’或者a=520 b = int(a) b –> 520.0
str()
: 转换为字符串.不能用BIF当变量名.
-
如何获得类型的信息(判断)
type()
: 括号内写要判断的内容.会返回括号内的类型.isinstance()
:有两个参数 一个是用来判断的变量,一个是想要确定的类型它会返回一个布尔值,如果符合判断,为True 反之为Flase
isinstance(a,str) –> True isinstance(123456,str) –> Float # 更加建议用 isinstance()
006-常用操作符
a= a+3 可以写做 a+=3 | b = 3 b-=1 b –> 2
–
*
/
% : 求余数 5%2 –> 1 |11%2 –>1
** : 幂,也就是多少次方
// : 地板除 10//8 –> 1 | 3.0//2 –>1.0
例:
# 优先级问题:最先括号,先乘除,再加减.
a = b = c = d = 10 –> a=10 b=10 c=10 d=10
a +=1 a–>11
b -=3 b–>7
c*=10 c–>100
d /=8 d–>1.25
# 优先级问题:最先括号,先乘除,再加减.
-3 * 2 + 5 / -2 -4
–> (-3)*2 + 5/(-2) -4
–> ((-3)*2)+(5/(-2)) -4
比较操作符(<,>)比逻辑操作符优先级高
3<4 and 4<5
(3<4) and (4<5)
必要的时候多加括号,增加代码的可读性.
幂运算比左面的高比右面的低
-3 **2
(正常来说 -3 * -3
应该等于 9
)
-(3 ** 2)
–> -9
逻辑操作符
and
左面都为真 才为真
or
左或右为真 就为真.
not
左右都为假 就为真.
统计一下:
最高 ** 但有特殊性
然后 正负号
然后 * / //
然后 + –
然后 < > <= >= == !=
然后 not and or
007-支和循环1
游戏的组成和架构(打飞机游戏)
1.进入游戏就是进入一个大循环:只要不死直出飞机
2.分支 条件发生改变 进入另一个胡同昊
3.飞机都一样,所以都是一个对象复制出来的.
框架:
1.加载背景音乐
2.播放音乐 单曲循环
3.我方飞机诞生
小飞机间隔变量 = 0
while True
if 用户是否点了关闭 退出
break
间隔 += 1
if 间隔 == 50:
间隔 = 0
小飞机诞生
小飞机移动一个位置 从上往下
屏幕刷新
if 用户鼠标移动
我方飞机中必位置 = 用户鼠标位置
屏幕刷新
if 我方飞机与小飞机发生肢体冲突
我方挂,播放撞击音乐
修改我方飞机图案
打印game ove
淡出停止背景音乐
008-分支和循环2
90分以上为A,80-90分为B,60-80为C,60以下为D
写一个程序,当用户输入分数,自动转换为ABCD的形式打印.
答案:用if elif else 语句实现!
悬挂else? 在Python中是不可能的.
条件表达式(三元操作符,三目操作符)
几元操作符,是指这个操作符有多少个操作数
例如 a = 1
这里的 = 左右有两个操作数,所以它就是一个二元操作符.
-1 减号当做负号时他就是一个一元操作符.
small = x if x
语法是:x if条件 else y
当条件满足时,把x的值给了small,不成立时把y值给了small
断言(assert
)
assert
是关键字, 称为断言
当这个关键字后边的条件为假的时候,程序自动崩溃
并抛出AssertionError的异常
例子: assert 3>4
一般来说我们可以用它再程序中转入检查点,
当需要确保程序中的某个条件一定为真才能让程序
正常工作的话,assert关键字就非常有用了.
tips: 这一般用来测试程序用.
009-分支和循环3
while循环:条件为真,一直循环.
while 条件:
循环体
for 循环,计算器循环:
for 目标 in 表达式(列表,元组):
循环体
例子:
a = ‘lvyang’
for i in a:
print(i, end=’ ‘) # 注意这里的print end语句 表示输出用什么结尾
num = [‘a’,’bccc’,’bcf’,’dd’,’e’,’f’]
for each in num:
print(each,len(each)
range():
语法:range([strat,]stop[, step=1])
有三个参数,其中用中括号括起来的两个表示这两个参数是可选的.
step=1
表示第三个参数的默认值是1.如果你不主动设置step就是1.
rang
这个BIF的作用是生成一个从start参数的值开始到stop参数的值
结束的数字序列.
range()是经常和
for in`一起的:
range(5)
–> range(0,5)
list(range(5))
–> [0,1,2,3,4]
例子:
for i in range(5):
或
for i in range(2,9):
或
for i in range(1,10,2):
–>第三个参数step是步长的意思.
两个关键的语句:break
和continue
break
:终止循环,并跳出循环体.
continue
:终止本轮循环,并开始下一轮循环,注意,它在开始下一轮循环之前它会测试
下一轮循环的条件.只有下一轮循环为True的时候,它才会开始下一轮循环.如果不会的话
它会退出循环.
010-列表
所有类型都可以装进去.
一,创建列表三种方式
1.创建一个普通列表:
member = [‘xx’,’oo’,’dd’,’cc’]
也可以 num = [1,2,3,4]
2.创建一个混合列表:
mix = [1,’ddd’,3.14,[1,2,3]] 也可以在里面添加一个列表.
3.创建一个空列表
empty = []
二,向列表添加元素
1.append()方法 :member.append(‘oooxxx’) 只能添加一个元素. 添加到列表的尾部.
len(member)–>反回列表的长度
.后面是方法 属于列表对象
2.extend()扩展,用一个列表扩展另一个列表.
member.extend([‘东奔西走’,12345,’大发寻’]) 把一个列表追加一列表的末尾.
3.insert()方法:有两个参数,第一个代表在列表中的位置,第二个参数插入的元素.
会在第一个参数指定的位置,插入元素.
member.insert(1,’jj’)
位置是从0算起的,如果想放在第一个位置要写0
011-列表2
一.从列表中获取元素
1.member[0]获取第一个
member[1]获取第一个
想给member列表的第一和第二个元素调换位置
temp = member[0] 把第一的元素放在一个临时变量里
member[0]=member[1] 把第一个元素改成第二个元素
member[1]=temp 把临时变量添加到第二个元素位置.
二.从列表删除元素
1.remove()
member.remove(‘oo’) 参数是要删除元素的名字
如果没有给定的参数就会报错
2.del
它不是列表的方法,是一个语句.
del member[1] 把第一个元素删除.
del member 把整个列表删除.
3.pop()
member.pop() 会删除最后一个元素,并反回删除元素的内容.
我们可的把删除的内容赋值 name = member.pop() 这样
pop()有一个参数,member.pop(索引)
三.列表切片(slice)
一次需要获取多个元素.得到原列表的一个copy
member[:]
member[1:3]
member[:3]
member[2:]
member[:-1]
012-列表3
一.比较操作符
例:
ist1 = [123]
list2 = [234]
list1 > list2
例:
list1 = [123,456]
list2 = [234,123]
list1 > list2
tips:列表是从第0个元素开始比较的,如果第0个赢了那就赢了,不考虑后面的元素.
例:
list3 = list1 = [123,456]
(list1 < list2) and(list1 == list3) –>True
例:
list4 = list1 +list2
但是一般不要用,一般要用list.extend()更为规范.
例:
list1 + ‘大’ –>报错
+号左右的对象的类型必须是一样的.
例:
list1 * 3
例:
list3*=3 或 list3 *= 5
例:
123 in list3 –>True
‘233’ not in list3 –>false
例:
列表里的列表可不可以呢?
lists = [123,[‘人’,’从’],456]
‘人’ in lists –>false
可以这样
‘人’ in lists[1] –> True
lists[1][1] –>’从’
二.列表的BIF : dir(list)可以查到
1.count 计算列表中参数出现的次数.
list3.count(123)
2.index 索引,反回参数在列表中的位置.
list3.index(123)
list3.index(123,3,7) 后面的参数可以指定要找的范围.
3.reverse() 原地翻转.
list3.reverse()
4.sort() 用指定的方式对列表进行排序.
默认是从小到大
list6 = [4,3,2,5,9,23,32,0]
list6.sort() –>从小到大排
sort(reverse = false) –> list6.sort(reverse=True)
5.列表的copy
赋值不等于copy
复制粘贴,快捷方式的区别.
很容易出现错误.!
013-元组(tuple)
—里面的参数,不可改变,在使用时和列表非常相似
1.创建:tuple1 = (1,2,3,4,5,6,7,8)
创建一个空元组: tuple2 = ()
2.访问:tuple1[1]也可以 tuple1[5:] 或 tuple1[:5]
也可以copy一个列表 tuple2 = tuple1[:]
3.元组里的元素不可以修改
注意: temp =(1) –> temp –> type(temp) –>
创建只有一个元素的元组,反回来的type其实是
init 认为它是一个变通变量
如果要创建一个只有一个元素的元组,temp = (1,)或temp = 1,
在元素的后面加一个逗号.
temp2 = 2,3,4,5 –> type(temp2) –>
创建多个元素的变量,就算没有小括号也会得到元组
所以小括号不是关键,逗号才是关键.
例:
8 * (8) –> 64
8 * (8,) –> (8,8,8,8,8,8,8,8) 因为是元组了
4.更新和删除一个元组
temp = (‘a’,’b’,’c’,)
temp = temp2[:2]+(‘dd’,)+temp[2:]
tip:要删除某一个元素是不可能的,只可以用上面的方法重组
要删除整个元组可以用 del 语句 : del temp
一般不用 del 语句,因为有内在回收机制
5.元组相关的操作符
-
拼接
-
重复
,<
in,not in
and or not
014-字符串
–切片也可有用在字符串上:str1 = ‘123456789’ –>str1[:5] 也可以用索引取出.
–字符串和元组一样也不能随意修改,如果实在想修改,参照上面的元组.
–相关操作符和元组列表基本一样
字符串的方法
- captalize — 第一个字符大写
- casefold — 把整个字符串改为小写
- center(50) — 把字符串居中,并使用空格填充至长度width的新字符串
- count(‘str’) — 查找字符串中有几个’str’,还有可选参数 start和end
- encode()
- endswith(‘x’) — 检查是否是‘x’结束,也有可选参数start和end
- expandtabs() — 把’ ’ 的空格转换成默认为8长度'(可指定)’的tab,也有可选参数start和end
- find() — 检测括号内容是否包含在字符串中,有,反回索引.否则返回-1,start和end
- index() — 跟find方法一样,不过如果括号里的内容不在string中会产生一个异常.
- isainum() — 如字符串至少有一个字符并且所有字符都是字母或数字 则反回True,否则返回false
- isalpha() — 如客串至少有一个字符并所有字符都是字母则返回True,否同则反回false
- isdecima() — 如果字符串只包含十进制数字则返回True,否则返回false
- isdigit() — 如果字符串只包含数字则返回True,否则返回false
- islower() — 小写,
- isnumeric() — 如果字符串中只包含数字字符,则反回True
- ispace() — 如果字符串中只包含空格返回True
- istitle() — 如果字符串是标题化(首字母大写)返回True
- isupper() — 如字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回True
- join(sub) –以字符串作为分隔符,插入到sub中所有的字符之间.
- ljuest(width) — 返回一个左对齐的客串,并使用空格填充至长度为width的新客串
- lower() — 转换字符串中所有大写为小写.
- lstrip() — 去年字符串左边的所有空格
- partition(sub) — 找到
太多了 跳~
/t 就是一个tab
015-字符串格式化 format
例1: ‘{0} love {1},{2}’.format(‘lv’,’ren’,’zhen’) 位置参数
例2: ‘{w} love {t},{y}’.format(w=’lv’,t=’ren’,y=’zhen’) 关键字参数
例3: ‘{0} love {t},{y}’.format(‘lv’,t=’ren’,y=’zhen’) 位置和关键字一起用,但是一定要位置在关键字之前
例4: ‘{{0}}’.format(‘打印’) –> {0} 要打印{} 就用这种方法 大括号转义大括号
例5: ‘{0:.1f}{1}’.format(2.688,’GB’) :冒号表示格式化符号的开始,保留一位小数四舍五入.
格式化操作符:
1.格式化字符及ascii码 ‘%c %c %c’ %(97, 98, 99): –> a b c
2.格式化字符串 ‘%s’ % ‘abc’:
3.格式化整数 ‘d’
4.格式化无符号八进制数 %o
5.格式化无符号十六进制数 %x
6.格式化无符号十六进制数(大写) %x
7.格式化定点数,可指定小数点后的精度 %f (默认精确到6位)
8.用科学计数法格式化定点数 %e
9.和%e一样,用科学计数法格式化定点数 %E
10.%g 根据值的大小决定使用%f或%e
11.%G 作用同%g 根据值的大小 决定使用%f或者%e
格式化操作辅助命令:
m.n m是显示 最小部宽度,n是小数点后面的位数 %5.1f 或 %.2e %27.658
– 用于左对齐
- 在正数前面显示加号
在八进制数前百显示(‘ 0′)在十六进制数前面显示’0x’或’0X’ 用于直接告诉你显示的是多少进制
0 显示的数字前面用0代替空格.
字符串转义字符含义
’ 单引号
” 双引号
a 发出系统响铃声
退格符
换行符
横向制表符 tab
v 纵向制表符
回车符
f 换页符
o 八进制数代表的字符
x 十六进制数代表的字符