Contest RankList -- 高级语言程序实践--第7次作业--计信A2107-2113
目錄
問題 A: 列表嵌套字典的排序
問題 B: 字典查詢?
問題 C: 查詢省會(huì)?
問題 D: 摩爾斯電碼轉(zhuǎn)換?
?問題 E: 用字典來統(tǒng)計(jì)詞頻
問題 F: 字典更新
問題 G: 排序輸出字典中數(shù)據(jù)?
?問題 H: 打印商品名
?問題 I: 字符串壓縮
-------------------都是些基礎(chǔ)題-------------------------
問題 A: 列表嵌套字典的排序
題目描述
第一行輸入一個(gè)正整數(shù) N,隨后的N 行各輸入一個(gè)人的姓名和年齡,中間用空格分隔(形如 “Tom 18” ),將字符串轉(zhuǎn)為形如 {"name":"Tom","age":18} 的字典,按順序加入到列表中,得到一個(gè)元素為字典的列表,分別根據(jù)年齡和姓名對(duì)其排序輸出。
輸入
第一行輸入一個(gè)正整數(shù) N????????????????????????????????????????????????????????????????????????????????????????????????
隨后的N 行各輸入一個(gè)形如 “Tom? 18”?的字符串
輸出
根據(jù)年齡排序的列表????????????????????????????????????????????????????????????????????????????????????????????????
根據(jù)姓名排序的列表
樣例輸入?復(fù)制
4 Tom 18 Jerry 47 Cat 20 Doge 33樣例輸出?復(fù)制
[{'name': 'Tom', 'age': 18}, {'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}] [{'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}, {'name': 'Tom', 'age': 18}] def sort1(a):return a['age']def sort2(a):return a['name'] n=int(input()) d={} ans= [] a = {} for i in range(n):a[i]=input().split()d["name"] = a[i][0]d["age"] = int(a[i][1])ans.append(d.copy()) ans.sort(key = sort1) print(ans) ans.sort(key = sort2) print(ans)問題 B: 字典查詢?
?
題目描述
有字典?dict1 = {'趙廣輝':'13299887777','特朗普':'814666888','普京':'522888666','吳京':'13999887777'},編程實(shí)現(xiàn)查找功能,用戶輸入姓名,如在字典中存在,輸出“姓名:電話”,如不存在,則輸出“數(shù)據(jù)不存在”。
輸入
一個(gè)姓名
輸出
姓名:電話
樣例輸入?復(fù)制
趙廣輝樣例輸出?復(fù)制
趙廣輝:13299887777 dict1 = {'趙廣輝':'13299887777','特朗普':'814666888','普京':'522888666','吳京':'13999887777'} name=input() try:print("{}:{}".format(name,dict1[name])) except:print("數(shù)據(jù)不存在")問題 C: 查詢省會(huì)?
題目描述
總理有詩云:兩湖兩廣兩河山,五江云貴福吉安,四西二寧青甘陜,還有內(nèi)臺(tái)北上天。中國各省、直轄市、自治區(qū)和特別行政區(qū)的字典數(shù)據(jù)如下: capitals = {'湖南':'長沙','湖北':'武漢','廣東':'廣州','廣西':'南寧','河北':'石家莊','河南':'鄭州','山東':'濟(jì)南','山西':'太原','江蘇':'南京','浙江':'杭州','江西':'南昌','黑龍江':'哈爾濱','新疆':'烏魯木齊','云南':'昆明','貴州':'貴陽','福建':'福州','吉林':'長春','安徽':'合肥','四川':'成都','西藏':'拉薩','寧夏':'銀川','遼寧':'沈陽','青海':'西寧','海南':'海口','甘肅':'蘭州','陜西':'西安','內(nèi)蒙古':'呼和浩特','臺(tái)灣':'臺(tái)北','北京':'北京','上海':'上海','天津':'天津','重慶':'重慶','香港':'香港','澳門':'澳門'} 設(shè)計(jì)程序,接收用戶輸入的省、直轄市、自治區(qū)和特別行政區(qū)名稱,輸出對(duì)應(yīng)的省會(huì)名稱,當(dāng)輸入錯(cuò)誤時(shí)輸出“輸入錯(cuò)誤”。程序可以重復(fù)接收用戶輸入,直接輸入回車時(shí)退出程序。
輸入
一個(gè)或多個(gè)輸入????????????????????????????????????????????????????????????????????????????????????????????????
每行輸入一個(gè)省、直轄市、自治區(qū)或特別行政區(qū)名稱????????????????????????????????????????????????????????????????????????????????????????????????
最后一行輸入一個(gè)回車
輸出
輸出對(duì)應(yīng)的省會(huì)名稱????????????????????????????????????????????????????????????????????????????????????????????????
輸入輸出示例 ? 輸入 輸出
樣例輸入?復(fù)制
新疆 北京樣例輸出?復(fù)制
烏魯木齊 北京 capitals = {'湖南':'長沙','湖北':'武漢','廣東':'廣州','廣西':'南寧','河北':'石家莊','河南':'鄭州','山東':'濟(jì)南','山西':'太原','江蘇':'南京','浙江':'杭州','江西':'南昌','黑龍江':'哈爾濱','新疆':'烏魯木齊','云南':'昆明','貴州':'貴陽','福建':'福州','吉林':'長春','安徽':'合肥','四川':'成都','西藏':'拉薩','寧夏':'銀川','遼寧':'沈陽','青海':'西寧','海南':'海口','甘肅':'蘭州','陜西':'西安','內(nèi)蒙古':'呼和浩特','臺(tái)灣':'臺(tái)北','北京':'北京','上海':'上海','天津':'天津','重慶':'重慶','香港':'香港','澳門':'澳門'} while(1):n=input()if(n==""):break;try:print(capitals[n])except:print("輸入錯(cuò)誤")問題 D: 摩爾斯電碼轉(zhuǎn)換?
題目描述
摩爾斯電碼(又譯為摩斯密碼,Morse code)是一種時(shí)通時(shí)斷的信號(hào)代碼,通過不同的排列順序來表達(dá)不同的英文字母、數(shù)字和標(biāo)點(diǎn)符號(hào)。????????????????????????????????????????????????????????????????????????????????????????????????
編寫程序,把輸入的英文句子轉(zhuǎn)換成摩爾斯電碼并輸出電碼字符串。????????????????????????????????????????????????????????????????????????????????????????????????
本題只需要對(duì)英文字母(不區(qū)分大小寫)進(jìn)行編碼轉(zhuǎn)換,其他字符原樣輸出。????????????????????????????????????????????????????????????????????????????????????????????????
下面列表中為26個(gè)英文字母對(duì)應(yīng)的摩爾斯電碼。????????????????????????????????????????????????????????????????????????????????????????????????
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.", "---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
輸入
輸出
樣例輸入?復(fù)制
How are you?樣例輸出?復(fù)制
....---.-- .-.-.. -.-----..-??
ans=[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.", "---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."] n=input() length=len(n) for i in range (length):temp=ord(n[i])if(temp>=97 and temp<=122):temp-=97elif(temp>=65 and temp<=90):temp-=65else:temp=520if(temp!=520):print(ans[temp],end="")elif(temp==520):print(n[i],end="")?問題 E: 用字典來統(tǒng)計(jì)詞頻
題目描述
使用freqDict = eval(input()) 讀入單詞詞頻字典,再讀入一段英文,默認(rèn)按照英文輸入的順序,統(tǒng)計(jì)更新單詞詞頻字典,并輸出。
輸入
輸入為兩行,第一行是一個(gè)字典,形如{'hello': 12, 'world': 10},其中存儲(chǔ)初始的詞頻數(shù)據(jù)。第二行是一段英文文本。
輸出
輸出一行,直接打印輸出更新后的字典。
樣例輸入?復(fù)制
{} hello world樣例輸出?復(fù)制
{'hello': 1, 'world': 1}?
freqDict=eval(input()) n=input().split() length=len(n) for i in range(length):if(n[i] in freqDict):freqDict[n[i]]+=1else:freqDict[n[i]]=1 print(freqDict)問題 F: 字典更新
題目描述
現(xiàn)有字典:dict1 = {'趙廣輝': '13299887777', '特朗普': '814666888', '普京': '522888666', '吳京': '13999887777'} 嘗試修改一個(gè)鍵值對(duì),姓名和電話在兩行里輸入,如果輸入的鍵在字典中存在,則用新輸入的電話號(hào)碼替換原來的號(hào)碼,如輸入的鍵在字典中不存在則輸出“數(shù)據(jù)不存在”。操作完成后輸出字典中所有鍵值對(duì)。
輸入
兩行,第一行是一個(gè)姓名,第二行是電話號(hào)碼
輸出
參考示例
樣例輸入?復(fù)制
李廣 13299885566樣例輸出?復(fù)制
數(shù)據(jù)不存在 趙廣輝:13299887777 特朗普:814666888 普京:522888666 吳京:13999887777?
dict1 = {'趙廣輝': '13299887777', '特朗普': '814666888', '普京': '522888666', '吳京': '13999887777'}name=input() number=input() if(name in dict1):dict1[name]=number else:print("數(shù)據(jù)不存在") for dictname in dict1:print("{}:{}".format(dictname,dict1[dictname]))問題 G: 排序輸出字典中數(shù)據(jù)?
題目描述
有兩個(gè)字典數(shù)據(jù)如下: dic1 = {'Tom':21,'Bob':18,'Jack':23,'Ana':20} dic2 = {'李雷':21,'韓梅梅':18,'小明':23,'小紅':20}????????????????????????????????????????????????????????????????????????????????????????????????
請(qǐng)將dic1 按鍵的大小升序排序,將dic2按值的大小升序排序,輸出dic1的前n個(gè)鍵的內(nèi)容,輸出dic2前n個(gè)鍵值對(duì)。當(dāng)n大于元素個(gè)數(shù)時(shí),按實(shí)際元素?cái)?shù)量輸出。
輸入
輸入一個(gè)正整數(shù)n
輸出
輸出指定個(gè)數(shù)的排序后的元素
樣例輸入?復(fù)制
2樣例輸出?復(fù)制
['Ana', 'Bob'] [('韓梅梅', 18), ('小紅', 20)]?
n=int(input()) dic1={'Tom':21,'Bob':18,'Jack':23,'Ana':20} dic2={'李雷':21,'韓梅梅':18,'小明':23,'小紅':20} temp1=dict(sorted(dic1.items(),key = lambda x:x[0])) ans2=sorted(dic2.items(),key = lambda x:x[1]) ans1=[] for i in temp1.keys():ans1.append(i) print(ans1[:n]) print(ans2[:n])?問題 H: 打印商品名
題目描述
讀入以空格分隔的多個(gè)商品名,例如:Iphone7 MacPro 小米6 Vivo Oppo,將其按如下格式輸出:????????????????????????????????????????????????????????????????????????????????????????????????
商品列表:????????????????????????????????????????????????????????????????????????????????????????????????
0? ? Iphone7????????????????????????????????????????????????????????????????????????????????????????????????
1? ? MacPro????????????????????????????????????????????????????????????????????????????????????????????????
2? ? 小米6????????????????????????????????????????????????????????????????????????????????????????????????
3? ? Vivo????????????????????????????????????????????????????????????????????????????????????????????????
4? ? Oppo
輸入
輸入為一行,是用空格分隔的多個(gè)商品名。
輸出
輸出為多行,第一行為“商品列表:”,從第二行開始為序號(hào)(從0開始編號(hào))和商品名,序號(hào)和商品名之間以一個(gè)制表符( '\t' )分隔。
樣例輸入?復(fù)制
Iphone7 MacPro 小米6 Vivo Oppo樣例輸出?復(fù)制
商品列表: 0 Iphone7 1 MacPro 2 小米6 3 Vivo 4 Oppo shoplist=input().split() length=len(shoplist) ans={} for i in range(length):ans[i]=shoplist[i] print("商品列表:") for i in range(length):print("{} {}".format(i,ans[i]))?問題 I: 字符串壓縮
題目描述
輸入一個(gè)字符串s,s由若干個(gè)非數(shù)字的字符組成且相同的字符保證連續(xù)排列,將字符串按照下列規(guī)則進(jìn)行長度壓縮????????????????????????????????????????????????????????????????????????????????????????????????
將字符放前面,出現(xiàn)次數(shù)放后面,如果出現(xiàn)1次,則不需要保存次數(shù)????????????????????????????????????????????????????????????????????????????????????????????????
按照字符在s中出現(xiàn)的順序輸出壓縮后的字符串.????????????????????????????????????????????????????????????????????????????????????????????????
輸入:字符串????????????????????????????????????????????????????????????????????????????????????????????????
輸出(三行):字典形式,鍵值對(duì)為? ? ? ? 字符:出現(xiàn)次數(shù)????????????????????????????????????????????????????????????????????????????????????????????????
原字符串長度????????????????????????????????????????????????????????????????????????????????????????????????
壓縮后字符串????????????????????????????????????????????????????????????????????????????????????????????????
壓縮后字符串長度????????????????????????????????????????????????????????????????????????????????????????????????
abbc&&+++ {'a': 1, 'b': 2, 'c': 1, '&': 2, '+': 3} 9 ab2c&2+3 8????????????????????????????????????????????????????????????????????????????????????????????????
如果輸入的s中有數(shù)字字符,直接輸出‘ERROR’
樣例輸入?復(fù)制
abcc(((())))樣例輸出?復(fù)制
{'a': 1, 'b': 1, 'c': 2, '(': 4, ')': 4} 12 abc2(4)4 8 n=input() length=len(n) ans={} temp=0 for i in range(length):if(ord(n[i])>=48 and ord(n[i])<=57):print("ERROR")break;else:temp=0for j in range(i,length):if(n[i]==n[j]):temp=n.count(n[j])else:j-=1ans[n[i]]=tempbreak;if(n[i]==n[j] and j==length-1):ans[n[i]]=tempbreak;i=j else:print(ans)print(length)temp2=0for key in ans.keys():print(key,end="")if(ans[key]!=1):temp3=len(str(ans[key]))temp2+=temp3print(ans[key],end="")length2=len(ans)print("\n",end="")print(temp2+length2)?
總結(jié)
以上是生活随笔為你收集整理的Contest RankList -- 高级语言程序实践--第7次作业--计信A2107-2113的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ui设计网站:全网最热门的30个UI设计
- 下一篇: 微信小程序canvas实现简易手写签名版