zoukankan      html  css  js  c++  java
  • 鱼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 emp eadme.txt', 'r') 表示以只读方式打开“C:windows emp eadme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改?
      
    会报错是因为在字符串中,我们约定“ ”和“ ”分别表示“横向制表符(TAB)”和“回车符”(详见:http://bbs.fishc.com/thread-39140-1-1.html),因此并不会按照我们计划的路径去打开文件。
       
    Python 为我们铺好了解决的道路,只需要使用原始字符串操作符(R或r)即可:

    1 >>> file1 = open(r'C:windows	emp
    eadme.txt', 'r')

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

    # 密码安全性检查代码

    #

    # 低级密码要求:

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

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

    #

    # 中级密码要求:

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

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

    #

    # 高级密码要求:

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

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

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

     

    '''这是楼主用正则表达是的方法写的,有点麻烦'''
    1
    import re 2 def lowprint(): 3 print("请按以下方式提升您的密码安全级别: 4 1.密码必须由数字、字母及特殊字符三种组合 5 2.密码只能由字母开头 6 3.密码长度不能低于16位") 7 def highprint(): 8 print("请继续保持!") 9 def judgeishigh(temp): 10 flag = 0 11 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 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'~!@#$%^&*()_=-/\,.?<>;:[]{}|' 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 = 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("请按以下方式提升您的密码安全级别: 68 1. 密码必须由数字、字母及特殊字符三种组合 69 2. 密码只能由字母开头 70 3. 密码长度不能低于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
  • 相关阅读:
    读后感
    周总结(五)【2019.7.292019.8.4】
    周总结(六)【2019.8.52019.8.11】
    “教室派”APP使用体验
    ios的内存管理差异和iso6与以前内存管理的兼容
    UITextView 和UILable 设置行间距
    IOS 各种问题收藏贴
    __bridge,__bridge_transfer和__bridge_retained
    键盘事件的处理
    JSONKit 使用示例
  • 原文地址:https://www.cnblogs.com/shixiaomiao/p/3888804.html
Copyright © 2011-2022 走看看