安全矩阵

 找回密码
 立即注册
搜索
查看: 12198|回复: 38

袁青学习日记

[复制链接]

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
发表于 2020-2-19 10:05:39 | 显示全部楼层 |阅读模式

今天我重温了python的分支与循环,并深度学习。

分支的概念:分支也就是习惯的if条件判断,在条件保持成立或不成立的情况下,都执行固定的流程。一旦条件发生改变,原来成立的条件为不成立,那么程序就走入另一条路。

例如:


如果说,分支的含义是“只有符合条件,才会去做某事”;而循环则是“只要符合条件,就持续做某事”。

而while循环语句与for循环语句这是其中的重点。

Python的while循环与if条件分支类似,不同的是,只要条件为真,while循环会一直重复执行一段代码,这段代码称为循环体。

语法如下:

While 条件:

       循环体

下面代码将打印1+2+3+4+……+100的计算结果




虽然大多数编程语言都有一个for循环语句,功能也是大同小异。

For循环语句的语法如下:

       For 变量 in 可 秩送对象:

              循环体

但想要通过for语句实现1+2+3+……+100的计算需要用的range()函数。其语法如下:

range(stop)---会生成从0到该参数的数字序列

range(start,stop)---除了指定结束数值,还指定了开始数值

range(start,stop,step)---还允许指定步长

例如:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-2-20 20:00:24 | 显示全部楼层
本帖最后由 Mint97 于 2020-2-20 21:28 编辑

复习二:列表和元组



        我们有时候需要将一些有关联的数据保存在一起,而Python以其强大的列表取代了数组,就因为Python的变量没有数据类型,所以Python的列表就可以存放不同类型的变量。

其实,创建一个列表很简单,只需要使用中括号把数据括起来就好,通过逗号分隔。

例如:




        而且,我觉得Python的列表其强大之处就在于它支持不同类型的的数据存放在一起。

当然,列表不是一成不变的,可以向列表添加一些新元素,可以使用append()函数

例如:



就因为append()不是BIF,它是列表对象的一个方法。与此类似的还有extend()和insert()。append()之支持一个参数,且添加的元素只放在末尾;extend()支持多个参数,也只是放在末尾;而insert()有两个参数:第一个是指定待插入的位置(索引值),第二个是待插入的元素值。而在python的列表中,第一个位置的索引值是0,第二个是1,以此类推。

例如在2和3之间插一个9
当然,我们也可以通过索引值直接获取列表中某个元素:
如果想要从列表删除元素,可以通过remove(),pop()和del来实现。
remove()需要指定一个待删除的元素,所以,使用remove()不需要这个元素在列表中具体的位置。
del语句是一个Python语句,而不是del列表的方法。:


而且,del还可以直接删除这个列表:






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-2-20 20:14:06 | 显示全部楼层
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-2-26 22:04:27 | 显示全部楼层

Python函数(一)

函数在Python中是很重要的,而此前的BIF只是Python已经封装好的函数,用起来的很方便,是复杂变得简单化了。

创建一个函数很是简单,
例如:


我们创建了一个函数,函数后面要加一个小括号,这小括号里一定要,因为这括号里放的是函数的参数,而这参数可以使得函数实现个性化。
具体如下:


局部变量

定义在函数内部的变量是局部变量,局部变量的作用范围只能在函数的内部生效,它不能在函数外被引用。

全局变量      

与局部变量相对的是全局变量,全局变量有更大的作用域,因此在函数中可以访问到它们。

内嵌函数

Python的函数定义是支持嵌套的,也就是允许在函数内部定义另一个函数,这种函数称为内嵌函数。
例如:


写一个求阶乘的函数

正整数的阶乘是指从1乘以2乘以3乘以4一直乘到所要求得数。
例如:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-3-12 09:52:13 | 显示全部楼层
本帖最后由 Mint97 于 2020-3-12 10:22 编辑

字典和集合(一)



