【PTA|Python】浙大版《Python 程序设计》题目集:第五章
前言
Hello!小伙伴!
非常感謝您閱讀海轟的文章,倘若文中有錯(cuò)誤的地方,歡迎您指出~
?
自我介紹 ?(?ˊ?ˋ)?
昵稱:海轟
標(biāo)簽:程序猿|C++選手|學(xué)生
簡(jiǎn)介:因C語(yǔ)言結(jié)識(shí)編程,隨后轉(zhuǎn)入計(jì)算機(jī)專業(yè),有幸拿過(guò)國(guó)獎(jiǎng)、省獎(jiǎng)等,已保研。目前正在學(xué)習(xí)C++/Linux(真的真的太難了~)
學(xué)習(xí)經(jīng)驗(yàn):扎實(shí)基礎(chǔ) + 多做筆記 + 多敲代碼 + 多思考 + 學(xué)好英語(yǔ)!
第五章
5-1 輸出星期名縮寫(xiě) (70 分)
題目
輸入一個(gè)1到7的數(shù)字,輸出對(duì)應(yīng)的星期名的縮寫(xiě)。
1 Mon
2 Tue
3 Wed
4 Thu
5 Fri
6 Sat
7 Sun
輸入格式:
輸入1到7之間數(shù)字
輸出格式:
輸出對(duì)應(yīng)的星期名的縮寫(xiě)
輸入樣例:
在這里給出一組輸入。例如:
1
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
Mon
解答
days = {1:'Mon',2:'Tue',3:'Wed',4:'Thu',5:'Fri',6:'Sat',7:'Sun'} index = int(input()) print(days[index])5-2 圖的字典表示 (20 分)
題目
圖的字典表示。輸入多行字符串,每行表示一個(gè)頂點(diǎn)和該頂點(diǎn)相連的邊及長(zhǎng)度,輸出頂點(diǎn)數(shù),邊數(shù),邊的總長(zhǎng)度。比如上圖0點(diǎn)表示:{‘O’:{‘A’:2,‘B’:5,‘C’:4}}。
?
用eval函數(shù)處理輸入,eval函數(shù)具體用法見(jiàn)第六章內(nèi)置函數(shù)。
?
輸入格式:
第一行表示輸入的行數(shù) 下面每行輸入表示一個(gè)頂點(diǎn)和該頂點(diǎn)相連的邊及長(zhǎng)度的字符串
輸出格式:
在一行中輸出頂點(diǎn)數(shù),邊數(shù),邊的總長(zhǎng)度
輸入樣例:
在這里給出一組輸入。例如:
4
{‘a(chǎn)’:{‘b’:10,‘c’:6}}
{‘b’:{‘c’:2,‘d’:7}}
{‘c’:{‘d’:10}} {‘d’:{}}
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
4 5 35
解答
n=int(input()) sum=0 length=0 for i in range(n):dic=eval(input())for j in dic:temp=dic[j]for k in temp:sum+=1length+=temp[k] print("{} {} {}".format(n,sum,length))5-3 四則運(yùn)算(用字典實(shí)現(xiàn)) (30 分)
題目
四則運(yùn)算(用字典實(shí)現(xiàn)),比較c語(yǔ)言的switch語(yǔ)句。
?
輸入格式:
在一行中輸入一個(gè)數(shù)字 在一行中輸入一個(gè)四則運(yùn)算符(+,-,*,/) 在一行中輸入一個(gè)數(shù)字
輸出格式:
在一行中輸出運(yùn)算結(jié)果(小數(shù)保留2位)
輸入樣例1:
在這里給出一組輸入。例如:
7 / 3
輸出樣例1:
在這里給出相應(yīng)的輸出。例如:
2.33
輸入樣例2:
在這里給出一組輸入。例如:
10 / 0
輸出樣例2:
在這里給出相應(yīng)的輸出。例如:
divided by zero
解答
參考:https://blog.csdn.net/chen_zan_yu_/article/details/103406089
res = {'+': 'x+y', '-': 'x-y', '*': 'x*y','/': "x/y if y!=0 else 'divided by zero'"} # 除法部分分三元式表示 x = int(input()) operation = input() y = int(input()) # print(res[operation]) 除零返回字符串,其余返回?cái)?shù)字類型 r = eval(res[operation]) if type(r) != str:print(format(r, '.2f')) else:print(r)5-4 分析活動(dòng)投票情況 (20 分)
題目
利用集合分析活動(dòng)投票情況。第一小隊(duì)有五名隊(duì)員,序號(hào)是1,2,3,4,5;第二小隊(duì)也有五名隊(duì)員,序號(hào)6,7,8,9,10。輸入一個(gè)得票字符串,求第二小隊(duì)沒(méi)有得票的隊(duì)員
?
輸入格式:
在一行中輸入得票的隊(duì)員的序列號(hào),用逗號(hào)隔開(kāi)。
輸出格式:
一行中輸出第二小隊(duì)沒(méi)有得票的隊(duì)員序號(hào)。
輸入樣例:
在這里給出一組輸入。例如:
1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,10,9
輸出樣例:
在這里給出相應(yīng)的輸出。例如:
6 8
解答
提交代碼 - 1
tickets=list(set(map(int,input().split(',')))) a=[] for i in range(6,11):if i not in tickets:a.append(i) print(' '.join('%s' %id for id in a))
提交代碼 - 2
5-5 統(tǒng)計(jì)字符出現(xiàn)次數(shù) (20 分)
題目
本題要求編寫(xiě)程序,統(tǒng)計(jì)并輸出某給定字符在給定字符串中出現(xiàn)的次數(shù)。
?
輸入格式:
輸入第一行給出一個(gè)以回車結(jié)束的字符串(少于80個(gè)字符);第二行輸入一個(gè)字符。
輸出格式:
在一行中輸出給定字符在給定字符串中出現(xiàn)的次數(shù)。
輸入樣例:
programming is More fun! m
輸出樣例:
2
解答
str1=input() a=input() count=0 for i in str1:if i==a:count+=1 print(count)5-6 統(tǒng)計(jì)工齡 (20 分)
題目
給定公司N名員工的工齡,要求按工齡增序輸出每個(gè)工齡段有多少員工。
?
輸入格式:
輸入首先給出正整數(shù)N(≤105),即員工總?cè)藬?shù);隨后給出N個(gè)整數(shù),即每個(gè)員工的工齡,范圍在[0, 50]。
輸出格式:
按工齡的遞增順序輸出每個(gè)工齡的員工個(gè)數(shù),格式為:“工齡:人數(shù)”。每項(xiàng)占一行。如果人數(shù)為0則不輸出該項(xiàng)。
輸入樣例:
8 10 2 0 5 7 2 5 2
輸出樣例:
0:1 2:3 5:2 7:1 10:1
解答
n=int(input()) ages=list(map(int,input().split())) dic={} for i in ages:dic[i]=dic.get(i,0)+1 for i in sorted(dic):print("{}:{}".format(i,dic[i]))5-7 列表去重 (40 分)
題目
輸入一個(gè)列表,去掉列表中重復(fù)的數(shù)字,按原來(lái)次序輸出!
?
輸入格式:
在一行中輸入列表
?輸出格式:
在一行中輸出不重復(fù)列表元素
輸入樣例:
在這里給出一組輸入。例如:
[4,7,5,6,8,6,9,5]
?輸出樣例:
在這里給出相應(yīng)的輸出。例如:
4 7 5 6 8 9
解答
lst1=eval(input()) lst2=list(set(lst1)) print(' '.join(map(str,sorted(lst2,key=lst1.index))))5-8 能被3,5和7整除的數(shù)的個(gè)數(shù)(用集合實(shí)現(xiàn)) (30 分)
題目
求指定區(qū)間內(nèi)能被3,5和7整除的數(shù)的個(gè)數(shù)
?
輸入格式:
在一行中從鍵盤(pán)輸入2個(gè)正整數(shù)a,b(1<=a<b<=10000000),用空格隔開(kāi)。
?輸出格式:
在一行輸出大于等于a且小于等于b的能被3,5和7整除的數(shù)的個(gè)數(shù)。
輸入樣例1:
在這里給出一組輸入。例如:
10 100
?輸出樣例1:
在這里給出相應(yīng)的輸出。例如:
0
?輸入樣例2:
在這里給出一組輸入。例如:
1000 100000
?輸出樣例:
在這里給出相應(yīng)的輸出。例如:
943
解答
m,n=map(int,input().split()) set_1=set() set_2=set() set_3=set() for i in range(m,n+1):if i%3==0:set_1.add(i)if i%5==0:set_2.add(i)if i%7==0:set_3.add(i) print(len(set_1 & set_2 & set_3))5-9 求矩陣鞍點(diǎn)的個(gè)數(shù) (30 分)
題目
一個(gè)矩陣元素的“鞍點(diǎn)”是指該位置上的元素值在該行上最大、在該列上最小。
?
本題要求編寫(xiě)程序,求一個(gè)給定的n階方陣的鞍點(diǎn)。
?
輸入格式:
輸入第一行給出一個(gè)正整數(shù)n(1≤n≤6)。隨后n行,每行給出n個(gè)整數(shù),其間以空格分隔。
?輸出格式:
鞍點(diǎn)的個(gè)數(shù)
?輸入樣例1:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
?輸出樣例1:
1
輸入樣例2:
2 1 7 4 1
輸出樣例2:
0
?輸入樣例3:
3
4 7 8
1 3 3
2 3 1
輸出樣例3:
2
解答
n=int(input()) a=[] count=0 for i in range(n):a.append(list(map(int,input().split()))) for i in range(n):max_num_row=max(a[i][k] for k in range(n))for j in range(n):max_num_col=min(a[k][j] for k in range(n))if max_num_row == max_num_col:count+=1 print(count) n = int(input()) # 原矩陣 lis = [list(map(int, input().split()))for i in range(n)] # 轉(zhuǎn)置矩陣 lis_1 = [[lis[j][i] for j in range(n)]for i in range(n)] print(lis_1) # 依次遍歷lis max(lis[i]):原矩陣行最大值 min(lis_1[j]):原矩陣列最大值 print(len([0 for i in range(n)for j in range(n) if lis[i][j] == max(lis[i]) == min(lis_1[j])]))5-10 兩數(shù)之和 (30 分)
題目
給定一組整數(shù),還有一個(gè)目標(biāo)數(shù),在給定這組整數(shù)中找到兩個(gè)數(shù)字,使其和為目標(biāo)數(shù),如找到,解是唯一的。找不到則顯示 “no answer”。輸出的下標(biāo)按從小到大排序。用一重循環(huán)加字典實(shí)現(xiàn)。
?
輸入格式:
在一行中給出這組數(shù)。 在下一行輸入目標(biāo)數(shù)
輸出格式:
在一行中輸出這兩個(gè)數(shù)的下標(biāo),用一個(gè)空格分開(kāi)。
輸入樣例1:
在這里給出一組輸入。例如:
2,7,11,15 9
輸出樣例1:
在這里給出相應(yīng)的輸出。例如:
0 1
輸入樣例2:
在這里給出一組輸入。例如:
3,6,9 10
輸出樣例2:
在這里給出相應(yīng)的輸出。例如:
no answer
解答
lst=list(map(int,input().split(','))) target=int(input()) m=dict() for i,num in enumerate(lst):if target-num in m:print("{} {}".format(m[target-num],i))exit()m[num]=i print("no answer")5-11 字典合并 (40 分)
題目
輸入用字符串表示兩個(gè)字典,輸出合并后的字典。字典的鍵用一個(gè)字母或數(shù)字表示。注意:1和‘1’是不同的關(guān)鍵字!
?
輸入格式:
在第一行中輸入第一個(gè)字典字符串;
在第二行中輸入第二個(gè)字典字符串。
輸出格式:
在一行中輸出合并的字典,輸出按字典序。
“1” 的 ASCII 碼為 49,大于 1,排序時(shí) 1 在前,“1” 在后。其它的字符同理。
輸入樣例1:
在這里給出一組輸入。例如:
{1:3,2:5}
{1:5,3:7}
輸出樣例1:
在這里給出相應(yīng)的輸出。例如:
{1:8,2:5,3:7}
輸入樣例2:
在這里給出一組輸入。例如:
{“1”:3,1:4} {“a”:5,“1”:6}
輸出樣例2:
在這里給出相應(yīng)的輸出。例如:
{1:4,“1”:9,“a”:5}
解答
注意:**字典的鍵用一個(gè)字母或數(shù)字表示! **
?
這道題簡(jiǎn)單的合并兩個(gè)字典比較簡(jiǎn)單,難點(diǎn)在輸出時(shí)需要對(duì)字典的鍵值進(jìn)行一個(gè)排序
?
題目中給出鍵只能是一個(gè)字母或者一個(gè)數(shù)字(??這里其實(shí)有歧義 一個(gè)數(shù)字是指一位的數(shù)字還是任意數(shù)字)
?
這里假設(shè)的是為一個(gè)一位的數(shù)字,認(rèn)為int型數(shù)字比字符排在前面
結(jié)語(yǔ)
文章僅作為學(xué)習(xí)筆記,記錄從0到1的一個(gè)過(guò)程
希望對(duì)您有所幫助,如有錯(cuò)誤歡迎小伙伴指正~
我是 海轟?(?ˊ?ˋ)?
如果您覺(jué)得寫(xiě)得可以的話,請(qǐng)點(diǎn)個(gè)贊吧
謝謝支持 ??
總結(jié)
以上是生活随笔為你收集整理的【PTA|Python】浙大版《Python 程序设计》题目集:第五章的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python+appium爬取微信运动数
- 下一篇: python爬虫手机验证码登录_pyth