Python培训第六天笔记

一、上堂回顾

1.默写题目

1.判断一个数是否是质数

2.创建一个非空元组,遍历其中的元素

3.创建一个非空字典,至少采用两种方式遍历该字典

dict1 = {1:10,2:20,3:30}
​
#1
for key in dict1L:
    print(key,dict1[key])
    
#2.
for key in dict1.keys():
    print(key,dict1[key])
    
#3
for value in dict1.values():
    print(value)
    
 #4.
for i,key in enumerate(dict1):
    pass
​
#5.
for key,value in dict1.items():
    print(key,value)

2.知识点回顾

1.break和continue,pass

​ 重点掌握break的使用

​ 掌握break和continue的区别

  1. Number

    ​ int() float()

    ​ 随机数功能

    ​ random.choice(列表)

    ​ random.randrange(start,end,step)

    ​ random.random() 0~1

  2. tuple

    重点掌握list

  3. dict【掌握】

    ​ 字典的使用和key的特点

    ​ 遍历

二、Set集合

1.概念

Python中的集合跟数学上的集合是一致的

特点;不允许有重复元素,可以进行交集,并集或者差集的计算

set和dict类似,和dict的区别在于:set相当于只是存储了key的集合

本质:无序且无重复元素的集合

2.创建

代码演示:

#注意:set的创建没有特有的符号,主要是通过list,tuple,dict进行创建
#格式:集合名 = set(list或者tuple或者dict)    类似于list()    tuple()
#list
s1 = set([1,43,4,546,5,43,1,4])
print(s1)
#注意:重复元素在set中会被自动过滤掉
​
#tuple
s2 = set((34,54,54,5,56))
print(s2)
​
#dict
#注意:使用dict创建set的时候,只是将key作为set的元素进行创建
s3 = set({"zhangsan":20,"lisi":409,"jack":5748})
print(s3)

3.操作

3.1添加

代码演示:

#1.添加
#1.1add():在set的末尾添加元素
s1 = set([1,2,3,4,5])
print(s1)
s1.add(6)
print(s1)
​
#注意:如果需要添加的元素已经存在的话,则添加失败
s1.add(3)
print(s1)
#print(s1.add(3))
#print(s1.add(7))
​
#在集合中添加list----->不能
#s1.add([7,8,9])   #TypeError: unhashable type: 'list'
​
#在集合中添加tuple---->能
s1.add((7,8,9))
print(s1)
​
#在集合中添加dict---->不能
#s1.add({10:1,20:2})     #TypeError: unhashable type: 'dict'
#print(s1)
​
#1.2update()  插入【打碎添加,类似于extend的使用】
s2 = set([1,2,3,4,5])
print(s2)
#update不能添加单个元素
#s2.update(6)  #TypeError: 'int' object is not iterable
s2.update([6,7])
print(s2)
​
s2.update((8,9))
print(s2)
​
s2.update({10:1,20:2})
print(s2)
​
s2.update("good")
print(s2)
​
#注意区分add()和update()

3.2删除

代码演示:

#2.删除
s3 = set([54,64,6,6])
s3.remove(64)
print(s3)

3.3遍历

代码演示:

3.遍历
#注意:set中是没有索引
for element in s3:
    print(element)
​
for i,element in enumerate(s3):
    print(i,element)

3.4交集和并集

代码演示:

#4.交集和并集
s4 = set([43,54,5,6])
s5 = set([545,4,65,6,75])
​
#交集:&【按位与】   and
r1 = s4 & s5
print(r1)
print(type(r1))
​
#并集:|【按位或】  or
r2 = s4 | s5
print(r2)

三、简单算法

代码演示:

list1 = [43,4,34,23,3,87,87]
​
#方式一
#定义一个变量,记录最大值,
maxValue = list1[0]
#遍历列表,用maxValue和列表中的其他元素 进行一一比对
for num in list1:
    if num > maxValue:
        #给maxValue重新赋值
        maxValue = num
print(maxValue)
​
#方式二
maxValue = list1[0]
maxIndex = 0
for i in range(1,len(list1)):
    if list1[i] > maxValue:
        maxValue = list1[i]
        maxIndex = i
print(maxValue,maxIndex)

1.排序

需求:求列表中的最大值

max()

1.1冒泡排序

排序思路:比较两个相邻下标所对应的元素,如果符合条件则交换位置