字典介绍:
其实在Python中也是有字典的,Python的字典中把字或单词称之为“键”,把其对应的含义称之为“值”。
其实字典是Python中唯一的映射类型,指两个元素集之间元素相互“对应”的关系,如图:

映射类型区别于序列类型,序列类型以数组的形式储存,通过索引的方式来获取相应位置的值,一般索引值与对应位置储存的数据是毫无区别的。
创建和访问字典
先展示一下:

字典的使用非常简单,它有自己的标志性符号,就是用大括号{}定义。字典有“键”和“值”共同构成,每一对键值组合称之为“项”。
在这个例子中,李宁,耐克,阿迪达斯等就是键,一切皆有可能,just do it,impossible is nothing,让编程改变世界,这些事值。
其实要声明一个空字典,直接用大括号就行:

也可以用dict()内置函数来创建字典

ps:这里键的位置不能加上表示字符串的引号,否则就会报错。
访问字典里的值,只需要把相应的键放入括号就行:

还有一种创建方法是直接给字典的键赋值,如果键已存在,则改写键对应的值;如果键不存在,则创建一个新的键并赋值:


ps:字典不允许同一个键出现两次,如果同一个键被赋值两次,后一个值会被记住。
字典中的键必须不可变,所以可以用数值,字符串或元组充当,不能使用列表。
正所谓殊途同归,有五种方法创建同样的字典:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-3-14 20:13:25 | 显示全部楼层
字典与集合(二)
1)fromkeys()
fromkeys()方法用于创建并返回一个新的字典,它有两个参数;第一个是字典的键,第二个参数是可选的,是传入键的值,如果不提供,那么默认是None.
例如:

上面的一个例子告诉我们做事不能想当然,fromkeys()方法并不会将值“one”,"two"和“three”分别赋值键1,2和3.因为fromkeys()把(“one”,“two”,“three”)当成一个值了。
2)keys(),values()和items()
访问字典的方法有kers(),values()和items()。keys()用于访问字典中的键,values()用于访问字典中的所有值,那么,items()就是访问字典中所有的键值对(也就是项)
例如:

字典可以很强大,但有时候我们并不知道提供的项是否在字典中真实存在,如果不存在,python就会报错。如果程序已经发布了,那么经常报错的程序肯定会被用户遗弃的。
3)get()
get()方法提供了更为宽松的方式去访问字典项,当键不存在时,get()方法并不会报错,只会默默的返回一个none,表示啥的都没找到:


如果不知道一个键是否在字典中,那么可以使用成员资格操作符(in和not in)来判断:

如果需要清空一个字典,则使用clear()方法:

4)copy()
copy()方法是用于浅拷贝整个字典的,其实与赋值时不一样的:

5)pop()
pop()是给定键弹出对应的值,popitem()是弹出对应的项:
6)update()
我们可以利用update()来更新字典:








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-3-16 18:26:30 | 显示全部楼层
字典和集合(三)
Python的字典是对数学中映射概念支持的直接体现,然而今天我学习了字典的“表亲”:集合。
集合在Python中的最大的特点就是:确定性,互异性,无序性。
1)创建集合
创建集合有两种方法:一种是直接把一堆元素用大括号({})括起来;另一种是用set()内置函数。

现在要求去除列表[1,2,3,4,5,5,4,3,2,1]中重复的元素,如果还没有学习集合,代码就是这个样子的:

学习了集合之后,就可以这么学:

由于set()创造的集合内部是无序的,所以再调用list()将无序的集合转化成列表就不能保证原来的列表顺序了。
ps:set()里的内容要用列表的形式。
2)访问集合
由于集合中的元素是无序的,所以并不能像序列那样用下标来进行访问,但是可以使用迭代把集合中数据一个一个读取出来:


当然也可以使用in或not in 判断一个元素是否在集合中已经存在。
使用add()方法可以为集合添加元素,使用remove()方法可以删除集合中的元素:

