python 中的 字符串 列表 元祖 字典

时间:2022-06-08 03:03:15

str

1 格式化输出

%法

第一种 %s+tuple %d+tuple
name = input('请输入你的姓名:')
age = input('请输入你的年龄:')
hobby = input('请输入你的爱好:')
msg = '我叫%s,今年%d岁,爱好%s' % (name,int(age),hobby)

第二种 %(name)+dict

dic = {'name':'老男孩','age':51,'hobby':'无所谓'}
msg = '我叫%(name)s,今年%(age)d岁,爱好%(hobby)s' % dic
print(msg)

note在格式化输出中单纯的显示% 用%% 解决

name = input('请输入你的姓名:')
age = input('请输入你的年龄:')
msg = '我叫%s,今年%d岁,学习进度为1%%' % (name,int(age))
print(msg)

{}+format

三种用法

第一种用法:{}+ format +()

s = '我叫{},今年{},爱好{}'.format('MT',18,'母牛')
print(s)

第二种用法:{num}+format+()

s = '我叫{0},今年{1},爱好{2},我依然叫{0},今年还是{1}'\
.format('MT',18,'母牛')
print(s)

第三种 键值对:{name}+format+dict

s = '我叫{name},今年{age},爱好{hobby}'.format(age=18, name='MT', hobby='闷儿')
print(s)

2 str 索引与切片

索引与切片 s[起始索引:截止索引:步长]

s =' 我喜欢python'

索引

s1 = s[0]
print(s1)
s2 = s[2]
print(s2)
s3 = s[-1]
print(s3)

切片 顾头不顾腚

s4 = s[0:3]
print(s4)
s41 = s[:3]
print(s41)
s5 = s[3:7]
print(s5)
s6 = s[:]
print(s6)

步长

s7 = s[:5:2]
print(s7)
s8 = s[:7:3]
print(s8)

反向步长

s7 = s[-1:-5:-1]
print(s7)

常用操作方法

*** 首字母大写,其他字母小写

s = 'python'
s1 = s.capitalize()
print(s1)

***全部大写,全部小写

s2 = s.upper()
s3 = s.lower()
print(s2,s3) code = 'aeQu'.upper() your_code = input('请输入验证码').upper()
if your_code == code:
print('验证码输入成功')

* 居中center

s = 'pthon'
s4 = s.center(30)
print(s4)
s4 = s.center(30,'*')
print(s4)

**大小写翻转

s5 = s.swapcase()
print(s5)
s = 'woshiwangqingbin'

每个单词的首字母大写(非字母隔开)

s6 =s.title()
print(s6)

***判断以什么为开头,以什么为结尾。

s = 'wangqingbin'
startswith endswith()
s7 = s.startswith('w')
s71 = s.startswith('wq')
s72 = s.startswith('wang')
s73 = s.startswith('wangqing')
s74 = s.startswith('q', 4)
print(s74)
print(s7,s71,s72,s74)

***去除首尾的 空格,换行符\n,tab \t

去除左边的空格,换行符,tab lstrip()

去除右边的空格,换行符,tab rstrip()

去除两边的空格strip()

s = '  wangqingbin '
s = '\nwangqingbin\t'
print(s)
print(s.strip())
print(s.lstrip())
print(s.rstrip())
 name = input('请输入用户名:').strip()
if name == 'wangqingbin':
print(666) s = ',wangqingbin'
print(s.strip(',wang'))

*** find index 通过元素找索引

find

S.find(sub[, start[, end]]) -> int or Return -1 on failure.

s = 'wang'
print(s.find('w'))
print(s.find('a',3))
print(s.find('x'))

index

raise ValueError on failure

print(s.index('x'))

*** count 寻找元素出现的个数 可切片

s = 'alexex'
print(s.count('e'))
print(s.count('ex'))

***replace 替换

s = ’123王庆斌王庆斌123‘
s1 = s.replace('王庆斌', '小粉嫩')
print(s1)
s2 = s.replace('王庆斌', '小粉嫩',1)
print(s2)
s3 = s.replace('王庆斌', 'sb')
print(s3)

***** split 分割 str ---> list

s = 'wang qing bin'
print(s.split(' '))
s1 = 'wang,qing,bin'
print(s1.split(','))
s2 = 'wangaqingsabin'
print(s2.split('a'))
s3 = 'wangaqingsabin'
print(s3.split('a',1)) # 分割次数

* isxxx

print(name.isalnum()) #字符串由字母或数字组成

print(name.isalpha()) #字符串只由字母组成

print(name.isdigit()) #字符串只由数字组成

name='123a'
if name.isdigit():
name = int(name)
print(name,type(name))
else:
print('您输入的由非数字元素')

*****len

