"""
题目3: 设计一个函数,统计字符串中英文字母和数字各自出现的次数
"""defcount_letter_number(string):"""
:param string: 给定一个字符串
:return: 由字符串中英文字母和数字各自出现的次数组成的元组
"""
n =0
m =0for s in string:if s in'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ':
n +=1elif s in'0123456789':
m +=1return n, m
defmain():print(count_letter_number('a1b2c3d4'))# (4, 4)print(count_letter_number('a123456b'))# (2, 6)print(count_letter_number('123456!!'))# (0, 6)if __name__ =='__main__':
main()
"""
题目5: 设计一个函数,计算字符串中所有数字序列的和
"""from re import findall
defsum_num_seq(string):
total =0for val inmap(int, findall(r'\d+', string)):
total += val
return total
defmain():print(sum_num_seq('a1b2c3d4'))# 10print(sum_num_seq('123hello456good789bye'))# 1368print(sum_num_seq('12345678'))# 12345678print(sum_num_seq('abcdefgh'))# 0if __name__ =='__main__':
main()
"""
题目6: 设计一个函数,对传入的字符串(假设字符串中只包含小写字母和空格)进行加密操作,
加密的规则是a变d,b变e,c变f,……,x变a,y变b,z变c,空格不变,返回加密后的字符串
"""defcaesar_encrypt(string):"""
:param string: 给定一个字符串
:return: 返回加密后的字符串
"""
new_string =''
all_string ='abcdefghijklmnopqrstuvwxyz'for x in string:if x in all_string:
index = all_string.find(x)if index >=len(all_string)-3:
new_string += all_string[len(all_string)- index +3]else:
new_string += all_string[index +3]else:
new_string += x
return new_string
defmain():print(caesar_encrypt('attack at dawn'))# dwwdfn dw gdzqprint(caesar_encrypt('dinner is on me'))# glqqhu lv rq phif __name__ =='__main__':
main()
"""
题目6: 设计一个函数,对传入的字符串(假设字符串中只包含小写字母和空格)进行加密操作,
加密的规则是a变d,b变e,c变f,……,x变a,y变b,z变c,空格不变,返回加密后的字符串
"""defcaesar_encrypt(string):
base =ord('a')
encrypted_string =''for ch in string:if ch !=' ':
curr =ord(ch)
diff =(curr - base +3)%26
ch =chr(base + diff)
encrypted_string += ch
return encrypted_string
defmain():print(caesar_encrypt('attack at dawn'))# dwwdfn dw gdzqprint(caesar_encrypt('dinner is on me'))# glqqhu lv rq phif __name__ =='__main__':
main()
"""
题目7: 设计“跳一跳”游戏的计分函数,“跳一跳”游戏中黑色小人从一个方块跳到另一个方块上会获得1分,
如果跳到方块的中心点上会获得2分,连续跳到中心点会依次获得2分、4分、6分、……。该函数传入一个列表,
列表中用布尔值True或False表示是否跳到方块的中心点,函数返回最后获得的分数
"""defcalc_score(jump_list):"""
:param jump_list: 给定一个列表
:return: 返回最后获得的分数
"""
total =0for index, x inenumerate(jump_list):if x:
total +=2for y inrange(index -1,-1,-1):if jump_list[y]:
total +=2else:breakelse:
total +=1return total
defmain():
list1 =[True,False,False,True,True,True]
list2 =[True,True,True,True,False,True,True]
list3 =[False,False,True,True,True,True,True,False]print(calc_score(list1))# 16print(calc_score(list2))# 27print(calc_score(list3))# 33if __name__ =='__main__':
main()
"""
题目7: 设计“跳一跳”游戏的计分函数,“跳一跳”游戏中黑色小人从一个方块跳到另一个方块上会获得1分,
如果跳到方块的中心点上会获得2分,连续跳到中心点会依次获得2分、4分、6分、……。该函数传入一个列表,
列表中用布尔值True或False表示是否跳到方块的中心点,函数返回最后获得的分数
"""defcalc_score(jump_list):
total =0
prev_on_center =False
on_center_point =2for val in jump_list:if val:
total += on_center_point
on_center_point +=2
prev_on_center =Trueelse:
total +=1
on_center_point =2
prev_on_center =Falsereturn total
defmain():
list1 =[True,False,False,True,True,True]
list2 =[True,True,True,True,False,True,True]
list3 =[False,False,True,True,True,True,True,False]print(calc_score(list1))# 16print(calc_score(list2))# 27print(calc_score(list3))# 33if __name__ =='__main__':
main()
"""
题目8: 设计一个函数,统计一个字符串中出现频率最高的字符及其出现次数
"""deffind_most_freq(string):"""
:param string: 输入一个字符串
:return: 返回字符串中出现频率最高的字符及其出现次数
"""
my_dict={}for x in string:if x notin my_dict:
my_dict[x]=1else:
my_dict[x]+=1
max_num =0for y in my_dict:if my_dict[y]> max_num:
max_num = my_dict[y]
max_list =[]for z in my_dict:if my_dict[z]== max_num:
max_list += z
return max_list, max_num
defmain():print(find_most_freq('aabbaaccbb'))# (['a', 'b'], 4)print(find_most_freq('hello, world!'))# (['l'], 3)print(find_most_freq('a1bb2ccc3aa'))# (['a', 'c'], 3)if __name__ =='__main__':
main()
"""
题目8: 设计一个函数,统计一个字符串中出现频率最高的字符及其出现次数
"""deffind_most_freq(string):
result_dict ={}for ch in string:if ch in result_dict:
result_dict[ch]+=1else:
result_dict[ch]=1
max_keys =[]
max_value =0for key, value in result_dict.items():if value > max_value:
max_value = value
max_keys.clear()
max_keys.append(key)elif value == max_value:
max_keys.append(key)return max_keys, max_value
defmain():print(find_most_freq('aabbaaccbb'))# (['a', 'b'], 4)print(find_most_freq('hello, world!'))# (['l'], 3)print(find_most_freq('a1bb2ccc3aa'))# (['a', 'c'], 3)if __name__ =='__main__':
main()