通过这张图可以看出来,add()和remove()这两个函数一次只能添加或删除一个元素。
3)不可变集合
有时候希望集合中的数据具有稳定性,也就是说,像元组一样,不能随意地增加或删除集合中的元素。那么可以定义成不可变集合,这里使用的是frozenset()函数,就是把集合frozen(冰冻)起来:

ps:frozenset()里的内容必须是一个集合。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-3-21 13:34:38 | 显示全部楼层
格式化
什么是字符串的格式化?又为什么需要对字符串进行格式化?格式化字符串,就是按照统一的规格去输出一个字符串。如果规格不统一,就很可能造成误会。字符串格式化,正是帮助我们纠正并规范这类问题而存在。
1)format()
format()接收位置参数和关键字参数,二者均传递一个replacement的字段,而这个replacement字段在字符串内用大括号({})表示:


其实也可以这样:
字符串中的{0},{2},{1},{a},{b}和{c}与位置有关,依次被format()的三个参数替换,那么format()的三个参数就称之为位置参数和关键字参数。
另外,也可以综合位置参数和关键字参数在一起使用,但要注意的是,如果一起使用,那么位置参数必须要在关键字参数之前,否则就会出错。
最后来看一个例子:
可以看到,位置参数{1}跟平常不同,后边多了个冒号。在替换域中,冒号表示格式化符号的开始,“.2f”的意思是四舍五入到保留到两位小数点,而f的意思是浮点数,所以按格式化符号的要求打印出了3.14。

二 格式转换

b、d、o、x分别是二进制、十进制、八进制、十六进制。


数字
格式
输出
描述
3.1415926
{:.2f}
3.14
保留小数点后两位
3.1415926
{:+.2f}
3.14
带符号保留小数点后两位
-1
{:+.2f}
-1
带符号保留小数点后两位
2.71828
{:.0f}
3
不带小数
1000000
{:,}
1,000,000
以逗号分隔的数字格式
0.25
{:.2%}
25.00%
百分比格式
1000000000
{:.2e}
1.00E+09
指数记法
25
{0:b}
11001
转换成二进制
25
{0:d}
25
转换成十进制
25
{0}
31
转换成八进制
25
{0:x}
19
转换成十六进制

三 对齐与填充

数字
格式
输出
描述
5
{:0>2}
05
数字补零 (填充左边, 宽度为2)
5
{:x<4}
5xxx
数字补x (填充右边, 宽度为4)
10
{:x^4}
x10x
数字补x (填充右边, 宽度为4)
13
{:10}
13
右对齐 (默认, 宽度为10)
13
{:<10}
13
左对齐 (宽度为10)
13
{:^10}
13
中间对齐 (宽度为10)




2)格式化操作符:%
刚才的是字符串的格式化方法,现在来谈谈字符串所独享的一个操作符:%。
当%的左右均为数字的时候,它表示求余数的操作;但当它出现在字符中的时候,它表示的是格式化操作符。
%c:格式化字符及其ASCLL码


%s:格式化字符串

%d:格式化整数

%o:格式化无符号八进制数

12表示十进制10的八进制,而10就是十进制的10.
%x:
格式化无符号十六进制数. %X:格式化无符号十六进制数(大写)


a与A表示十进制10的十六进制,而10就是十进制的10.

%f:格式化浮点数字,可指定小数点后的精度


%e与%E:用科学计数法格式化浮点数

%g与%G:根据值得大小决定使用%f或%e

下面是格式化操作符的辅助命令(应用在格式化符号内):


m.n:m显示的是最小总宽度,n是小数点后的位数

-:结果左对齐(一般没用)
+:在正数前面显示加号
(一般没用)

#:在八进制数前面显示‘0o’,在十六进制数前面显示‘0x’




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-3-22 15:48:54 | 显示全部楼层
本帖最后由 Mint97 于 2020-3-22 16:05 编辑

列表,元组和字符串