s = 'fdsafdsaf'
print(len(s))
count = 0
s = 'fdsafdsag'
print(s[0])
print(s[1])
print(s[2])
while count < len(s):
print(s[count])
count += 1
for i in s:
print(i)

list

索引,切片,步长

li = ['wang', 123, True, (1, 2, 3, 'bin'), [1, 2, 3, 'qing',], {'name':'wang'}]
print(li[0])
print(li[2])
print(li[1:4])
print(li[:5:2])
print(li[-1:-3:-1])
li = [1,'a','b','a',2,3,'wang']

append
li.append('bin')
print(li.append('bin'))
li.append([1,2,3]) name_list = ['wang' ,'qing','bin','cute','pi']
while True:
name = input('请输入新员工姓名:Q/q')
if name.upper() == 'Q':break
else:
name_list.append(name)
print('已成功添加新员工%s' % name)
print(name_list)
print(li)

>>> a=[1,2,3]
>>> b=[2,3,4]
>>> print(id(a))
60916920
>>> print(id(a+b))
61421568
>>>a+b
[1,2,3,2,3,4]

insert 插入

li.insert(2,'小三')
print(li)
extend 迭代添加,到最后
li.extend('ABC')
li.extend([1,2,3])
print(li)

pop 按索引删除

li.pop() # 默认删除最后一个

li.pop(1) # 默认删除最后一个

s = li.pop(1)
print(s)
print(li) remove
li.remove('a')
print(li)

clear 清空内容

li.clear()
print(li)

del 删除列表 切片删除

删除列表
del li
print(li) 切片删除
del li[:3]
del li[:3:2]
print(li)

改 按照索引改

print(li[1])
li[1] = 'A'
print(li[1])
li[1] = [11,22,33,44]
print(li)

按照切片去改

li[:3] = 'Q'
print(li)
li[:3] = 'sonesb'
print(li)
li[:3] = [11,22,33,44]
print(li)

索引,切片步长,查看

print(li[:3])

for 循环

for i in li:
print(i)
l1 = [1, 2, 1, 7, 5, 4, 9, 8, 3]

index 通过元素找索引

print(li.index('a'))

其他操作方法:

sort 从小到大,正向排序

l1.sort()
print(l1)
从大到小,反向排序
l1.sort(reverse=True)
print(l1)

翻转reverse

l1.reverse()
print(l1)

len 长度

print(len(l1))
li = [1,'a','b','a',2,3,'少年阿宾']
count
print(l1.count(1))

tuple

tu = (1,2,'wang','qing')
print(tu[:2])
print(tu[2])
for i in tu:
print(i)

儿子不能改,孙子可能改

tu1 = (1,2,'alex',[1,'cte'],(1,2,3),'binge')
tu1[3].append('1')
print(tu1)
li = [1,(1,2,3)]

可加(重新返回)

>>> a=(1,2,3)
>>> b=(2,3,4)
>>> a+b
(1, 2, 3, 2, 3, 4)

count()

len()

index()

note: range 当成一个数字列表,范围

for i in range(100): # [0,1,2,。。。99]
print(i)
for i in range(0,10,2): # [0,1,2,。。。99]
print(i)
for i in range(10,0,-1): # [0,1,2,。。。99]
print(i)
li = [2,3,'12',4,5]
for i in li:
print(li.index(i))
for i in range(0,len(li)):
print(i)
li = [1,2,3,['12','123','binge'],4]
'''
for i in li:
print(i)
for ....
'''

dict

dic = {"name":"wqbin",
"age":18,
"sex":"male",
}
print(dic)

哈希表:

print(hash('name'))

print(hash('fsagffsadgsdafgfdsagsadfgfag'))

print(hash('age'))

第一种: 有则覆盖,无则添加

dic['hobby'] = 'girl'
print(dic)
dic['name'] = 'wusir'
print(dic)

第二种 setdeafult 无则添加,有则不变。

dic.setdefault('hobby')
dic.setdefault('hobby','girl')
dic.setdefault('name','ritian')
print(dic)

pop  有返回值
print(dic.pop('age'))
print(dic)
dic.pop('hobby') # 报错
print(dic.pop('hobby', None)) # 返回你设定的值

clear() 清空

dic.clear()
print(dic)

del

del dic
print(dic)
del dic['name']
print(dic)
dic.popitem() # 随机删除 有返回值
print(dic.popitem())
print(dic)

dic['name'] = '斌哥'
print(dic)
两个字典的改
dic = {"name":"逼格","age":18,"sex":"male"}
dic2 = {"name":"斌哥","weight":75}
dic2.update(dic) # 将dic键值对,覆盖并添加到dic2
print(dic)
print(dic2)

print(dic['name'])
print(dic['name1']) # 报错 print(dic.get('name'))
print(dic.get('name1')) # 默认返回None
print(dic.get('name1','没有此键值对')) # 默认返回None

其他方法:

