鱼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 >>> name
4 [‘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 "<pyshell#47>", line 1, in <module>
 9     list1[::0]
10 ValueError: slice step cannot be zero
11 >>> list1[::1.2]
12 Traceback (most recent call last):
13   File "<pyshell#48>", line 1, in <module>
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 >>> list2
 4 [1, 3, 2, 9, 7, 8]
 5 >>> list3 = list1
 6 >>> list3
 7 [1, 3, 2, 9, 7, 8]
 8 >>> list1.sort()
 9 >>> list1
10 [1, 2, 3, 7, 8, 9]
11 >>> list2
12 [1, 3, 2, 9, 7, 8]
13 >>> list3
14 [1, 2, 3, 7, 8, 9]

第13讲:元组

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

答:列表:一个大仓库,你可以随时往里边添加和删除任何东西。
元组:封闭的列表,一旦定义,就不可改变(不能添加、删除或修改)。

2.元组的属性

3.元组的标志是","

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

1 >>> x, y, z = 1, 2, 3
2 >>> type(x)
3 <class ‘int‘>
4 >>> h = x, y, z
5 >>> type(h)
6 <class ‘tuple‘>

第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. 密码必须由数字、字母或特殊字符(仅限:[email protected]#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
#   2. 密码长度不能低于8位
#
# 高级密码要求:
#   1. 密码必须由数字、字母及特殊字符(仅限:[email protected]#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
#   2. 密码只能由字母开头
#   3. 密码长度不能低于16位

‘‘‘这是楼主用正则表达是的方法写的,有点麻烦‘‘‘ 1 import re
 2 def lowprint():
 3     print("请按以下方式提升您的密码安全级别:\n 4           1.密码必须由数字、字母及特殊字符三种组合 \n 5           2.密码只能由字母开头\n 6           3.密码长度不能低于16位")
 7 def highprint():
 8     print("请继续保持!")
 9 def judgeishigh(temp):
10     flag = 0
11     specialsignal = r‘[email protected]#$%^&*()_=-/\,.?<>;:[]{}|‘
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 in temp:
17                     if i in specialsignal:
18                         flag = 1
19                 if flag:
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 def judgeismid(temp):
31     specialsignal = r‘[email protected]#$%^&*()_=-/\,.?<>;:[]{}|‘
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. 密码必须由数字、字母或特殊字符(仅限:[email protected]#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合
 9 #   2. 密码长度不能低于8位
10 #
11 # 高级密码要求:
12 #   1. 密码必须由数字、字母及特殊字符(仅限:[email protected]#$%^&*()_=-/,.?<>;:[]{}|\)三种组合
13 #   2. 密码只能由字母开头
14 #   3. 密码长度不能低于16位
15
16 symbols = r‘‘‘`[email protected]#$%^&*()_+-=/*{}[]\|‘";:/?,.<>‘‘‘
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 = 0
36
37 # 判断是否包含特殊字符
38 for each in passwd:
39     if each in symbols:
40         flag_con += 1
41         break
42
43 # 判断是否包含字母
44 for each in passwd:
45     if each in chars:
46         flag_con += 1
47         break
48
49 # 判断是否包含数字
50 for each in passwd:
51     if each in nums:
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("请按以下方式提升您的密码安全级别:\n68     \t1. 密码必须由数字、字母及特殊字符三种组合\n69     \t2. 密码只能由字母开头\n70     \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 "<pyshell#17>", line 1, in <module>
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 <enumerate object at 0x01097DA0>
4 >>> print(enumerate(a))
5 <enumerate object at 0x010D6A30>
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 <zip object at 0x010D6B48>
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 import re
 2 def gcd(x,y):
 3     c = x
 4     min_two = y
 5     while c :
 6         x = c
 7         y = min_two
 8         min_two = min(x,y)
 9         max_two = max(x,y)
10         c = max_two % min_two
11     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 def Dec2bin(x):
 2     strings = ‘‘
 3     consult = 0
 4     while consult != 1:
 5         consult = x //2
 6         remainder = x - 2*consult
 7         strings = str(remainder) + strings
 8         x = consult
 9     strings = ‘1‘+ strings
10     print(strings)
1 >>> Dec2bin(32)
2 100000

鱼C《零基础入门学习Python》10-17节课时知识点总结,布布扣,bubuko.com

时间: 2024-12-14 05:09:34

鱼C《零基础入门学习Python》10-17节课时知识点总结的相关文章

鱼C《零基础入门学习Python》1—9节课时知识点总结

第一节:我和python的第一次亲密接触 0. Python 是什么类型的语言? 答:脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比 C语言.C++语言 或 Java 之类的系统编程语言要简单容易.也让脚本语言另有一些属于脚本语言的特性: 语法和结构通常比较简单 学习和使用通常比较简单 通常以容易修改程序的“解释”作为运行方式,而不需要

【Python教程】《零基础入门学习Python》(小甲鱼)

[Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609 原文地址:https://www.cnblogs.com/F4NNIU/p/9765629.html

《零基础入门学习Python》【第一版】视频课后答案第004讲

1.while语句中,当条件为真时,它会一直循环下去,比如下面的例子,不过可以用Ctral + C来强制结束 while 'C': print("i love you") 2.观察打印次数 i = 10 while i > 0: print("i love you") i = i - 1 打印10次 ‘i love you’ 3.注意and的用法(表示两边都为真),请写出与10<a<19等价的表达式 10 < a < 19 10 <

零基础入门学习python[小甲鱼]--就这么愉快地开始吧01

1. 从IDIE启动python IDLE是一个python  shell,shell的意思就是"外壳",从基本上说,就是一个通过输入本与程序交互的途径.像windows的cmd的窗口,像linux那个黑乎乎的命令窗口,它们都是shell,利用它们,就可以给操作系统下达命令.同样,可以利用IDLE这个shell与pytho进行互动. >>>这个提示符含义是:python已经准备好了,在等着输入python指令呢: baishuchaodeMacBook-Pro:~ x

零基础入门学习Python

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 .Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起.常

《零基础入门学习Python》【第一版】视频课后答案第005讲

测试题答案: 0.Python中: int:整型 bool:布尔类型 float:浮点型 str:字符串类型 1.为什么布尔类型(bool)的TRUE和FALSE分别用0和1表示? 计算机只认识二进制,由于二进制只有两个数0和1,因此用0和1来表示在合适不过了,因为不用浪费在资源在转换的过程上 2.使用int()将小数转换为整数,结果是向上取整还是向下取整? 向下取整 3.人类思维是习惯“四舍五入”法,有什么办法使得int()按照“四舍五入”的方式取整? 加0.5 例如:8.3----8,int

《零基础入门学习Python》【第一版】视频课后答案第002讲

测试题答案: 0. 什么是BIF?BIF 就是 Built-in Functions,内置函数.为了方便程序员快速编写脚本程序(脚本就是要编程速度快快快!!!),Python 提供了非常丰富的内置函数,我们只需要直接调用即可,例如 print() 的功能是“打印到屏幕”,input() 的作用是接收用户输入(注:Python3 用 input() 取代了 Python2 的 raw_input(),用法如有不懂请看视频讲解). 1. 用课堂上小甲鱼教的方法数一数 Python3 提供了多少个 B

零基础入门学习java第十一节:Java中的类和对象

今天要说的是Java中两个非常重要的概念——类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外在特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征,那么对象呢?我们口口声声说要面向对象编程,可是找了这么久也没找到对象,这还怎么编程(滑稽).此对象非彼对象,Java中的对象是某个具体类的实例,就好比你和我都是人类这个大类的一个实例个体,也就是说,我们都是人类的一个具体对象,我们有各自的名字和年龄. 那为什么要用类和对象这样的概念呢? 这是一个好

大牛整理最全Python零基础入门学习资料

大牛整理最全Python零基础入门学习资料 0 发布时间:『 2017-11-12 11:56 』     帖子类别:『人工智能』  阅读次数:3504 (本文『大牛整理最全Python零基础入门学习资料』的责任编辑:老王) 摘要:大牛整理最全Python零基础入门学习资料 Python数据类型--数字 Python Number 数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. var1 = 1 var2 = 10 您也可以使