"""习题 1:一个列表,排重,不能用 set,也不能用字典"""
#方法一1:循环、遍历
l = [1,1,1,2,2,3,4,4,6]
new_l=[]for i inl:if i not innew_l:
new_l.append(i)print(new_l)#方法2:set
l = [1,1,1,2,2,3,4,5,5]
result=list(set(l))print(result)#方法3:字典
l = [1,1,1,2,2,3,4,5,5]
result_d={}for i inl:if str(i) inresult_d:
result_d[str(i)]+= 1
else:
result_d[str(i)]=1
print(result_d)for k,v inresult_d.items():print(k)#方法4:通过删除index
s = [1,1,1,2,2,3,4,4]
t= s[1:]for i ins:while t.count(i) > 1:delt[t.index(i)]print(t)"""习题 2:判断一个输入的句子中有多少个字母"""s= 'I am a good girl!! 888~~~'letters_num=0importstringfor i ins:if i instring.ascii_letters:
letters_num+= 1
print(letters_num)"""习题 3、倒序取出每个单词的第一个字母。"""
#方式 1:
s = "I am a good boy"result=[]
s_list=s.split()print(s_list)for word ins_list:
result.append(word[0])print(result[::-1])#方法2:
s = "I am a good boy"result=[]
s_list=s.split()for word in range(len(s_list)-1,-1,-1):
result.append(s_list[word][0])print(result)"""习题 4:找出 s=”aabbccddxxxxffff”中,出现次数最多 的字母"""
#方法1:字典
s = "aabbccddxxxxffff"res_d={}for i ins:if i inres_d:
res_d[i]+= 1
else:
res_d[i]= 1
print(res_d)
max_times=max(res_d.values())for k,v inres_d.items():if v ==max_times:print(k)"""习题 5、自定义 count 函数"""
#只统计单个字符出现次数情况
s = 'aabbddkfrioss1211123'
defmy_Count(s,letter):
letter_count=0if not isinstance(s,str) or notisinstance(letter,str):return0else:for i ins:if i ==letter:
letter_count+= 1
returnletter_countprint(my_Count(s,'a'))print(my_Count(s,'1'))#兼容统计多个字符出现次数的情况#1、首先求出需要查找字符串的长度#2、遍历源字符串,如果当前索引加上子串长度对应的字符串等于要查找字符串的话次数加
s = 'I am a good good good boy!!! 8888~~~'s= 'I am a good good good boy!!! 8888~~~ am am a'
defmyCount(s,word):
word_num=0
length=len(word)if not isinstance(s,str) or notisinstance(word,str):return0if word not ins:return0else:for i inrange(len(s)):if s[i:i+length] ==word:
word_num+= 1
returnword_numprint(myCount(s,'good'))print(myCount(s,'a'))"""习题6:自定义divmod函数"""
defmyDivmod(num1,num2):if not isinstance(num1,int) or notisinstance(num2,int):return0
a= num1 //num2
b= num1 %num2returna,bprint(myDivmod(5,2))"""习题 7、把字符串中的所有数字去掉"""s= 'abc123fhler23998~~'result=[]for i ins:if i not in '0123456789':
result.append(i)print(''.join(result))#保留字符串中的字母
print(''.join(i for i in s ifi.isalpha()))print(''.join(filter(lambdax:x.isalpha(),s)))#去掉字符串中数字
print(''.join(v for v in s if v not in '0123456789'))print(''join(filter(lambda x:x not in '0123456789',s)))"""习题6:自定义divmod函数"""
defmyDivmod(num1,num2):if not isinstance(num1,int) or notisinstance(num2,int):return0
a= num1 //num2
b= num1 %num2returna,bprint(myDivmod(5,2))"""习题 7、把字符串中的所有数字去掉"""s= 'abc123fhler23998~~'result=[]for i ins:if i not in '0123456789':
result.append(i)print(''.join(result))#保留字符串中的字母
print(''.join(i for i in s ifi.isalpha()))print(''.join(filter(lambdax:x.isalpha(),s)))#去掉字符串中数字
print(''.join(v for v in s if v not in '0123456789'))print(''.join(filter(lambda x:x not in '0123456789',s)))"""习题8:三个数排序"""
defmySort(num1,num2,num3):if num1 >num2:
num1,num2=num2,num1if num1 >num3:
num1,num3=num3,num1if num2 >num3:
num2,num3=num3,num2returnnum1,num2,num3print(mySort(2,6,1))"""习题9:求一个列表中的最大值"""
defmax(s):
max_num=s[0]for i ins:if i >max_num:
max_num=ireturnmax_numprint(max([1,2,9,3]))"""习题10:求一个列表中的最大值、第二大的值"""
defsec_num(s):
max_num=s[0]
sec_num= s[1]for i ins:if i >max_num:
sec_num=max_num
max_num=i#sec_num = max_num
if max_num > i >sec_num:
sec_num=ireturnsec_numprint(sec_num([1,2,8,10,4]))