举例:列表中的元素从左到右存储,经过第一次的冒泡排序之后,【以升序为例】,最大值出现在最右边

规律:见图

代码演示:

list1 = [43,545,4,124,34,323,54]
#冒泡排序
#外层循环:控制比较的轮数
for out in range(0,len(list1) - 1):
    #内层循环:控制每一轮中比较的次数,兼顾参与比较的下标
    for inner in range(0,len(list1) - 1 - out):
        #以升序为例,如果符合条件,则两个相邻的元素交换位置
        if list1[inner] > list1[inner + 1]:
            list1[inner],list1[inner + 1] = list1[inner + 1],list1[inner]
​
print(list1)

1.2选择排序

排序思路:固定一个下标,然后使用这个下标对应的元素和列表中其他的元素进行依次比对,如果符合条件则交换位置

举例:列表中的元素从左到右存储,经过第一次的选择排序之后,【以升序为例】,最小值出现在最左边

规律:见图

代码演示:

list1 = [43,545,4,124,34,323,54]
​
#选择排序
#外层循环:控制比较的轮数
for out in range(0,len(list1) - 1):
    #内层循环:控制每一轮中比较的次数,兼顾参与比较的下标
    for inner in range(out + 1,len(list1)):
        #以升序为例,符合条件则交换位置
        if list1[out]  > list1[inner]:
            list1[out],list1[inner] = list1[inner],list1[out]
​
print(list1)

2.查找

2.1顺序查找

查找思路:遍历指定列表,依次将要查找的数据和列表中的元素进行依次比对,如果相等,则输出索引

代码演示:

#顺序查找
list1 = [43,545,4,124,34,323,54]
​
keyword = 124
​
#遍历列表
for i in range(len(list1)):
    #和列表中的元素进行比对
    if keyword == list1[i]:
        print(i)
​
​
#求一个列表中的第二大元素的下标
#思路:1.拷贝列表   2.对原列表排序,得到第二大值   3.在副本列表中进行顺序查找

2.2二分法查找

查找思路:

​ a.前提条件:必须是排好序的列表【局限性】

​ b.特点:通过折半来缩小查找范围,提高查找效率【举例:假设有一个列表,升序的,如果keyword大于中间下标对应的元素,则直接在后半部门查找】

代码演示:

#二分法查找
​
#前提:列表必须是有序的【以升序为例】
list1 = [23,43,45,67,88,90,100]
#list1.reverse()
#print(list1)   #[100, 90, 88, 67, 45, 43, 23]
​
#待查找的数据
key = 90
​
#定义变量,用于记录下标
#下标的最小值
left = 0
#下标的最大值
right = len(list1) - 1
​
#当查找的过程中,left和right是根据不同的条件进行慢慢的靠拢,当left == right的时候,说明整个列表被查找了一遍
#如果没有获取到key,则说明key在列表中是不存在的
while left <= right:
    #计算中间的下标【循环没执行一次,middle都需要被重新计算一次】
    middle = (left + right) // 2
​
    #将待查找的数据和中间下标对应的元素进行比较
    if key > list1[middle]:
        #更改区间
        left = middle + 1
    elif key < list1[middle]:
        #更改区间
        right = middle - 1
    else:
        print("元素的下标为:",middle)
        #会出现这种情况,当left<right的时候,已经查找到了元素,此时则需要强制停止循环
        break

四、String字符串

1.概念

字符串就是由若干个字符组成的有限序列

字符:字母,数字,特殊符号,中文

表示形式:采用的单引号或者双引号

注意:字符串属于不可变实体

2.创建字符串

代码演示:

str1 = "hello"
str2 = 'hello'
str3 = 'h'   #Python不支持单字符类型,单字符在Python中也是一个字符串

3.字符串运算

代码演示:

#字符串的运算
#1.字符串连接【拼接】 :+
#注意:+只能用于字符串和字符串之间的拼接
s1 = "welcome "
s2 = "to china"
print(s1 + s2)
print(s1)
print(s2)
​
#2.重复输出字符串  :*
s3 = "good"
print(s3 * 3)
print(s3,s3,s3)
#注意:不管是+还是*,运算结束之后都是生成了一个新的字符串
​
#3.获取字符串中的某个字符
#和list以及tuple类似,通过索引的方式访问字符串中的字符
#访问方式:字符串名[索引]
s4 = "ahjfahdgjag"
#获取值
print(s4[2])
#获取一个字符串 的长度
print(len(s4))
#遍历字符串:类似于list和tuple的遍历
for c in s4:
    print(c)
