python鱼c讲堂55讲_鱼C《零基础入门学习Python》10-17节课时知识点总结

第10讲:列表:一个打了激素的数组

1.列表都可以存放一些什么东西?

我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型。

2. 向列表增加元素有哪些方法?

三种方法想列表增加元素,分别是:append()、extend() 和 insert()。

3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?

append() 方法是将参数作为一个元素增加到列表的末尾。

extend() 方法则是将参数作为一个列表去扩展列表的末尾。

4.注明插入的位置insert

1 >>> name = ['F', 'i', 'h', 'C']2 >>> name.insert(2, 's')3 >>>name4 ['F', 'i', 's', 'h', 'C']

第11讲:列表:一个打了激素的数组2

1. 请问 list1[0] 和 list1[0:1] 一样吗?

不一样,list1[0] 返回第0个元素的值,list1[0:1] 返回一个只含有第0个元素的列表。

2. 在进行分片的时候,我们知道分片的开始和结束位置需要进行指定,但其实还有另外一个隐藏的设置:步长。

在普通的分片操作中,步长默认设置为1,表示逐个遍历元素。其实我们可以人为调整步长以达到不可告人的秘密。

1 >>> list1 = [1, 3, 2, 9, 7, 8]2 >>> list1[::2]3 [1, 2, 7]4 >>> list1[::-2]5 [8, 9, 3]6 >>>list1[::0]7 Traceback (most recent call last):8 File "", line 1, in

9 list1[::0]10 ValueError: slice step cannot be zero11 >>> list1[::1.2]12 Traceback (most recent call last):13 File "", line 1, in

14 list1[::1.2]15 TypeError: slice indices must be integers or None or have an __index__ method

步长只能为非零的整数,可以是正整数,也可以是负整数

3.列表的复制与增加别名:

1 >>> list1 = [1, 3, 2, 9, 7, 8]2 >>> list2 =list1[:]3 >>>list24 [1, 3, 2, 9, 7, 8]5 >>> list3 =list16 >>>list37 [1, 3, 2, 9, 7, 8]8 >>>list1.sort()9 >>>list110 [1, 2, 3, 7, 8, 9]11 >>>list212 [1, 3, 2, 9, 7, 8]13 >>>list314 [1, 2, 3, 7, 8, 9]

第13讲:元组

1. 请用一句话描述什么是列表?再用一句话描述什么是元组?

答:列表:一个大仓库,你可以随时往里边添加和删除任何东西。

元组:封闭的列表,一旦定义,就不可改变(不能添加、删除或修改)。

2.元组的属性

3.元组的标志是","

所有的多对象的、逗号分隔的、没有明确用符号定义的这些集合默认的类型都是元组

1 >>> x, y, z = 1, 2, 3

2 >>>type(x)3

4 >>> h =x, y, z5 >>>type(h)6

第14节:字符串:各种奇葩的内置方法

1.还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?

(1)'''   '''

1 >>> str1 = '''待我长发及腰,将军归来可好?2 此身君子意逍遥,怎料山河萧萧。3 天光乍破遇,暮雪白头老。4 寒剑默听奔雷,长枪独守空壕。5 醉卧沙场君莫笑,一夜吹彻画角。6 江南晚来客,红绳结发梢。'''

7 >>> print(str1)8 待我长发及腰,将军归来可好?9 此身君子意逍遥,怎料山河萧萧。10 天光乍破遇,暮雪白头老。11 寒剑默听奔雷,长枪独守空壕。12 醉卧沙场君莫笑,一夜吹彻画角。13 江南晚来客,红绳结发梢。

(2) \

1 >>> str2 = '待卿长发及腰,我必凯旋回朝。\2 昔日纵马任逍遥,俱是少年英豪。\3 东都霞色好,西湖烟波渺。\4 执枪血战八方,誓守山河多娇。\5 应有得胜归来日,与卿共度良宵。\6 盼携手终老,愿与子同袍。'

7 >>> print(str2)8 待卿长发及腰,我必凯旋回朝。昔日纵马任逍遥,俱是少年英豪。东都霞色好,西湖烟波渺。执枪血战八方,誓守山河多娇。应有得胜归来日,与卿共度良宵。盼携手终老,愿与子同袍。

(3)分开用 ' '

1 >>> str3 = ('待卿长发及腰,我必凯旋回朝。'

2 '昔日纵马任逍遥,俱是少年英豪。'

3 '东都霞色好,西湖烟波渺。'

4 '执枪血战八方,誓守山河多娇。'

5 '应有得胜归来日,与卿共度良宵。'

6 '盼携手终老,愿与子同袍。')7 >>> print(str3)8 待卿长发及腰,我必凯旋回朝。昔日纵马任逍遥,俱是少年英豪。东都霞色好,西湖烟波渺。执枪血战八方,誓守山河多娇。应有得胜归来日,与卿共度良宵。盼携手终老,愿与子同袍。