keys() values() items()
print(dic.keys(),type(dic.keys()))
print(dic.keys())

keys()

for i in dic.keys():
print(i)
for i in dic:
print(i)
li = list(dic.keys())
print(li)

values()

print(dic.values())
for i in dic.values():
print(i)

items()

print(dic.items())
for i in dic.items():
print(i) 特殊类型 dict 转化 成list
print(list(dic.keys()))

概念:分别赋值

a,b = 2,3
print(a,b)
a,b = (2,3)
print(a,b)
a,b = [2,3]
print(a,b)
a = 4 ,b = 5
a = 4
b = 5
a,b = b,a
print(a,b)
print(dic.items())
for k,v in dic.items():
print(k,v)

字典的嵌套

dic = {"name_list":['张三','lisi','隔壁王叔叔'],

'dic2':{'name':'阿宾','age':12},

}

1 ,给列表追加一个元素:'旺旺'

l1 = dic['name_list']
l1.append('旺旺')
dic['name_list'].append('旺旺')
print(dic)

2,给列表lisi全部大写

print(dic['name_list'][1].upper())
dic['name_list'][1] = dic['name_list'][1].upper()
print(dic)

3,给dic2 对应的字典添加一个键值对:hobby:girl.

dic['dic2']['hobby'] = 'girl'
print(dic)

练习1

1、使用while循环输入 1 2 3 4 5 6 8 9 10

2、求1-100的所有数的和

sum = 0
count = 1
while count < 101:
sum = sum + count
count += 1 # count = count + 1
print(sum)

3、输出 1-100 内的所有奇数

count = 1
while count < 101:
print(count)
count += 2 count = 1
while count < 101:
if count % 2 == 1:
print(count)
count += 1

4、求1-2+3-4+5 ... 99的所有数的和

sum = 0
count = 1
while count < 100:
if count % 2 == 0:
sum -= count
else:
sum += count
count += 1
print(sum)

5、用户登陆(三次机会重试)

username = 'OldBoy'
password = '123'
i = 0
while i < 3:
name = input('请输入用户名:')
pwd = input('请输入密码:')
if name == username and pwd == password:
print('登陆成功')
break
else:
print('用户名或密码错误')
i += 1

6、写代码:计算 1 - 2 + 3 ... + 99 中除了88以外所有数的总和?

sum = 0
count = 0
while count < 99:
count += 1
if count == 88:
continue
if count % 2 == 0:
sum -= count
else:
sum += count
print(sum)

7、用户登陆(三次输错机会)且每次输错误时显示剩余错误次数(提示:使字符串格式化)

username = 'wqb'
password = '123'
i = 0
while i < 3:
name = input('请输入用户名:')
pwd = input('请输入密码:')
if name == username and pwd == password:
print('登陆成功')
break
else:
print('用户名或密码错误,还剩%s机会' % (2-i))
i += 1
if i == 3:
choice = input('是否还想在试试?Y')
if choice == 'Y':
i = 0
else:
print('还要不要脸了....')

8、实现一个整数加法计算器(两个数相加):

如:content = input(‘请输入内容:’)

如用户输入:5+9或5+ 9或5 + 9,然后进行分割再进行计算。

content = input("请输入内容:").strip().split('+')
print(content)
num = int(content[0]) + int(content[1])
print(num)

9,计算用户输入的内容中有几个整数。

如:content = input(‘请输入内容:’) # 如fhdal234slfh98769fjdla

content = input('请输入内容:')
count = 0
for i in content:
if i.isdigit():
count += 1
print(count)
content = input("input:")
n = len(content)
m = 0
ls = []
s = ''
while m < n:
if content[m].isdigit():
s = s+content[m]
if not content[m+1].isdigit():
ls.append(int(s))
m+=1
s = ''
else:
m+=1 for x in ls:
print(ls)
content = input("请输入你想输入的内容:")
s = ''
ls = []
n = len(content)
m = 0
num = 0
while m<n:
if content[m].isdigit():
s = s + content[m]
if not content[m+1].isdigit():
ls.append( int(s))
s = ''
m+=1
else:
m+=1 print(len(ls))
for x in ls:
print(type(x))
print(x)
s = 'fdsafdsa'
for i in s:
print(i)
else:
print(666)

10、写代码,有如下列表,按照要求实现每一个功能。

lis = [2,3,'k',['qwe',20,['k1',['tt',3,’1’]],89],’ab’,’adv’]

1)将列表lis中的’tt’变成大写(用两种方式)。

2)将列表中的数字3变成字符串’100’(用两种方式)。

3)将列表中的字符串’1’变成数字101(用两种方式)。