复习列表
列表就是把一些有关联的数据保存下来。
1 创建列表
创建列表就是用中括号把数据括起来(数据之间用逗号分隔),为了可以随时对它进行引用和修改,可以引用一个变量名。

2 向列表里添加元素
append() 只支持一个参数
extend() 可以通过列表的形式添加多个元素。()里面是列表
insert()有两个参数:第一个是索引值,第二个是待插入的元素值。
3 从列表中获取元素
通过索引值直接获取列表中的某个元素
例:
number = [1,2,3,4,5]
number[0]
也可以通过len()函数来获取列表的长度,再减一就是这个列表最后一个元素的索引值。
ps:列表的索引值是从0开始的。
number = [1,2,3,4,5]
number[len(number)-1]
4 修改列表

通过temp这个变量来修改列表。
5 从列表删除元素
remove()通过指定某个元素来删除,不需要其索引值

pop()需要索引值
del  其是python的语句,可以删除整个列表
例:

6 列表切片
切片语法的引入,使得python的列表真正走向了高端。
利用索引值,我们可以从列表中获取一个元素,但想要一次性获取多个元素,这就需要引用切片语法。


7 列表的多个功能
count()方法的作用是统计某个元素在列表中出现的次数
index()方法的作用是返回某个元素在列表中的索引值
reverse()方法的作用是将整个列表原地翻转
sort()方法的作用是对列表元素进行排序
例:

学习(一):元组
元组(tuple)是只可读,不可写,不可以随意修改(插入\删除)。且列表与元组是非常相似的。
1 创建和访问元组
元组,除了不可改变这个显著特征之外,还有一个和列表不同的是创建元组是用小括号()
访问元组和列表是一样的,也是通过索引值和切片来实现。

2 更新和删除元组
元组是不可变的,但这并不妨碍我们创建一个新的同名元组,要想修改元组,可以通过拆开原来的元组,再加上一个别的元组,在组合起来,然后用同名的变量。
例:

删除元组中的元素,也是创建一个新的同名元组,拆开原来的元组,漏掉一个元素,再组合起来。
del语句也可以删除整个元组。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

46

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
 楼主| 发表于 2020-3-30 22:31:20 | 显示全部楼层
列表,元组和字符串(三)
序列
其实列表,元组和字符串有很多共同点:
1 都可以通过索引得到每一个元素
2 默认索引值总是从0开始
3 可以通过切片的方式得到一个范围内的元素的集合
4 有很多共同生物操作符
所以,这些都可以叫做序列
序列的BIF
1)list([iterable])
list()方法用于把一个可迭代对象装换为列表。而所谓迭代是重复反馈过程的活动,其目的通常是为了接近并达到所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值,就目前来说,迭代就是for循环。
list()方法要么不带参数,要么就带一个可迭代对象作为参数:

list()方法的实现过程就是新建一个列表,然后循环通过索引迭代参数的每一个元素并加入列表,迭代完毕后返回列表。
2)tuple([iterable])
tuple()方法用于把一个可迭代对象转换为元组,具体用法和list()一样。
3)str(obj)
str()方法用于把obj对象转换为字符串。
4)len(sub)
len()用于返回sub参数的长度。
5)sum(iterable[,start])
sum()方法用于返回序列iterable的所有元素值的总和,且sum()方法有一个可选参数(start),如果设置该参数,表示从该值开始加起,默认值是0,也就是在元素的总和之后,再加上start这个参数的数值:

6)sorted(iterable,key=None,reverse=False)
sorted()方法用于返回一个排序的列表,默认从小到大排,与list.sort()是一样的。
7)enumerate(iterable)
enumerate()方法生成由二元组(二元组就是元素数量为2的元组)构成的一个迭代对象,每个二元组由可迭代参数的索引号及其对应的元素组成,例如:

8)zip(iter1[,iter2[……]])
zip()方法用于返回由各个可迭代参数共同组成的元组,例如:










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-28 23:38 , Processed in 0.027755 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表