西南科技大学Python平时作业三

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)))}")

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值