2. 三引号字符串通常我们用于做什么使用?

三引号字符串不赋值的情况下,通常当作跨行注释使用.

3. file1 = open('C:\windows\temp\readme.txt', 'r') 表示以只读方式打开“C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改?

会报错是因为在字符串中,我们约定“\t”和“\r”分别表示“横向制表符(TAB)”和“回车符”(详见:http://bbs.fishc.com/thread-39140-1-1.html),因此并不会按照我们计划的路径去打开文件。

Python 为我们铺好了解决的道路,只需要使用原始字符串操作符(R或r)即可:

1 >>> file1 = open(r'C:\windows\temp\readme.txt', 'r')

4.请写一个密码安全性检查的脚本代码:check.py

# 密码安全性检查代码

#

# 低级密码要求:

#   1. 密码由单纯的数字或字母组成

#   2. 密码长度小于等于8位

#

# 中级密码要求:

#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合

#   2. 密码长度不能低于8位

#

# 高级密码要求:

#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合

#   2. 密码只能由字母开头

#   3. 密码长度不能低于16位

'''这是楼主用正则表达是的方法写的,有点麻烦'''

1 importre2 deflowprint():3 print("请按以下方式提升您的密码安全级别:\n\4 1.密码必须由数字、字母及特殊字符三种组合 \n\5 2.密码只能由字母开头\n\6 3.密码长度不能低于16位")7 defhighprint():8 print("请继续保持!")9 defjudgeishigh(temp):10 flag =011 specialsignal = r'~!@#$%^&*()_=-/\,.?<>;:[]{}|'

12 length =len(temp)13 if len(temp) >= 16:14 if re.search('.*([a-z,A-Z]).*',temp[0]):15 if re.search('.*([0-9]).*',temp):16 for i intemp:17 if i inspecialsignal:18 flag = 1

19 ifflag:20 print("您的密码安全级别评定为:高")21 highprint()22 else:23 judgeismid(temp)24 else:25 judgeismid(temp)26 else:27 judgeismid(temp)28 else:29 judgeismid(temp)30 defjudgeismid(temp):31 specialsignal = r'~!@#$%^&*()_=-/\,.?<>;:[]{}|'

32 if len(temp) >= 8:33 if re.search('.*([0-9]).*',temp) and re.search('.*([a-z,A-Z]).*',temp):34 print("您的密码安全级别评定为:中")35 lowprint()36 else:37 if re.search('.*([specialsignal]).*',temp) and re.search('.*([a-z,A-Z]).*',temp):38 print("您的密码安全级别评定为:中")39 lowprint()40 else:41 if re.search('.*([specialsignal]).*',temp) and re.search('.*([0-9]).*',temp):42 print("您的密码安全级别评定为:中")43 lowprint()44 else:45 print("您的密码安全级别评定为:低")46 lowprint()47 else:48 print("您的密码安全级别评定为:低")49 lowprint()50

51

52

53 if __name__ == '__main__':54 temp = input("请输入需要检查的密码组合:")55 judgeishigh(temp)

'''这是给出的参考答案,用的是for循环,依次判断,思路比较明白'''

1 #密码安全性检查代码

2 #3 #低级密码要求:

4 #1. 密码由单纯的数字或字母组成

5 #2. 密码长度小于等于8位

6 #7 #中级密码要求:

8 #1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合

9 #2. 密码长度不能低于8位

10 #11 #高级密码要求:

12 #1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合

13 #2. 密码只能由字母开头

14 #3. 密码长度不能低于16位

15

16 symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''

17 chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

18 nums = '0123456789'

19

20 passwd = input('请输入需要检查的密码组合:')21

22 #判断长度

23 length =len(passwd)24

25 while (passwd.isspace() or length ==0) :26 passwd = input("您输入的密码为空(或空格),请重新输入:")27

28 if length <= 8:29 flag_len = 1

30 elif 8 < length < 16:31 flag_len = 2

32 else:33 flag_len = 3

34

35 flag_con =036

37 #判断是否包含特殊字符

38 for each inpasswd:39 if each insymbols:40 flag_con += 1

41 break

42

43 #判断是否包含字母

44 for each inpasswd:45 if each inchars:46 flag_con += 1

47 break

48

49 #判断是否包含数字

50 for each inpasswd:51 if each innums:52 flag_con += 1

53 break

54

55 #打印结果

56 while 1:57 print("您的密码安全级别评定为:", end='')58 if flag_len == 1 or flag_con == 1:59 print("低")60 elif flag_len == 2 or flag_con == 2:61 print("中")62 else:63 print("高")64 print("请继续保持")65 break

66

67 print("请按以下方式提升您的密码安全级别:\n\68 \t1. 密码必须由数字、字母及特殊字符三种组合\n\69 \t2. 密码只能由字母开头\n\70 \t3. 密码长度不能低于16位'")71 break

第15节:字符串:各种奇葩的内置方法

1.字符串的格式化:format

(1)位置参数0,1,3.。。。。

1 >>> "{0} love {1}.{2}".format("I","FishC","com")2 'I love FishC.com'

(2)关键字参数

在关键字参数传递时,一定要写清楚变量的对应关系( “ = ”),顺序不重要

1 >>> "{a} love {b}.{c}".format(a = "I",b = "FishC",c = "com")2 'I love FishC.com'

1 >>> "{a} love {b}.{c}".format(c= "I",b = "FishC",a = "com")2 'com love FishC.I'

1 >>> "{a} love {b}.{c}".format(b = "FishC",c = "com",a = "I")2 'I love FishC.com'

若不写赋值关系则为错误:

1 >>> "{a} love {b}.{c}".format("I","FishC", "com")2 Traceback (most recent call last):3 File "", line 1, in

4 "{a} love {b}.{c}".format("I","FishC", "com")5 KeyError: 'a'

(3)位置参数与关键字参数一起用时:

位置参数必须在关键字参数之前

(4)打印花括号

1 >>> "{{1}}".format("不打印", "打印")2 '{1}'

(5)截断浮点数输出

1 >>> '{0}{1:.2f}'.format('Pi =', 3.1415)2 'Pi = 3.14'

2. 根据说明填写相应的字符串格式化符号

符号

说明

%c

格式化字符及其ASCII码

%s

格式化字符串

%d

格式化整数

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化定点数,可指定小数点后的精度

%e

用科学计数法格式化定点数

%E

作用同%e,用科学计数法格式化定点数

%g

根据值的大小决定使用%f或者%e

%G

作用同%g,根据值的大小决定使用%F或者%E

3。%#再加格式化符号,可以显示进制类型

1 >>> "%#o" %10

2 '0o12'

3 >>> "%#x" %10

4 '0xa'

第16节:序列!序列!

1. 我们根据列表、元祖和字符串的共同特点,把它们三统称为什么?

序列,因为他们有以下共同点:

1)都可以通过索引得到每一个元素

