1.格式化操作符
2.f-strings
print(“hello world”)
name = ‘ROSE’
我的名字是TOM
print(‘我的名字是%s’ % name)
print(f’我的名字是{name}')
输入密码
password = input(‘请输入您的密码:’)
print(f’您输入的密码是{password}')
print(type(password))
1.下标索引
所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间
str1 = ‘abcdefg’
print(str1)
数据在程序运行过程中存储在内存
? 得到数据a字符, 得到数据b字符 – 使用字符串中某个特定的数据
这些字符数据从0开始顺序分配一个编号 – 使用这个编号精确找到某个字符数据 – 下标或索引或索引值
str1[下标]
print(str1[0])
print(str1[1])
2.切片
str1 = ‘abcdefg’
得到整个字符串数据
print(str1)
下标得到的是下标为某个数字的数据
print(str1[2])
得到abc 这3个数据该怎么办
序列名[开始位置的下标:结束位置的下标:步长]
str1 = ‘012345678’
print(str1[2:5:1]) # 234
print(str1[2:5:2]) # 24
print(str1[2:5]) # 234
print(str1[:5]) # 01234 – 如果不写开始,默认从0开始选取
print(str1[2:]) # 2345678 – 如果不写结束,表示选取到最后
print(str1[:]) # 012345678 – 如果不写开始和结束,表示选取所有
负数测试
print(str1[::-1]) # 876543210 – 如果步长为负数,表示倒叙选取
print(str1[-4:-1]) # 567 – 下标-1表示最后一个数据,依次向前类推
终极测试
print(str1[-4👎1]) # 567
print(str1[-4👎-1]) # 不能选取出数据:从-4开始到-1结束,选取方向为从左到右,但是-1步长:从右向左选取
**** 如果选取方向(下标开始到结束的方向) 和 步长的方向冲突,则无法选取数据
print(str1[-1:-4:-1]) # 876
3.想一想
(面试题)给定一个字符串aStr, 请反转字符串
如有字符串mystr = ‘hello world itcast and itcastcpp’,以下是常见的操作
mystr = “hello world and itcast and itheima and Python”
1. find()
print(mystr.find(‘and’)) # 12
print(mystr.find(‘and’, 15, 30)) # 23
print(mystr.find(‘ands’)) # -1 , ands子串不存在
2.index()
print(mystr.index(‘and’)) # 12
print(mystr.index(‘and’, 15, 30)) # 23
print(mystr.index(‘ands’)) # 如果index查找子串不存在,报错
3.count()
print(mystr.count(‘and’, 15, 30))
print(mystr.count(‘and’)) # 3
print(mystr.count(‘ands’)) # 0
4.rfind()
print(mystr.rfind(‘and’))
print(mystr.rfind(‘ands’))
5.rindex()
print(mystr.rindex(‘and’))
print(mystr.rindex(‘ands’))
mystr = “hello world and itcast and itheima and Python”
1. replace() 把and换成he #** 说明replace函数有返回值,返回值是修改后的字符串
new_str = mystr.replace(‘and’, ‘he’)
new_str = mystr.replace(‘and’, ‘he’, 1)
替换次数如果超出子串出现的次数,表示替换所有这个子串
new_str = mystr.replace(‘and’, ‘he’, 10)
# print(mystr)
print(new_str)
***** 调用了replace函数后,发现原有字符串的数据并没有做到修改,修改后的数据是replace函数的返回值
— 说明 字符串是不可变数据类型
数据是否可以改变划分为 可变类型 和 不可变类型
2. split() – 分割,返回一个列表, 丢失分割字符
list1 = mystr.split(‘and’)
list1 = mystr.split(‘and’, 2)
print(list1)
3. join() – 合并列表里面的字符串数据为一个大字符串
mylist = [‘aa’, ‘bb’, ‘cc’]
# aa…bb…cc
new_str = ‘…’.join(mylist)
print(new_str)
mystr = “hello world and itcast and itheima and Python”
1. capitalize() 字符串首字母大写
new_str = mystr.capitalize()
2.title(): 字符串中每个单词首字母大写
new_str = mystr.title()
3. upper():小写转大写
new_str = mystr.upper()
4. lower(): 大写转小写
new_str = mystr.lower()
print(new_str)
mystr = " hello world and itcast and itheima and Python "
print(mystr)
1. lstrip(): 删除左侧空白字符
new_str = mystr.lstrip()
2. rstrip(): 删除右侧空白字符
new_str = mystr.rstrip()
3.strip():删除两侧空白字符
new_str = mystr.strip()
print(new_str)
mystr = “hello world and itcast and itheima and Python”
1. startswith(): 判断字符串是否以某个子串开头
print(mystr.startswith(‘hello’))
print(mystr.startswith(‘hel’))
print(mystr.startswith(‘hels’))
2. endswith(): 判断字符串是否以某个子串结尾
print(mystr.endswith(‘Python’))
print(mystr.endswith(‘Pythons’))
3. isalpha(): 字母
print(mystr.isalpha())
4. isdigit(): 数字
print(mystr.isdigit())
mystr1 = ‘12345’
print(mystr1.isdigit())
5. isalnum() : 数字或字母或组合
print(mystr1.isalnum())
print(mystr.isalnum())
mystr2 = ‘abc123’
print(mystr2.isalnum())
6.isspace(): 空白
print(mystr.isspace())
mystr3 = ’ ’
print(mystr3.isspace())
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
print(name_list)
print(name_list[1])
print(name_list[0])
print(name_list[2])
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
1. index()
print(name_list.index(‘TOM’))
print(name_list.index(‘TOMS’))
2. count()
print(name_list.count(‘TOM’))
print(name_list.count(‘TOMS’))
3.len()
print(len(name_list))
name_list = [‘TOM’, ‘Lily’, ‘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’, ‘Lily’, ‘ROSE’]
需求:注册邮箱,用户输入一个账号名,判断这个账号名是否存在,如果存在,提示用户,否则提示可以注册
“”"
-
用户输入账号
-
判断if…else
“”"
name = input(‘请输入您的邮箱账号名:’)
if name in name_list:
提示用户名已经存在
print(f’您输入的名字是{name}, 此用户名已经存在’)
else:
提示可以注册
print(f’您输入的名字是{name}, 可以注册’)
列表中存放的数据是可以进行修改的,比如"增"、“删”、“改”、“查”
1.添加元素("增"append, extend, insert)
append
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
name_list.append(‘xiaoming’)
name_list.append([11, 22])
print(name_list)
1. 列表数据可改的 – 列表可变类型
2. append函数追加数据的时候如果数据是一个序列,追加整个序列到列表的结尾
extend
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
name_list.extend(‘xiaoming’)
name_list.extend([‘xiaoming’, ‘xiaohong’])
print(name_list)
extend() 追加数据是一个序列,把数据序列里面的数据拆开然后逐一追加到列表的结尾
insert
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
name_list.insert(下标, 数据)
name_list.insert(1, ‘aaa’)
print(name_list)
2.修改元素(“改”)
3.查找元素("查"in, not in, index, count)
所谓的查找,就是看看指定的元素是否存在
in, not in
index, count
下标
len():访问列表长度,即列表中数据的个数。
4.删除元素("删"del, pop, remove)
demo:(del)
demo:(pop)
demo:(remove)
demo:(clear)[清空列表]
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
1. del
del name_list
del(name_list)
del 可以删除指定下标的数据
del name_list[0]
print(name_list)
2. pop() – 删除指定下标的数据,如果不指定下标,默认删除最后一个数据,
无论是按照下标还是删除最后一个,pop函数都会返回这个被删除的数据
del_name = name_list.pop()
del_name = name_list.pop(1)
print(del_name)
print(name_list)
3. remove(数据)
name_list.remove(‘ROSE’)
print(name_list)
4. clear() – 清空
name_list.clear()
print(name_list)
5.排序(sort, reverse)
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
1. 修改指定下标的数据
name_list[0] = ‘aaa’
print(name_list)
2. 逆序 reverse()
list1 = [1, 3, 2, 5, 4, 6]
list1.reverse()
print(list1)
3. sort() 排序:升序(默认) 和 降序
list1.sort()
list1.sort(reverse=False)
list1.sort(reverse=True)
print(list1)
6.复制(copy)
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
list1 = name_list.copy()
print(list1)
print(name_list)
1.使用for循环
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
for i in name_list:
遍历序列中的数据
print(i)
2.使用while循环
name_list = [‘TOM’, ‘Lily’, ‘ROSE’]
‘’’
-
准备表示下标数据
-
循环while
条件 i < 3 len()
遍历:依次按顺序访问到序列的每一个数据
i += 1
‘’’
i = 0
while i < len(name_list):
print(name_list[i])
i += 1
1.列表嵌套
name_list = [[‘TOM’, ‘Lily’, ‘Rose’], [‘张三’, ‘李四’, ‘王五’], [‘xiaohong’, ‘xiaoming’, ‘xiaolv’]]
print(name_list)
列表嵌套的时候的数据查询
print(name_list[0])
print(name_list[0][1])
2.应用
一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配
需求:8位老师,3个办公室, 将8位老师随机分配到3个办公室
“”"
步骤:
- 准备数据
1.1 8位老师 – 列表
1.2 3个办公室 - 列表嵌套
- 分配老师到办公室
*** 随机分配
就是把老师的名字写入到办公室列表 – 办公室列表追加老师名字数据
- 验证是否分配成功
打印办公室详细信息:每个办公室的人数和对应的老师名字
“”"
import random
1. 准备数据
teachers = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’]
offices = [[], [], []]
2. 分配老师到办公室 – 取到每个老师放到办公室列表 – 遍历老师列表数据
for name in teachers:
列表追加数据 – append(选中) extend insert
xx[0] – 不能指定是具体某个下标 – 随机
num = random.randint(0, 2)
offices[num].append(name)
print(num)
print(offices)
为了更贴合生活,把各个办公室子列表加一个办公室编号 1, 2, 3
i = 1
3. 验证是否分配成功
for office in offices:
打印办公室人数 – 子列表数据的个数 len()
print(f’办公室{i}的人数是{len(office)},老师分别是:')
打印老师的名字
print() – 每个子列表里面的名字个数不一定 – 遍历 – 子列表
for name in office:
print(name)
i += 1
t1 = (10, 20, 30)
print(t1)
print(type(t1))
1. 多个数据元组
t1 = (10, 20, 30)
print(type(t1))
2. 单个数据的元组
t2 = (10,)
print(type(t2))
3. 如果单个数据的元组不加逗号
t3 = (10)
print(type(t3)) # int
t4 = (‘aaa’)
print(type(t4)) # str
t5 = (‘aaa’,)
print(type(t5))
t1 = (‘aa’, ‘bb’, ‘cc’, ‘bb’)
1. 下标
print(t1[0])
2. index()
print(t1.index(‘bb’))
print(t1.index(‘bbb’))
3. count()
print(t1.count(‘aa’))
print(t1.count(‘aaa’))
4. len()
print(len(t1))
t1 = (‘aa’, ‘bb’, ‘cc’, ‘bb’)
t1[0] = ‘aaa’
t2 = (‘aa’, ‘bb’, [‘cc’, ‘dd’])
print(t2[2])
print(t2[2][0])
t2[2][0] = ‘TOM’
print(t2)
1.生活中的字典
2.软件开发中的字典
创建字典
{} 键值对 各个键值对用逗号隔开
1. 有数据的字典: name的值TOM, age的值是20, gender的值是男
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
print(dict1)
print(type(dict1))
2. 创建空字典
dict2 = {}
print(type(dict2))
dict3 = dict()
print(type(dict3))
3.根据键访问值
1.查看元素
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
1. [key]
print(dict1[‘name’]) # 返回对应的值(key存在)
print(dict1[‘names’])
2. 函数
2.1 get()
print(dict1.get(‘name’))
print(dict1.get(‘names’)) # 如果key不存在,返回None
print(dict1.get(‘names’, ‘Lily’))
2.2 keys() 查找字典中所有的key,返回可迭代对象
print(dict1.keys())
2.3 values() 查找字典中的所有的value,返回可迭代对象
print(dict1.values())
2.4 items() 查找字典中所有的键值对,返回可迭代对象,里面的数据是元组,元组数据1是字典的key,元组数据2是字典key对应的值
print(dict1.items())
2.修改元素
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
dict1[‘name’] = ‘Lily’
print(dict1)
dict1[‘id’] = 110
print(dict1)
3.添加元素
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
字典序列[key] = 值
id的值是110
dict1[‘id’] = 110
print(dict1)
dict1[‘name’] = ‘ROSE’
print(dict1)
4.删除元素
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
del 删除字典或指定的键值对
del(dict1)
print(dict1)
del dict1[‘name’]
del dict1[‘names’] # 报错
print(dict1)
clear()
dict1.clear()
print(dict1)
5.len()
6.keys
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
for key in dict1.keys():
print(key)
7.values
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
for value in dict1.values():
print(value)
8.items
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
for item in dict1.items():
print(item)
dict1 = {‘name’: ‘TOM’, ‘age’: 20, ‘gender’: ‘男’}
xx.items(): 返回可迭代对象,内部是元组,元组有2个数据
元组数据1是字典的key,元组数据2是字典的value
for key, value in dict1.items():
print(key)
print(value)
目标: key=value
print(f’{key}={value}')
9.has_key (Python3 已取消)
1.字符串遍历
2.列表遍历
3.元组遍历
4.字典遍历
遍历字典的key(键)
遍历字典的value(值)
遍历字典的项(元素)
遍历字典的key-value(键值对)
5. 想一想,如何实现带下标索引的遍历
6.字典的扩展
有序字典:OrderDcit
1.创建集合
1. 创建有数据的集合
s1 = {10, 20, 30, 40, 50}
print(s1)
s2 = {10, 30, 20, 40, 30, 20}
print(s2)
s3 = set(‘abcdefg’)
print(s3)
2. 创建空集合: set()
s4 = set()
print(s4)
print(type(s4))
s5 = {}
print(type(s5))
2.集合常见操作方法
增加数据
s1 = {10, 20}
1. 集合是可变类型
add()
s1.add(100)
print(s1)
集合有去重功能,如果追加的数据是集合已有数据,则什么事情都不做
s1.add(100)
print(s1)
s1.add([10, 20, 30]) # 报错
print(s1)
update(): 增加的数据是序列
s1.update([10, 20, 30, 40, 50])
print(s1)
s1.update(100) # 报错
print(s1)
删除数据
s1 = {10, 20, 30, 40, 50}
remove(): 删除指定数据,如果数据不存在报错
s1.remove(10)
print(s1)
s1.remove(10) # 报错
print(s1)
discard():删除指定数据,如果数据不存在不报错
s1.discard(10)
print(s1)
s1.discard(10)
print(s1)
pop(): 随机删除某个数据,并返回这个数据
del_num = s1.pop()
print(del_num)
print(s1)
查找数据
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
ocess=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW90YWkxMjM0,size_16,color_FFFFFF,t_70#pic_center)
s1 = {10, 20, 30, 40, 50}
remove(): 删除指定数据,如果数据不存在报错
s1.remove(10)
print(s1)
s1.remove(10) # 报错
print(s1)
discard():删除指定数据,如果数据不存在不报错
s1.discard(10)
print(s1)
s1.discard(10)
print(s1)
pop(): 随机删除某个数据,并返回这个数据
del_num = s1.pop()
print(del_num)
print(s1)
查找数据
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-2oxTkknk-1712852012200)]
[外链图片转存中…(img-0iqy6Q5m-1712852012201)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
[外链图片转存中…(img-KnOL2H4S-1712852012201)]
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-tp6m6bNt-1712852012202)]