#学习笔记
#每日练习
学习笔记
# 字符串 列表 元组 # 知识点1.字符串 # 认识字符串, 下标, 切片, 常用操作方法 # 变量,存储数字类型的值 a = 100 # 存储的就是字符串类型的值 b = 'hello' c = "hello world" # 双引号,单引号中的数据,就是字符串 # 字符串的使用:密码,服务器进行校对,密码存储到数据库——》字符串 # <class 'str'> 控制台显示:str(字符串) a = 'hello world' print(a) print(type(a)) b = "TOM" print(type(b)) # 三引号字符串 name = '''Tom''' print(type(name)) name2 = """Rose""" print(type(name2)) # 三引号字符串,支持换行 a = ''' i am lisi, nice to meet you!''' b = """i am lisi, nice to meet you!""" print(type(a)) print(type(b)) # 创建一个字符串:I'm lisi c = "I'm lisi" print(type(c)) print(c) # d = 'I'm lisi'(报错)使用转义字符” \ ” d = 'I\'m lisi' print(type(d)) print(d)
# 字符串的输出 print('hello world') name = 'lisi' print(name) print('他的名字是%s'%name) print(f'他的名字是{name}')
# 字符串的输入 # 再Python中,使用input 接受用户输入 # name = input('请输入名字') # print(f'您输入的名字是:{name}') # print(type(name)) # password = input('请输入密码') # print(f'您输入的密码是:{password}') # print(type(password))
# 字符串下标:编号 # 作用:通过下标,快速找到对应的数据 str1 = 'abcdefg' print(str1) # 数据在程序运行过程中,存储在内存,得到数据字符a字符,数据b字符 # 使用字符串中某个特定的数据字符数据,从0开始顺序分配一个编号 # 使用这个编号精确找到某个字符数据 # 下标 索引 索引值 下标从0开始 print(str1[1]) print(str1[0]) print(str1[2]) print(str1[6]) print(str1[-1])
# 切片 str1 = 'abcdefg' # 得到整个字符串数据 print(str1) # 下标得到的是下标为某个位置的数据 print(str1[2]) # 想得到abc 这三个数据怎么办? # 切片是指对操作的对象截取其中一部分的操作 # 字符串,列表,元组都支持切片操作 # 语法结构:序列[开始位置下标:结束位置下标:步长] # 注意:1.不包含结束位置下标对应数据,正负整数均可 # 2.步长是选取间隔,正负数均可,默认步长为1 name = 'abcdefg' print(name[2:5:1]) print(name[2:5]) print(name[:5]) print(name[1:]) print(name[:]) print(name[::2]) print(name[:-1]) print(name[-4:-1]) print(name[::-1]) str1 = '012345678' print(str1[2:5:1]) print(str1[2:5:2]) print(str1[2:5]) # 如果不写开始,默认从0开始 print(str1[:5]) # 如果不写结束,表示选取到最后 print(str1[2:]) # 如果不写开始和结束,表示选取所有 print(str1[:]) # 负数测试 # 如果步长为负数,表示倒序选取 print(str1[::-1]) # 下标-1表示最后一个数据,依次向前类推 """ str1 = '012345678' print(str1[-4:-1]) print(str1[-4:-1:1]) print('-----------') # 不能选取数据:从-4开始到-1结束,选取的方向为从左到右,但是-1的步长从右向左选取。 # 如果选取方向(下标开始到结束的方向)和步长的方向冲突,则无法选取数据 print(str1[-4:-1:-1]) print('-----------') print(str1[-1:-4:-1]) """
# 字符串的常用操作 # 一般分为 查找, 修改 ,判断 三大类 # 查找:子串在字符串中的位置或出现的次数 mystr = "hello world and Tom and Rose and you" # 1.find 字符串序列.find(子串,开始位置下标,结束位置下标) print( mystr.find('and')) print( mystr.find('and',15,30)) # print(mystr.find('ands')) # 2.index 字符串序列.index(子串,开始位置下标,结束位置下标) print(mystr.index('and')) print(mystr.index('and',15,30)) # print(mystr.index('ands')) # 3.count 字符串序列.count(子串,开始位置下标,结束位置下标) print(mystr.count('and',15,30)) print(mystr.count('and')) print(mystr.count('ands')) # 4.rfind() 字符串序列.rfind(子串,开始位置下标,结束位置下标) # 与find功能相同,查找方向从右侧开始 print(mystr.rfind('and')) # print(mystr.rfind('ands')) # 5.rindex() 字符串序列.rindex(子串,开始位置下标,结束位置下标) # 与index功能相同,查找方向从右侧开始 print(mystr.rindex('and')) # print(mystr.rindex('ands'))
# 字符串修改 # 修改字符串中的数据 mystr = "hello world and Tom and Rose and you" # 1.replace() 替换 函数有返回值,返回值是修改后的字符串 # replace(旧子串,新子串,替换次数) # 替换次数超出替换次数 # new_str = mystr1.replace('and','he') new_str = mystr.replace('and','he',1) print(new_str) print(mystr) # 注意:如果调用replace函数后,发现原有字符串没有做改变 # 数据按照是否直接修改分为可变类型和不可变类型 # 字符串类型的数据修改,不能改变原有的字符串 # 属于不能直接修改的数据类型是 不可变类型 # 说明:字符串是不可变数据类型
# split()分割 -- 返回一个列表,丢失分割字符 # 字符串序列.split(分割字符,num) # list1 = mystr.split('and',2) # list1 = mystr.split(' ') list1 = mystr.split(' ',2) print(list1)
# join() --合并列表里面的字符串数据为一个新的字符串 # 字符/子串.join(多字符串组成的序列) mylist = ['aa','bb','cc'] t1 = ('1','2','3') new_str = '...'.join(mylist) print(new_str) print('...'.join(t1))
# 修改 mystr = "hello world and Tom and Rose and you" # 1.capitalize() 将字符串的首字母大写 new_str = mystr.capitalize() print(new_str) # 2.title() 字符串中每个单词的首字母大写 new_str = mystr.title() print(new_str) # 3.upper() 小写转大写 new_str = mystr.upper() print(new_str) # 4.lower() 大写转小写 new_str = mystr.lower() print(new_str)
# 删除 mystr = " hello world and Tom and Rose and you" print(mystr) # 1.lstrip() 删除左侧的空白字符 new_str = mystr.lstrip() print(new_str) # 2.rstrip() 删除右侧的空白字符 # 3.strip() 删除左右两侧的空白字符 new_str = mystr.rstrip() print(new_str)
# 字符串常用方法 ---- 判断 # 判断真假:返回的结果是布尔类型的数据:True False mystr = "hello world and Tom and Rose and you" # 1.startswitch() # 判断字符串是否以某个字符串开头 print(mystr.startswith('hello')) print(mystr.startswith('hel')) print(mystr.startswith('hels')) # 2.endswitch(): 判断字符串是否以某个子串结尾 print(mystr.endswith('you')) print(mystr.endswith('you',5,10)) # 3.isalnum() 检测字符串是否由字母和数字组成 # 4.isdigit() 字符串是否为数字 # 5.isalpha() 字符串是否为字母 # 6.isspace() 字符串是否为空白字符 mystr1 = '1 2 4 4' mystr2 = ' ' print(mystr1.isspace()) print(mystr2.isspace()) # 字符串总结: # 下标,切片 常用操作方法:find index
# 知识点2.列表 # 列表的应用场景 # 列表的格式 # 列表的常用操作 # 列表的循环遍历 # 列表的嵌套使用 # 比如一个人的名字,写到存储程序中 ——》变量 # 如果一百个人的名字 ——》 列表存储多个数据 # 列表的格式:[数据1,数据2,数据3,数据4,数据5...] # 列表可以一次性存储多个数据,且可以为不同的数据类型 # 操作:增删改查
# 下标 name_list = ['TOM','Lili','ROSE'] print(name_list) print(name_list[0]) print(name_list[1]) print(name_list[2]) # 常用函数: name_list = ['TOM','Lili','ROSE'] # 1.index() print(name_list.index('TOM')) # print(name_list.index('TOMS')) # 2.count():统计指定数据在当前列表出现的次数 print(name_list.count('TOM')) # 3.len():访问列表长度,获取列表中数据的个数 print(len(name_list))
# 判断是否存在 name_list = ['TOM','Lili','ROSE'] # 1.in print('TOM' in name_list) print('TOMS' in name_list) # 2.not in print('TOM' not in name_list) print('TOMS' not in name_list) # 需求:查找用户输入的名字是否已经存在 name_list = ['TOM','Lili','ROSE'] name = input('请输入您要搜索的名字:') if name in name_list: print(f'{name}已经存在') else: print(f'{name}不存在')
# 列表增加数据 # append()列表的结尾,追加数据 # name_list = ['TOM','Lili','ROSE'] # name_list.append('xiaohong') # name_list.append([11,22]) # print(name_list) # 1.列表数据可改的--列表是可变类型 # 2.append函数追加数据的时候,如果数据是一个序列,追加整个序列到列表结尾 # extend:列表结尾,追加数据 # name_list = ['TOM','Lili','ROSE'] # 单个数据 # name_list.extend('xiaohong') # 序列数据 # name_list.extend(['mali','zhangsan']) # print(name_list) # extend:追加的数据是一个序列,吧把数据序列里面的数据拆开,然后逐一的追加到列表的结尾 # insert;在指定的位置新增数据 列表序列.insert(位置下标.数据) # name_list = ['TOM','Lili','ROSE'] # name_list.insert(1,'abc') # print(name_list)
# 列表操作 --- 删除数据 name_list= ['TOM','Lili','ROSE'] # 1.del # del name_list # del (name_list) print(name_list) # 指定下标删除数据 # del name_list[0] # print(name_list) # pop():删除指定下标数据(默认为最后一个),并返回该数据 # name_list= ['TOM','Lili','ROSE'] # del_name = name_list.pop(1) # print(del_name) # remove():移除列表中某个数据的第一个匹配项 # name_list = ['TOM','Lili','ROSE'] # name_list.remove('TOM') # print(name_list) # clear() 清空列表 # name_list = ['TOM','Lili','ROSE'] # name_list.clear() # print(name_list)
# 列表修改数据 # 1.修改指定下标的数据 # name_list = ['TOM','Lili','ROSE'] # name_list[0] = 'abc' # print(name_list) # 2.逆序 逆置 : reverse() # num_list = [1,2,3,4,5] # num_list.reverse() # print(num_list) # sort()排序: 默认升序 也可以降序 # num_list = [1,3,5,2,6,4] # num_list.sort() # num_list.sort(reverse=True) # print(num_list) # 列表复制数据: 函数copy() # name_list = ['TOM','Lili','ROSE'] # list1 = name_list.copy() # print(name_list) # print(list1)
# 列表的循环遍历之while # 1.准备表示下标的数据 # 2.循环while # 3.条件 # 4.遍历 # 5.下标+1 # name_list = ['TOM','Lili','ROSE'] # i = 0 # while i < len(name_list): # print(name_list[i]) # i += 1 # # # 列表的循环遍历之for # for i in name_list: # print(i) # 列表嵌套 name_list = [['TOM','Lili','ROSE'],['张三','李四','王五'],['小明','小红','小绿']] print(name_list) # 列表嵌套的时候的数据查询 print(name_list[0][1])
每日练习题
# 练习题:需求:8位老师,3个办公室,将8位老师随机分配到3个办公室 # 1.准备数据 ——》8位老师,3个办公室 # 2.分配老师到办公室 ——》随机分配 将老师的名字写入到办公室列表中 # 3.验证是否分配成功 ——》打印办公室详细信息 import random teacher_list = ['teacher1','teracher2','teracher3','teracher4','teracher5','teracher6','teracher7','teracher8'] room_list = [['room1'],['room2'],['room3']] for name in teacher_list: index = random.randint(0,2) room_list[index].append(name) print(room_list) # 题目1 # 题干 # 如果需要使用变量保存以下字符串,我们该如何书写代码 # 鲁迅说:"我没有说过这句话" words = '鲁迅说:"我没有说过这句话"' print(words) # 题目2 # 题干 # 做一个简单的用户信息管理系统: 提示用户依次输入姓名,年龄和爱好 并且在输入完成之后,一次性将用户输入的数据展示出来 name = input('请输入姓名;') age = input('请输入年龄:') hobby = input('请输入爱好:') print(f'您的名字为{name},年龄为{age},爱好为{hobby}') # 题干 # 现有字符串如下,请使用切片提取出ceg words = "abcdefghi" words = "abcdefghi" print(words[2:7:2]) # 题目4 # 题干 # 有一个列表,判断列表中的每一个元素是否以s或e结尾,如果是,则将其放入一个新的列表中, # 最后输出这个新的列表 list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"] mylist = ['red','apples','orange','pink','bananas','blue','black','white'] new_list = [] for i in mylist: word = i if word[-1] == 's' or word[-1] == 'e': new_list.append(i) print(new_list) # 题目5 # 题干 # 给定一个列表,首先删除以s开头的元素,删除后,修改第一个元素为"joke",并且把最后一个元素复制一份,放在joke的后边 # list = ["spring", "look", "strange" "curious", "black", "hope"] # list = ["spring", "look", "strange","curious", "black", "hope"] # for i in list: # if i.startswith('s'): # list.remove(i) # list[0] = 'joke' # list.insert(1,list[-1]) # print(list) # 题目6 # 题干 # 有如下两行代码: tuple1 = (2) tuple2 = (2,) 请问tuple1与tuple2有什么不同 # 对于tuple1 = (2),python解释器会将小括号理解成一个运算符号,那么这时候 返回的值是一个int类型 # 所以对于只有一个元素的元组来说,要创建一个元组,那么就必须要加逗号 # 题干 # 现有:typle1 = ("tom","kaisa","alisi","xiaoming","songshu") 我想获得“alisi”这个内容,你能否想到三种方法来做? # typle1 = ("tom","kaisa","alisi","xiaoming","songshu") # result1 = typle1[2] # print(result1) # result2 = typle1[-3] # print(result2) # for i in typle1: # if i == 'alisi': # print(i) # 题目8 # 题干 # 有如下元组: typle1 = ("tom","kaisa","alisi","xiaoming","songshu") 求出他的长度 typle1 = ("tom","kaisa","alisi","xiaoming","songshu") print(len(typle1))