日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

【PTA|Python】浙大版《Python 程序设计》题目集:第五章

發(fā)布時(shí)間:2023/12/8 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【PTA|Python】浙大版《Python 程序设计》题目集:第五章 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

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

tickets=list(set(map(str,input().split(',')))) a=[] for i in range(6,11):if str(i) not in tickets:a.append(str(i)) ans=' '.join(a) print(ans)

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ù)字比字符排在前面

dict1=dict(eval(input())) dict2=dict(eval(input())) for i in dict2:if i in dict1:dict1[i]+=dict2[i]else:dict1[i]=dict2[i] intKeys=[] strKeys=[] for i in dict1.keys():if type(i)==int:intKeys.append(i)else:strKeys.append(i) intKeys.sort() strKeys.sort() ans=[] for i in intKeys+strKeys:temp=""if type(i)==int:temp=str(i)+":"+str(dict1[i])else:temp='"'+i+'"'+":"+str(dict1[i])ans.append(temp) s1=','.join(ans) s1='{'+s1+'}' print(s1)

結(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。