1.可迭代对象总结
"""
1 表示方式: () #当对应的元组中只有一个元素时候一定要添加逗号 (a,)
2本质:有序的,不可变的,可以存储重复元素的集合
3系统功能:查: len
count()#只是在元组和列表中有这个,因为她两可以存储重复的元素的
index
max/min
4 遍历方式 : 元素 遍历
索引遍历
"""
字典:dict
1 表示方式 : {}
2 本质:无序的,可变的,可以存储键值对的集合
3 系统功能:增: 字典[key] = vaule
update
setdefault
删除:pop(key)
popitem
clear
del
改:字典[key] = vaule
查:len
get
拷贝:copy copy.copy copy.deepcopy
其他:fromkeys
4创建方式:[面试题]
dict1 = {key:vaule .....}
dict1 = {} ; dict1[key] = vaule
dict1{key=vaule,.......}
dict1(zip([key....],[vaule....]))
dict{[(key,vaule)......]}
from case
5 遍历方式:
for key in 字典
for key in 字典.keys()
for vaule in 字典.value()
for vaule,vaule in 字典.items()
"""
集合:set
1.表示方式:set()
{xx,xx}
2.本质:无序的,可变得,不允许存储对应元素的集合
3 系统功能:增:add update
删:remove
clear
pop#因为没索引
# del不能删除其中的元素,因为字典是无序的,无法用索引来删除字典中的指定的元素,而那个列表可以是因为列表是有序的
del 字典 #这是删除整个字典
discard #和remove比较得好处:不会报错
查:len max min copy
4 遍历方式:只能遍历元素
"""
"""
1 表示方式:单引号,双引号和三引号
2本质:有序的,不可变的,可以存储重复字符的集合
3系统功能:
4遍历方式:元素
索引
len() count()
1.系统功能
1.1转换
evil():将str转换为有效的表达式
upper():将小写字母转换为大写
lower():大---》小
swapcase():大---》小 小----》大
capitalize():首单词的首字母大写,其他全部小写
title():每个单词的首字母大写,其他全部小写
ord(),chr()
"""
eval("print('hfajhgkajh')")
print(eval("3 + 4"))
str1 = "This is A TeXT"
print(str1.upper())
print(str1.lower())
print(str1.title())
print(str1.capitalize())
print(str1)
"""
1.2查找
find():从左往右进行检索,返回被查找的子字符串在原字符串中第一次出现的位置,如果查找不到返回-1
rfind():从右往左进行检索
index():从左往右进行检索,返回被查找的子字符串在原字符串中第一次出现的位置,如果查找不到则直接报错
rindex():从右往左进行检索
"""
'''
1.3填充
center(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居中显示
ljust(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居左显示,
rjust(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居右显示,
zfill(width):原字符串居右显示,剩余的字符默认用0填充
'''
"""
center(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居中显示
ljust(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居左显示,
rjust(width[,fillchar]):用fillchar填充指定的字符串,填充之后的长度为width,原字符串居右显示,
zfill(width):原字符串居右显示,剩余的字符默认用0填充
"""
s1 = "hello"
s2 = s1.center(30)
print(s2)
s2 = s1.center(30,"*")
print(s2)
s2 = s1.ljust(30,"*")
print(s2)
s2 = s1.rjust(30,"*")
print(s2)
s2 = s1.zfill(30)
print(s2)
s2 = s1.rjust(30,"0")
print(s2)
"""
1.4提取
strip():去除一个指定字符串中两端指定的子字符
lstrip():去除一个指定字符串中左边指定的子字符
rstrip():去除一个指定字符串中右边指定的子字符
1.5合并和分割
''.join(列表名):使用指定的子字符串将列表中的元素连接【列表-----》字符串】
列表名.split(''):使用指定的子字符串将原字符串进行分割,得到一个列表 【字符串-----》列表】
1.6替换
replace(old,new):将原字符串中的old替换为new
映射替换:
maketrans():生成映射表
translate():根据映射表将指定字符串中的指定字符替换为映射表中对应的字符
1.7判断
isalpha():一个字符串非空并字符全部是字母才返回True
isalnum():一个字符串非空并字符是字母或者数字才返回True
isupper()/islower()/istitle():和upper,lower,title有关
isdigit()/isdecimal():一个字符串非空并字符全部是数字才返回True
startswith();判断一个字符串是否是以指定自字符串开头【前缀】
endswith():判断一个字符串是否是以指定自字符串结尾【后缀】
1.8编码和解码
encode():编码
decode();解码
"""
"""
编解码实际上指的是字符串类型【str】和字节类型【bytes】之间的类型转换
编码:将字符串类型转换为字节类型,实现方式:bytes()或者encode()
解码:将字节类型转换为字符串类型,实现方式:str()或者decode()
字符串表示:单引号,双引号和三引号
字节表示:b''
常用的编码格式:utf-8
gbk
"""
s1 = "fha23532%$##张健康"
print(type(s1))
b1 = bytes(s1,encoding="utf-8")
print(type(b1))
print(b1)
b1 = bytes(s1,encoding="gbk")
print(type(b1))
print(b1)
s1 = "fha23532%$##张健康"
b1 = s1.encode("utf-8")
print(b1)
b2 = s1.encode("gbk")
print(b2)
print(str(b1,encoding="utf-8"))
print(str(b2,encoding="gbk"))
print(b1.decode(encoding="utf-8"))
print(b2.decode(encoding="gbk"))
"""
1.9格式化
占位符
format()
f""
"""
"""
%d:整型
%f:浮点型
%s:一切对象【实体】
"""
name = "jack"
age = 20
gender = "male"
print("姓名:%s,年龄:%d,性别:%s" % (name,age,gender))
print("姓名:{},年龄:{},性别:{}".format(name,age,gender))
print("姓名:{0},年龄:{1},性别:{2},{0}".format(name,age,gender))
print("姓名:{0}".format(name,age,gender))
print("姓名:{0},年龄:{0},性别:{0}".format(name,age,gender))
print("姓名:{2},年龄:{0},性别:{1}".format(name,age,gender))
print(f"姓名:{name},年龄:{age},性别:{gender}")
print(f"{name}-{name}-{age}")
2.函数
-
本质:对某些特殊功能的封装 -
优点: a.简化代码结构,提高应用的模块性 b.提高了代码的复用性 c.提高了代码维护性 d.提高了代码的可读性 -
语法:
def 函数名(变量1,变量2....):
函数体
return 返回值
-
说明:
-
def是一个关键字,是definition的缩写,专门定义函数 -
.函数名:遵循合法标识符的规则和规范即可,尽量做到见名知意 -
(变量1,变量2…):被称为形式参数,是一个参数列表,都只是没有赋值的变量 -
函数体:封装某些特殊的功能 -
return是一个关键字,表示返回,只能用在函数中,表示结束函数,可以单独使用,也可以携带数据,当携带数据,则表示该函数的返回值 -
返回值:常量,变量,表达式 -
函数的定义分为两部分:函数的声明和函数的实现 -
变量1,变量2… 和 return 返回值 可以根据具体的需求选择性的省略
"""
a.如果函数没有参数,声明部分的()不能省略
b.一个函数一旦被定义之后,都需要手动调用,否则无法执行
c.定义一个函数相当于定义了一个变量,函数名相当于是变量名,同样在内存中开辟空间
"""
print("start")
def test():
print("hello")
print("end")
"""
a.在函数声明部分出现的参数被称为形式参数,简称形参,只是一个变量,等待外界传参
b.形参的数量和类型需要根据具体的需求决定
"""
def check(num1,n1,m,a,num2):
print("2222",n1)
def func(num1,num2):
print("3333",num1,num2)
return num1 + num2
-
函数调用 -
如果要确定一个函数的定义,则只需要确定两个要素
"""
形式参数:出现在函数的声明部分,简称形参,本质是一个变量
实际参数:出现在函数的调用部分,简称实参,本质是一个数据
当函数调用的时候,需要进行传参
传参:实参给形参赋值的过程
"""
def test():
print("hello")
test()
def check(num1,num2):
print("2222",num1,num2)
print(num1 + num2)
check(3,5)
def func(num1,num2):
print("3333",num1,num2)
return num1 + num2
r = func(4,7)
print(r)
print(func(2,5))
print("*"* 30)
def func1():
print("11111")
func2()
def func2():
print("22222")
func3()
def func3():
num = 10
print("3333")
print("start")
func1()
print("over")
"""
注意:
1.函数的使用一定要先定义,然后才能调用
2.一个函数一旦被定义完成,理论上可以调用无数次
3.代码执行的过程中,一旦遇到函数,则优先执行指定的函数,当函数执行完毕之后,则继续执行后面得到代码
4.函数调用的原理:
调用:入栈
调用结束:出栈
5.多个函数之间可以相互调用,但是,要避免恶意调用,如:A调用了B,B调用了A
"""
def add(num1,num2):
resule = num1 + num2
return resule
r = add(23,5)
print(r)
参数分类:
def test1(a,b):
print("gajhg")
test1(5,8)
test1(5,"fag")
test1("abc",True)
def test2(a,b):
print("gajhg",a + b)
test2(5,8)
def test3(name,age,gender):
print("姓名:%s-年龄:%d-性别:%s" % (name,age,gender))
test3(10,"zhangsan","male")
3.大练兵
"""
已知字符串:“this is a test of Python”
a.统计该字符串中字母s出现的次数
b.取出子字符串“test”
c.采用不同的方式将字符串倒序输出
d.将其中的"test"替换为"exam"
"""
str1 = "this is a test of Python"
count1 = 0
for ch in str1:
if ch == "s":
count1 += 1
print(count1)
count2 = str1.count("s")
print(count2)
str2 = str1[10:14]
print(str2)
s1 = str1[::-1]
print(s1)
s2 = ""
i = len(str1) - 1
while i >= 0:
s2 += str1[i]
i -= 1
print(s2)
list1 = list(str1)
list1.reverse()
str1 = "this is a test of Python"
str1.replace("test","exam")
print(str1)
"""
输入一个字符串,判断字符串中有多少个字母?多少个数字?
多少个其他符号?
例如:'hello, nice to meet you. i am 18. my birthday is 1999-05-23'
-- 结果: 字母的个数为33个,数字个数为10个, 其他字符为16个
"""
input_str = input("请输入:")
letter_count = 0
digit_count = 0
other_count = 0
for ch in input_str:
if ch.isalpha():
letter_count += 1
elif ch.isdigit():
digit_count += 1
else:
other_count += 1
"""
以下是一段歌词,请从这段歌词中统计出朋友出现的次数
“这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。”
"""
str1 = "这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。"
c = str1.count("朋友")
"""
编写敏感词过滤程序
说明:在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。如“性”、“色情”、“爆炸”、“恐怖”、“枪”、“军火”等,这些都不可以在网上进行传播,要求输入一段文本,如果包含以上的敏感词汇,需要*替换掉
例如:“军火走私” ---- 结果为 "**走私"
"""
data = input("请输入")
words = ['性'、'色情'、'爆炸'、'恐怖'、'枪'、'军火']
for word in words:
print(data)
if data.find(word) != -1:
data = data.replace(word,"*" * len(word))
print(data)
"""
.输入一个用户名,判断用户名是否合法。用户名要求:由英文字母或数字组成,长度是6到12位
例如:‘abcd’ --- 不合法 "123456" -- 合法 ‘ABC23’ -- 不合法 ‘ABC123’ -- 合法
“abc 124” --- 不合法
"""
username = input("请输入你的用户名:")
if username.isalnum() and 6 <= len(username) <= 12:
print("用户名{}合法".format(username))
else:
print("用户名{}不合法".format(username))
"""
随机生成长度为5的验证码, 验证码的组成是英文字母或者数字
"""
import random
letter_digit_list = []
for i in range(65, 91):
letter_digit_list.append(chr(i))
for j in range(97, 123):
letter_digit_list.append(chr(j))
for k in range(10):
letter_digit_list.append(str(k))
code = ""
for n in range(5):
code += random.choice(letter_digit_list)
print(code)
"""
实现将字符串"1,2,3" 变成列表 ["1","2","3"]
"""
str1 = "1,2,3"
list1 = str1.split(",")
"""
判断输入的字符串是否是 .py 结束
"""
data = input("请输入字符串:")
result = data.endswith(".py")
"""
输入一个字符串,将字符串中所有的数字符取出来产生一个新的字符串
例如: 输入: 'abc1shj23kls99+2kkk' 输出: '123992'
"""
new_str = input("请输入一段文本:")
new_str = ""
for ch in a:
if ch.isdigit():
new_str += ch
print(new_str)
"""
输入用户名,判断用户名是否合法,用户名的要求:必须由数字和字母
且只能有数字和字母,并且第一个字符是大写字母
例如: 'Abc' — 不合法 '123' — 不合法 'abc123' — 不合法 'Abc123ahs' — 合法
"""
username = input("请输入用户名:")
if username[0].isupper() and not username.isdigit() and not username.isalpha()
and username.isalnum():
print("用户名{}合法".format(username))
else:
print("用户名{}不合法".format(username))
"""
输入两个字符串,打印两个字符串中公共的字符,如果没有公共字符打印
公共字符不存在
例如: 字符串1为 abc123a , 字符串2为 huak33 , 打印 a3
"""
str1 = input("请输入第一段文本:")
str2 = input("请输入第二段文本:")
equal_list = []
for ch in str1:
if ch in str2 and ch not in equal_list:
equal_list.append(ch)
equal_str = "".join(equal_list)
print(equal_str)
"""
如下字符串: "01#张三#60-02#李四#90-03#王五#70", 每一部分表示
学号#姓名#分数,提取学生信息存放于列表中,并按照成绩对学生降
序排序
结果显示为:
[{"学号":'02', '姓名':'李四', '分数':90}, {"学号":'03', '姓名':'王五', '分数':70}, {"学号":'01', '姓名':'张三', '分数':60}]
"""
info_str = "01#张三#60-02#李四#90-03#王五#70"
info_list = info_str.split("-")
all_stu_list = []
for stu_info in info_list:
stu_list = stu_info.split("#")
stu_dict = {"学号": stu_list[0], '姓名': stu_list[1], '分数':int(stu_list[2])}
all_stu_list.append(stu_dict)
for i in range(len(all_stu_list) - 1):
for j in range(i + 1, len(all_stu_list)):
if all_stu_list[i]["分数"] < all_stu_list[j]["分数"]:
all_stu_list[i], all_stu_list[j] = all_stu_list[j],all_stu_list[i]
print(all_stu_list)
name = "gouguoQ "
name = " gouguoQ "
print(name)
"""
strip():去除一个指定字符串中两端指定的子字符
lstrip():去除一个指定字符串中左边指定的子字符
rstrip():去除一个指定字符串中右边指定的子字符
"""
a1 = name.strip()
print(a1)
name = "***hfahf*********"
a2 = name.strip("*")
print(a2)
print(name)
a3 = name.lstrip("*")
a4 = name.rstrip("*")
print(a3)
print(a4)
"""
startswith();判断一个字符串是否是以指定自字符串开头【前缀】
endswith():判断一个字符串是否是以指定自字符串结尾【后缀】
"""
name = "gouguoQ "
b = name.startswith("go")
print(b)
c = name.endswith("Q")
print(c)
name = "gouguoQ "
d = name.replace("o",'p')
print(d)
s1 = "nice good nice good good good"
s2 = s1.replace("good","bad")
print(s2)
s3 = s1.replace("good","bad",2)
print(s3)
"""
maketrans(str1,str2):生成一个映射表,注意:str1和str2的长度必须相等
translate():翻译,借助于映射表,将指定字符串中的字符替换为映射中对应的字符
"""
str1 = "718750157018151234"
t = str.maketrans("1234563","abcdefx")
str2 = str1.translate(t)
print(str1)
print(str2)
t1 = str.maketrans("o","p")
name2 = name.translate(t1)
print(name2)
"""
split(char,count),用char将原字符串进行分隔,注意:得到的结果为一个列表,字符串----》列表
"""
s1 = "abc-hello-3223-fhajghak-ffh"
r1 = s1.split("-")
print(r1)
r2 = s1.split("-",2)
print(r2)
s1 = "abc-----hello---3223-fhajghak----ffh"
r3 = s1.split("-")
print(r3)
for substr in r3[:]:
if substr == "":
r3.remove(substr)
print(r3)
import re
r4 = re.split(r"-{1,}",s1)
print(r4)
name = "gouguoQ "
print(name.upper())
print(name.lower())
print(name[1])
print(name[:3])
print(name[-1:-3:-1])
print(name[len(name) - 2:])
"""
find(substr,start,end):从左往右进行检索,返回被查找的子字符串在原字符串中第一次出现的位置,如果查找不到返回-1
rfind():从右往左进行检索
index():从左往右进行检索,返回被查找的子字符串在原字符串中第一次出现的位置,如果查找不到则直接报错
rindex():从右往左进行检索
"""
l1 = name.index("Q")
l2 = name.find("Q")
print(l1,l2)
l2 = name.find("x")
print(l2)
print(name[:len(name) - 1])
"""
连接字符串.join(list),将一个列表中的元素使用指定的子字符串进行连接,得到一个新的字符串
"""
li = ['gou', 'guo', 'qi']
n = "_".join(li)
print(n)
li1 = n.split("_")
print(li1)
|