lis = [2,3,'k',['qwe',20,['k1',['tt',3,'1']],89],'ab','adv']
lis[3][2][1][0] = 'TT'
print(lis)
lis[3][2][1][0] = lis[3][2][1][0].upper()
print(lis)
lis[3][2][1][1] = '100'
print(lis)
lis[3][2][1][1] = str(lis[3][2][1][1] + 97)
print(lis)
lis[3][2][1][2] = int(lis[3][2][1][2]) + 100
print(lis)
lis[3][2][1][2] = int(lis[3][2][1][2] + '01')
print(lis)

11、查找列表li中的元素,移除每个元素的空格, for i.strip()

并找出以’A’或者’a’开头,

并以’c’结尾的所有元素,

并添加到一个新列表中,最后循环打印这个新列表。

li = [‘taibai ’,’alexC’,’AbC ’,’egon’,’ Ritian’,’ Wusir’,’ aqc’]

for

li = ['tso ','aC','AbC ','on','ck',' sir','  aqc']
l1 = []
for i in li:
i = i.strip()
if i[0].upper() == 'A' and i[-1] == 'c':
l1.append(i)
print(l1)
l1 = []
for i in li:
i = i.strip()
if (i.startswith('A') or i.startswith('a')) and i.endswith('c'):
l1.append(i)
print(l1)

12、开发敏感词语过滤程序,提示用户输入评论内容,

如果用户输入的内容中包含特殊的字符:

敏感词列表 li = ["苍老师","东京热","武藤兰","波多野结衣"]

则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;

如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中

li = ['苍老师','东京热','武藤兰','波多野结衣']
ret = input('input:') # ***东京热武藤兰波多野结衣小泽玛利亚松岛枫 l1 = []
for i in li:
ret = ret.replace(i,"*"*len(i)) # ******武藤兰波多野结衣小泽玛利亚松岛枫
l1.append(ret)
print(l1)
lis = []
for i in li:
ret = ret.replace(i,len(i) * '*')
lis.append(ret)
print(lis)

13

av_catalog = {
"欧美":{
"www.youporn.com": ["很多免费的,世界最大的","质量一般"],
"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌丝请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]
},
"大陆":{
"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
}

1,给此 ["很多免费的,世界最大的","质量一般"]列表第二个位置插入一个元素:'量很大'。

av_catalog['欧美'][ "www.youporn.com"].insert(1,'量很大')
print(av_catalog)

2,将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。

av_catalog['欧美']["x-art.com"].remove("全部收费,屌丝请绕过")
print(av_catalog)

3,将此 ["质量很高,真的很高","全部收费,屌丝请绕过"]列表的 "全部收费,屌丝请绕过" 删除。

4,将此["质量怎样不清楚,个人已经不喜欢日韩范了","verygood"]列表的 "verygood"全部变成大写。

5,给 '大陆' 对应的字典添加一个键值对 '1048' :['一天就封了']

6,删除此"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"]键值对。

7,给此["全部免费,真好,好人一生平安","服务器在国外,慢"]列表的第一个元素,加上一句话:'可以爬下来'

av_catalog['大陆']['1024'][0] = av_catalog['大陆']['1024'][0] + '可以爬下来'
print(av_catalog)
av_catalog['大陆']['1024'][0] += '可以爬下来'
print(av_catalog)

14、有字符串"k :1|k1 :2|k2 :3|k3 :4" 处理成字典 {'k':1,'k1':2....}

s = 'k:1|k1:2|k2:3|k3:4'
li = s.split('|')
dic = {}
for i in li:
dic[i.split(':')[0]] = int(i.split(':')[1])
print(dic)
dic = {'k':1,'k1':2}
dic = {}
for i in s.strip().split('|'): # ['k:1','k1:2'。。。。]
i = i.strip().split(':') # ['k ','1']
dic[i[0].strip()] = int(i[1])
print(dic)

15、元素分类

有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}

dic = {'k1':[],'k2':[]}
li= [11,22,33,44,55,77,88,99,90]
for i in li:
if i > 66:
dic['k1'].append(i)
else:
dic['k2'].append(i)
print(dic)
li= [11,22,33,44,55,77,88,99,90]
dic = {}
for i in li:
····

16、输出商品列表,用户输入序号,显示用户选中的商品

商品 li = ["手机", "电脑", '鼠标垫', '游艇']

要求:

1:页面显示 序号 + 商品名称,如:

1 手机

2 电脑 …

2: 用户输入选择的商品序号,然后打印商品名称

3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。

4:用户输入Q或者q,退出程序。

li = ["手机", "电脑", '鼠标垫', '游艇']

while True:
for i in li:
print('{}\t{}'.format(li.index(i)+1,i))
num = input('请输入商品序号:q/Q退出').strip()
if num.isdigit():
num = int(num)
if num > 0 and num <= len(li):
print(li[num - 1])
else:
print('您输入的选项,超出范围,请重新输入')
elif num.upper() == 'Q':break
else:
print('输入的有非数字,请重新输入')