2)默认索引值总是从0开始(当然灵活的Python还支持负数索引)

3)可以通过分片的方法得到一个范围内的元素的集合

4)有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)

2. 请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元祖和字符串?

list([iterable]) 把可迭代对象转换为列表

tuple([iterable]) 把可迭代对象转换为元祖

str(obj)  把对象转换为字符串

3.“迭代”的概念

所谓迭代,是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。

4.max(),min(),sum(),sorted(),reversed()都只使用于同种类型之间。

5.枚举函数:enumerate()

1 >>> a = [423,35,5345,5235,535]2 >>>enumerate(a)3

4 >>> print(enumerate(a))5

6 >>> print(list(enumerate(a)))7 [(0, 423), (1, 35), (2, 5345), (3, 5235), (4, 535)]

6.打包函数:zip

1 >>> a = [1,2,3,4,5,6,7,8,9]2 >>> b = [4,5,6,7,8]3 >>>zip(a,b)4

5 >>> print(list(zip(a,b)))6 [(1, 4), (2, 5), (3, 6), (4, 7), (5, 8)]

注:5,6直接输出均为迭代器对象

第17节:函数——python的乐高积木

1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?

使用函数:

0) 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要N倍代码)

1) 可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)

2) 使序更容易阅读(没有人会希望看到一个程序重复一万行“I love FishC.com”)

2.编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。

1 importre2 defgcd(x,y):3 c =x4 min_two =y5 whilec :6 x =c7 y =min_two8 min_two =min(x,y)9 max_two =max(x,y)10 c = max_two %min_two11 print(min_two)12 if __name__=='__main__':13 f = input("请输入两个整数(请以逗号隔开):")14 l = f.find(',')15 a =int(f[:l])16 b = int(f[l+1:])17 gcd(a,b)

3.编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。

1 defDec2bin(x):2 strings = ''

3 consult =04 while consult != 1:5 consult = x //2

6 remainder = x - 2*consult7 strings = str(remainder) +strings8 x =consult9 strings = '1'+strings10 print(strings)

1 >>> Dec2bin(32)2 100000

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值