for i in range(len(s4)):
    print(s4[i])
for i,c in enumerate(s4):
    print(i,c)
​
#字符串的本质:在底层维护了一个由不同的字符组成的元组  ('a','h','j'....)
#s4[2] = 'o' #TypeError: 'str' object does not support item assignment
​
#4.截取字符串【切片】
str1 = "hello world"
#截取指定范围的字符串【子字符串】   包头不包尾的操作
print(str1[6:11])
#从开头截取到指定位置
print(str1[:11])
#从指定位置截取到末尾
print(str1[6:])
​
str2 = "abc123456"
print(str2[2:5])  #c12
print(str2[2:])  #c123456
print(str2[2::2])    #[start:end:step]    c246
print(str2[::-1])   #step为正数,则从左向右获取,如果为负数,则从右向左获取       654321cba
print(str2[-3:-1])  #45
​
#5.判断一个字符串中是否包含指定字符:成员运算符
str3 = "you are a good man"
print("good" in str3)
print("good" not in str3)

4.格式化字符串

通过%来改变后面字母的含义,%被称为占位符

​ %s:字符串【对象】

​ %d:整型

​ %f:浮点型,可以指定小数点后的位数【精度】

代码演示:

print("hello")
​
num = 10
str1 = "hello"
print(num,str1)
print("num = ",num,"str1 = ",str1)
#格式化
print("%d + %s" %(num,str1))
​
f = 12.34545
print("num = %d,str1 = %s,f = %f"%(num,str1,f))
print("num = %d,str1 = %s,f = %.2f"%(num,str1,f))
​
#注意:%.nf,如果n省略,则表示取整,如果n>=1,则表示保留小数点后n位,会进行四舍五入的操作

5.转义字符

通过\改变后面字母的含义

\t:相当于按下tab键

\n:换行符

代码演示:

#打印反斜杠\
str1 = "\\"
print(str1)
​
#打印单引号
str2 = "'"
print(str2)
str2 = '\''
​
​
#打印"hello"
print("\"hello\"")
​
str3 = "hi\thello"
print(str3)
​
str4 = "hi\nhello"
print(str4)
​
#如果字符串内部有很多的换行,用\n写在一行里面不好阅读
str5 = "today\nis\na\ngood\nday"
print(str5)
​
#简化
str6 = """today
is
a
good
day
"""
print(str6)
​
#C:\Users\Administrator\Desktop\XA-Python1804\Day6\视频
str7 = "C:\\Users\\Administrator\\Desktop\\XA-Python1804\\Day6\\视频"
print(str7)
​
#为了简化,Python允许使用r"xxxxx',表示字符串内部的字符默认不需要手动转义
str8 = r"C:\Users\Administrator\Desktop\XA-Python1804\Day6\视频"
print(str8)

6.字符串功能

代码演示:

#1.字符串和整数之间的转换
#int() str()
#eval(str):将str转换为有效的表达式,参与运算,并返回运算结果
num1 = eval("123")
print(num1)
print(type(num1))
print(int("123"))
​
print(eval("+123"))
print(int("+123"))
print(eval("-123"))
print(int("-123"))
​
print(eval("12+3"))
#print(int("12+3"))   #ValueError: invalid literal for int() with base 10: '12+3'
print(eval("12-3"))
#print(int("12-3"))  #ValueError: invalid literal for int() with base 10: '12-3'
​
#总结;eval():转换为数学运算     int():转换为整数
​
​
#2.统计子字符串在原字符串中出现的次数:count
#count(str[,start,end])
str1 = "good good good"
c = str1.count("good")
print(c)
​
#3.大小写字母转换
#lower():将字符串中的大写字母转换为小写字母
str2 = "Tomorrow is Better"
newStr1 = str2.lower()
print(newStr1)
print(str2)
​
#upper():将小写字母转换为大写
print(str2.upper())
​
#swapcase():将大写转换为小写,将小写转换为大写
print(str2.swapcase())
​
#capitalize():  首个单词的首字母大写,其他全部小写
print(str2.capitalize())
​
#title():每个单词的首字母大写
print(str2.title())

猜你喜欢

转载自blog.csdn.net/printZLO/article/details/81393909