day03.09
字符串的内置方法
-
移除字符串首尾的指定字符,可以选择方向
name = '¥¥¥tom¥¥¥' print(name.strip('¥')) # 1.移除字符串内部的¥ print(name.lstrip('¥')) # 2.移除字符串左边的¥ print(name.rstrip('¥')) # 3.移除字符串右边的¥
-
更改子字符串内部所有英文元素的大小写
name = 'tom879YIjh' print(name.lower()) # 1.将所有的英文字母变为小写 print(name.upper()) # 2.将所有的英文字母变为大写 print(name.islower()) # 3.判断字符串中所有的英文字母是否是纯小写 结果是布尔值 print(name.isupper()) # 4.判断字符串中所有的英文字母是否是纯大写 结果是布尔值
-
判断字符串的开头或者结尾是否是指定的字符
s3 = 'jason kevin jason tony 666' print(s3.startswith('j')) # True 是否以j开头 print(s3.startswith('jason')) # True 是否以jason开头 print(s3.startswith('tony')) # False 是否以tony开头 print(s3.endswith('6')) # True 是否以6结尾 print(s3.endswith('666')) # True 是否以666结尾 print(s3.endswith('jason')) # False 是否以jason结尾
-
字符串的格式化输出
字符串的格式化输出有两种方法:一种是运用占位符%s、%d,另一种是format方法
占位符:name = (xxx%sxxx)s % 变量
format方法:
-
跟占位符一致 使用的{}占位
print('my name is {} my age is {}'.format('jason', 18))
-
根据索引取值 ,其中索引取值可以取到多个元素的值,同一个元素可以反复使用
print('my name is {0} {0} {1} my age is {0} {1}'.format('jason', 18))
-
根据指名道姓的方式取值,即直接把需要格式化输出的固定的位置用它自己的变量名称指代
print('my name is {name} {name} my age is {age} {pwd}'.format(name='jason', age=18, pwd=123))
-
直接使用已经出现过的变量,用出现过的变量进行替代,有多少个就写多少个
note:需要注意的是format简写为f在开头
name = 'jason' age = 18 print(f'my name is {name} my age is {age} {name} {age}')
-
字符串之间的拼接
s1 = 'yhokk kjhgu' s2 = 'uohgkl' print(s1 + s2) # 如果字符串很大 加号效率较低 print(s1 * 10) # 重复次数 print('|'.join(s1)) # 把|插入到字符串当中去 注意空格也是字符串的一种 print('$'.join(['jason', 'kevin', 'justin', 'tony'])) # 把$ 插入到字符串当中 jason$kevin$justin$tony '''join方法相当于是将括号内的元素进行for循环''' l1 = [11, 'jason', 'kevin'] print('|'.join(l1)) # join的元素必须都是字符串才可以 否则报错
-
替换字符串中指定的字符
number = 'wqrgsdksdhojsasffd' # 将q替换成n print(number.replace('q', 'n')) # 默认一次性替换所有 # 指定替换的个数 print(number.replace('q', 'n', 2)) # 还可以通过数字控制替换的个数,个数计算从左往右,有几个算几个,括号内第三个数字代表替换个数
-
判断字符串中是否是纯数字
note:注意判断输出的是布尔值
s7 = 'jason123' print(s7.isdigit()) # False print('123'.isdigit()) # True print('123.21'.isdigit()) # False
-
(了解)查找指定字符对应的索引值
# s1 = 'jason justin kevin tony' # print(s1.find('s')) # 从左往右查找 查找一个就结束 # print(s1.find('k', 1, 9)) # -1 意思是没有 找不到 # print(s1.index('s')) # print(s1.index('k', 1, 9)) # 找不到直接报错 不推荐使用
-
(了解)改变字符串当中元素的文本位置
name = 'tony' print(name.center(30, '-')) # -------------tony------------- 字符串居中,加入30个- print(name.ljust(30, '*')) # tony************************** 字符串在左侧,加入30个* print(name.rjust(30, '$')) # $$$$$$$$$$$$$$$$$$$$$$$$$$tony 字符串在右侧,加入30个$ print(name.zfill(50)) # zero 零 0000000000000000000000000000000000000000000000tony
-
(了解)特殊符号:斜杠与一些英文字母的组合会产生特殊的含义,如果想要取消它们的特殊含义 可以在字符串的前面加一个字母r即可
-
(了解)captalize:首字母大写,把字符串当中元素的首个英文字母大写
message = 'hello everyone nice to meet you!' message.capitalize()
-
(了解)swapcase:大小写翻转,把字符串当中的元素的大小写互换
message1 = 'Hi girl, I want make friends with you!' message1.swapcase()
-
(了解)title:把字符串当中元素的每个单词的首字母大写
msg = 'dear my friend i miss you very much' msg.title()
列表的内置方法
类型转换:
列表可以转换所有可以支持for循环的数据类型,包括字符串、列表、字典、元组、集合
print(list(各种类型的数据))
-
索引取值
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print(name_list[0])print(name_list[-1])
取出列表中指定位置的元素
-
切片操作
其中-1代表从后往左取值,规范依然是前闭后开
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry']
print(name_list[1:4]) # ['kevin', 'tony', 'tom'] print(name_list[-4:-1]) # ['kevin', 'tony', 'tom'] print(name_list[-1:-4:-1]) # ['jerry', 'tom', 'tony']
-
步长间隔
第三个数字代表间隔取值的个数
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] print(name_list[0:4:1]) # ['jason', 'kevin', 'tony', 'tom'] print(name_list[0:4:2]) # ['jason', 'tony'] print(name_list[-1:-4:-1]) # ['jerry', 'tom', 'tony']
-
如何统计列表中元素的个数
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] print(len(name_list)) # 5
-
成员运算
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] print('j' in name_list) # False print('jason' in name_list) # True
note:最小判断单位是元素不是元素里面的单个字符
-
列表添加元素的方式
-
尾部追加'单个'元素
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] name_list.append('小李') print(name_list)
-
指定位置插入'单个'元素
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] name_list.insert(0, 123) name_list.insert(2, '可不可以插个队') name_list.insert(1, [11, 22, 33]) print(name_list)
note:前面代表索引值,后面代表插入的元素字符串
-
如何合并列表: extend其实可以看成是for循环+append
for i in [11, 22, 33, 44, 55]: name_list.append(i) print(name_list)
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] name_list.extend([11, 22, 33, 44, 55]) print(name_list)
-
如何删除元素
-
通用的删除方式
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] del name_list[0] print(name_list)
-
就地删除 # 指名道姓的直接删除某个元素
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] print(name_list.remove('jerry')) # None print(name_list)
-
根据索引值删除
name_list = ['jason', 'kevin', 'tony', 'tom', 'jerry'] print(name_list.pop()) # 默认是尾部弹出 jerry print(name_list) print(name_list.pop(2)) # 还可以指定索引值 tony print(name_list)
-
修改列表当中的元素
print(id(name_list[0])) # 2614038082368 name_list[0] = 'jasonDSB' print(id(name_list[0])) # 2614038926320 print(name_list)
-
排序
ss = [44, 77, 99, 11, 22, 33, 88, 66] ss.sort() # 默认是升序 print(ss) # [11, 22, 33, 44, 66, 77, 88, 99] ss.sort(reverse=True) # 可以修改尾降序 print(ss) # [99, 88, 77, 66, 44, 33, 22, 11]
-
翻转
ss = [44, 77, 99, 11, 22, 33, 88, 66] ss.reverse() # 前后颠倒 print(ss)
-
比较运算
s1 = [11, 22, 33] s2 = [1, 2, 3, 4, 5, 6, 7, 8] print(s1 > s2) # True s1 = ['A', 'B', 'C'] # A>>>65 s2 = ['a'] # a>>>97 print(s1 > s2) # False ss = [44, 77, 99, 11, 22, 33, 88, 66] print(ss.index(99))
note:列表在做比较的时候 其实比的是对应索引位置上的元素
-
统计列表中某个元素出现的次数
l1 = [11, 22, 33, 44, 33, 22, 11, 22, 11, 22, 33, 22, 33, 44, 55, 44, 33] print(l1.count(11)) # 统计元素11出现的次数
-
clear() # 清空列表
不可变类型是字符串形式,修改过程产生了新的值,新的值对应了新的变量名称
# 队列 new_list = [] # 先进 new_list.append(111) new_list.append(222) new_list.append(333) # 先出 for i in new_list: print(i) print(new_list.pop(0)) print(new_list.pop(0)) print(new_list.pop(0))
# 堆栈 new_list = [] # 先进 new_list.append(111) new_list.append(222) new_list.append(333) # 后出 print(new_list.pop()) print(new_list.pop()) print(new_list.pop())
作业
1.多用户登录系统
source_data = ['tom|123', 'tony|345', 'jim|234'] number = 1 back = 'exit' choose = 'y' data_list = [] real_list = [] while True: in_name = input('请输入用户名>>>:').strip() if len(in_name) == 0: print('用户名不能为空') continue in_pad = input('请输入密码>>>:').strip() if len(in_pad) == 0: print('密码不能为空') continue real_list.append(in_name) real_list.append(in_pad) for i in source_data: data_list.append(i.split('|')) if real_list in data_list: print('欢迎使用') while True: order = input('请输入您的指令>>>:') if order == back: print('即将退出程序') break else: print(order) continue else: print('账号和密码错误,再试一次吧') number += 1 if number == 4: go_on = input('账号和密码错误,是否继续尝试y/n>>>:') if go_on == choose: number = 1 else: print('即将退出程序')
2.注册登录系统
username_list = [] # 获取一个空的用户名的数据列表 password_list = [] # 获取一个空的用户名的密码的数据列表 back = 'exit' # 定义一个变量back number = 1 # 给变量number赋值为1 print('欢迎使用本系统') # 打印输出字符串数据文本 choice = input("是否为新用户,请输入'y'或'n'>>>:").strip() # 获取到切除首尾空格的用户数据 while choice == 'y': # while循环的判断条件,根据上一步获取的输入信息进行判断 print('欢迎来到注册界面') # 条件成立,执行子代码,用户开始注册 while True: # 嵌套一个while循环 username = input('请设置您的用户名>>>:').strip() # 获取到切除首尾空格的用户名数据 if len(username) == 0: # 判断用户名是否为空 print('用户名不能为空') # 提示用户名不可以为空 continue # 结束本次循环,并开始新的一次循环 password = input('请设置您的密码>>>:').strip() # 获取到切除首尾空格的用户的密码数据 if len(password) == 0: # 判断用户的密码是否为空 print('密码不能为空') # 提示用户密码不可以为空 break # 符合条件,注册完成,结束while循环体代码 username_list.append(username) # 把获取到的用户名加入到用户名数据列表当中 password_list.append(password) # 把获取到的用户密码加入到用户密码数据列表当中 print('恭喜您,注册成功') # 提示用户注册成功 choice = 'n' # 注册成功,重新给choice赋值,跳转到用户登录界面 else: print('欢迎来到登录界面') # 系统判断为老用户,直接来到系统登录界面 while True: # 加入一个while循环,用来重复输入用户名和密码 username = input('请输入您的用户名>>>:').strip() # 获取切除首尾空格的用户名 password = input('请输入您的密码>>>:').strip() # 获取切除首尾空格的用户密码 if username in username_list and password in password_list: # 比对用户名和密码是否正确,判断语句 print("恭喜您,登录成功") # 条件成立,提示登录成功 while True: # 加入一个while循环,能够循环重复执行用户下达的指令 order = input('请输入您的指令>>>:') # 获取用户输入的指令信息 if order == back: # 加入一个判断语句,判断用户是否想要退出程序 print('即将退出程序') # 判断条件成立,提示即将退出系统 break # 结束本层while循环 else: print(order) # 如果用户不想退出,则根据用户指令打印出执行结果 continue # 开始执行下一次循环 else: # 条件不成立,执行else子代码 print('账号和密码错误,再试一次吧') # 提示用户账户和密码错误 number += 1 # 变量number增量赋值加一 if number == 4: # 判断变量number是否等于4 print('账户已锁定') # 若变量number等于4,提示账户已锁定 break # 账户锁定,退出循环执行登录账户密码的操作,跳出循环
3.不使用count统计列表中指定元素出现的次数
number = [11, 22, 33, 45, 67, 23, 89, 33, 45, 79, 80, 65, 78, 33] time = 0 for i in number: if i == 33: time += 1 print(time)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?