P31 翻转字典的键值对输出
a = input("")
try:
b = eval(a) #用eval函数将字典格式的字符串转为字典
c = {} #创建空字典
for i in b:
c[b[i]] = i #键和值互换位置
print(c)
except:
print("输入错误")
P32 班长选举
dit = {"Tom":0, "Rose":0, "Bill":0} #创建词典
for i in range(8): #投票8次
name = input()
if name in dit: #名字在字典里,值加一
dit[name] += 1
max_name = max(dit,key = dit.get) #找到字典中最大值的那一项
max_num = dit[max_name]
print(max_name,max_num)
P111 摩斯密码翻译器
morse = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
digit = ['-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
punctuation = {'.': '.-.-.-', ':': '---...', ',': '--..--', ';': '-.-.-.', '?': '..- -..', '=': '-...-', "'": '.----.', '/': '-..-.', '!': '-.-.--', '-': '-....-', '_': '..--.-', '"': '.-..-.', '(': '-.--.', ')': '-.--.-', '$': '...-..-', '&': '·-···', '@': '.--.-.', ' ': ''}
import string
# 已知摩斯密码数字和字母列表以及符号字典
#将数字列表打包转化为字典
digits_dict = dict(zip(string.digits, digit))
#将字母列表打包转化为字典
letters_dict = dict(zip(string.ascii_lowercase, morse))
#更新合并所有字典
morse_dict = {}
morse_dict.update(letters_dict)
morse_dict.update(digits_dict)
morse_dict.update(punctuation)
#将输入的字母转化为小写
txt = input().lower()
morsetxt = []
#遍历输入的字符串
for i in txt:#转化为摩斯密码
morsetxt.append(morse_dict.get(i,i))
print(" ".join(morsetxt))
P112 字符统计
import random
txt = '''Ifthereisonlyoneargument,itmustbeadictionarymappingUnicode |ordinals(integers)orcharacterstoUnicodeordinals,stringsorNone. |Characterkeyswillbethenconvertedtoordinals. |Iftherearetwoarguments,theymustbestringsofequallength,and |intheresultingdictionary,eachcharacterinxwillbemappedtothe |characteratthesamepositioniny.Ifthereisathirdargument,it |mustbeastring,whosecharacterswillbemappedtoNoneintheresult.'''
t1 = list(txt) #将文本转化为列表
str = input("")
x, m, n = map(int,str.split(" ")) #用空格分割输入内容 map(int, ...) 会返回一个整数迭代器
random.seed(x) #设置种子
random.shuffle(t1) #打乱列表
t2 = t1[m:n+1] #分割出m,n区间
count = {}
for ch in t2: #遍历列表t2
count[ch] = count.get(ch,0) + 1 #对字符计数
str_count = list(count.items(),)
str_count.sort(key=lambda x:x[1], reverse=True) #从大到小排序
for i in range(0,5): #选择频率前五的字符输出
print("{}:{}".format(str_count[i][0],str_count[i][1])) #将次数和字母按格式输出
# print(" """.join(str_count))
P113 集合操作
import random
txt = '''Ifthereisonlyoneargument,itmustbeadictionarymappingUnicode |ordinals(integers)orcharacterstoUnicodeordinals,stringsorNone. |Characterkeyswillbethenconvertedtoordinals. |Iftherearetwoarguments,theymustbestringsofequallength,and |intheresultingdictionary,eachcharacterinxwillbemappedtothe |characteratthesamepositioniny.Ifthereisathirdargument,it |mustbeastring,whosecharacterswillbemappedtoNoneintheresult.'''
lt = list(txt) #将字符串转换成列表lt
x, m1, n1, m2, n2 = map(int,input().split()) #输入随机种子x,四个正整数m1、n1、m2和n2
random.seed(x) #设置种子
random.shuffle(lt) #打乱lt
lt1 = lt[m1:n1] #分割列表
lt2 = lt[m2:n2]
print(f"lt1中出现了{len(set(lt1))}个不同的字符")
print(f"lt2中出现了{len(set(lt2))}个不同的字符")
print(f"同时出现在lt1和lt2中的字符为:{' '.join(sorted(set(lt1) & set(lt2)))}")
print(f"出现在lt1,但没在lt2中的字符为:{' '.join(sorted(set(lt1) - set(lt2)))}")