1.实现lower函数
import string
def lower_word(a):
if not isinstance(a,str):
return None
result=""
for i in a:
if i in string.ascii_uppercase:
result+=chr(ord(i)+32)
#result+=i.lower()
else:
result+=i
return result
print(lower_word("Hello WORLD"))
2.实现upper函数
import string
def upper_word(a):
if not isinstance(a,str):
return None
result=""
for i in a:
#if i in string.ascii_lowercase:
if i<="z" and i>="a":
result+=chr(ord(i)-32)
else:
result+=i
return result
print(upper_word("Hello WORLD"))
3.实现find函数,返回所有位置
def find(a,dest_str):
"找到所有dest_str并返回位置"
if not isinstance(a,str) or not isinstance(dest_str,str):
return None
flag=0
result=[] #储存dest_str位置
while flag<len(a):
if a[flag:(flag+len(dest_str))]==dest_str :
result.append(flag)
flag+=len(dest_str)
else:
flag+=1
return result
print(find("hello world ll","ll"))
#结果:[2, 12]
4.实现strip函数
def strip(s,del_str=" \r\n\r\n"):
if not isinstance(s,str):
return None
result=""
flag1=0
while 1:
if s[flag1:flag1+len(del_str)]==del_str:
result=s[flag1+len(del_str):]
flag1+=len(del_str)
else:
break
if result=="":
result=s
else:
s = result
flag2=0
while 1:
if s[len(s)-flag2-len(del_str):len(s)-flag2:]==del_str:
result = s[:len(s)-flag2-len(del_str)]
flag2 += len(del_str)
else:
break
return result
print("1",strip(" hello "))
print("2",strip("**hello***","*"),)
print("3",strip(" hello***","*"))
print("3",strip("** hello%#$ ","*"))
print("1",strip(" hello ","\n"))
#缺陷:默认值
def strip(s,del_str=" \r\n\t"):
"""
算法:
1 声明一个result的str变量为空字符串
2 声明一个left的变量为0
3 正序遍历s,判断前面的元素是否属于del_str中的一个,如果是什么都不做
如果不是把这个坐标赋值给left
4 声明一个right的变量为-1
5 倒序遍历s,判断后面的元素是否属于del_str中的一个,如果是什么都不做
如果不是把这个坐标赋值给right
6 return s[left:right+1]
"""
left=0
right=-1
for i in range(len(s)):
if s[i] not in del_str:
left=i
break
for i in range(-1,-len(s)-1,-1):
if s[i] not in del_str:
right=i
break
if right==-1:
right=len(s)
return s[left:right+1]
print("1",strip(" hello "))
print("2",strip("**hello***","*"),)
print("3",strip(" hello***","*"))
print("4",strip("** hello","*"))
print("5",strip("** hello%#$ ","*"))
5.实现swapcase函数:
def swapcase(s):
if not isinstance(s,str):
return None
result=""
for i in s:
if "A"<=i<="Z":
result+=chr(ord(i)+32)
elif "a"<=i<="z":
result+=chr(ord(i)-32)
else:
result+=i
return result
print(swapcase("Hello WORld"))
6.实现capitalize函数:
def capitalize(s):
"""
capitalize函数计算的结果首字母大写,后面的字母如果是大写则转为小写
"""
if not isinstance(s[0],str):
return None
l=s.replace(s[0],s[0].upper())
result=l[0]
for i in l[1:]:
result+=i.lower()
return result
print(capitalize("hELLO"))
7.实现replace函数
def replace(s,source_str,dest_str,times):
"""
算法:
用split,把source_str切掉,用dest_str再join
"""
if not isinstance(s,str):
return None
l=[]
result=""
l=s.split(source_str,times)
result=dest_str.join(l)
return result
print(replace("hello","l","pp",1))
#结果:hepplo
def replace(s,source_str,dest_str,times):
"""
1 定义一个result字符串变量
2 对应一个postion的列表变量,存放所有要替换字符串的起始位置
3 找到s中所有的source_str所在的坐标起始位置,放到position
4 用while基于位置做遍历,如果坐标是source_str所在的坐标起始位置,
则直接拼接dest_str,跳过source_str长度的坐标位置,继续遍历
如果不是起始位置,则直接拼接到result中。
5 返回执行结果
"""
if not isinstance(s,str) or not isinstance(source_str,str) or not isinstance(dest_str,str):
return None
result=""
position=[]
dest_len=len(source_str)
i=0
while i<len(s):
if s[i:i+dest_len]==source_str:
position.append(i)
i+=dest_len
else:
i+=1
#找到要替换词所在位置
print(position)
i=0
flag=0
while i < len(s): #替换操作
if flag<times:
if i in position:
result+=dest_str
i+=len(source_str)
flag+=1
else:
result += s[i]
i += 1
else:
result += s[i]
i += 1
return result
print(replace("hellol","l","pp",2))
8.综合练习
#输入一组数字,每个数字加1输出
num=input("请输入一组数字:")
l=list(num)
l1=[]
for i in l:
l1.append(str(int(i)+1))
print(l1)
print(int("".join(l1)))
#输入一组数字,每个数字加1输出
num=input("请输入一组数字:")
l=list(num)
l1=[]
for i in l:
l1.append(str(int(i)+1))
print(l1)
print(int("".join(l1)))
#输入一组数字,每个数字加1输出
num=input("请输入一组数字:")
length=len(num)
num=int(num)+int(length*"1")
print(num)
#生成五个1:11111
result=0
for i in range(5):
result+=pow(10,i)
print(result)
#生成五个1:11111
result=1
for i in range(4):
result=result*10+1
print(result)
print(result)
#删除字符串中的小写字母
s="abcABCDJE@*$@etCMDejf!"
new_s=""
for i in s:
if i>="a" and i<="z":
pass
else:
new_s+=i
print(new_s)
#统计list有多少不同类的数据,并生成字典展示
a=[1,1.1,[2,3],"e",2.2,2,{1:2},[1,2,3],"stt"]
result={}
for i in a:
flag=str(type(i))[8:-2]
if flag in result.keys():
result[flag]+=1
else:
result[flag]=1
print(result)
#方法二:
a=[1,1.1,[2,3],"e",2.2,2,{1:2},[1,2,3],"stt"]
def list_type(l):
d={}
for i in l:
d[str(type(i))]=d.get(str(type(i)),0)+1
#Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
return d
print(list_type(a))
#翻转字符串
>>> a="helloworld"
>>> a[-1::-1]
'dlrowolleh'
>>> "".join(reversed(list(a)))
'dlrowolleh'
>>> from functools import reduce
>>> result = reduce(lambda x,y:y+x,a)
>>> result
'dlrowolleh'