Python編程考試題庫_第1頁
Python編程考試題庫_第2頁
Python編程考試題庫_第3頁
Python編程考試題庫_第4頁
Python編程考試題庫_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

在一次數(shù)學(xué)競賽中,A、B、C、D、E五名同學(xué)分別獲得了前五名(假設(shè)無并列名

次)。小敏問他們分別是第幾名,他們的回答如下。

?A:第二名是D,第三名是B。第二名是C,第四名是E。?C:第一名是E,

第五名是A。?D:第三名是C,第四名是A。?E:第二名是B,第五名是D。.

但他們每個(gè)人都只說對了一半,請編寫程序,幫小敏猜一猜他們的真實(shí)名次。

['E','C','B','A','D']

某幼兒園組織秋游,需要統(tǒng)計(jì)人數(shù)。假設(shè)字典dic_class存放了幼兒園所有的

班級,內(nèi)容為

{〃托班〃:[〃聰聰班〃,〃伶伶班〃,〃楠楠班〃

字典dic_number存放了每個(gè)班的報(bào)名人數(shù),內(nèi)容為

{〃聰聰班〃:26,〃伶伶班”:23,〃楠楠班〃:25,

試編寫程序,統(tǒng)計(jì)各年級報(bào)名人數(shù)以及全園報(bào)名總?cè)藬?shù)。

輸出結(jié)果如下:托班:74人小班:63人中班:67人大班:65人全園:269人

dic_class={"tuoban":["congcongban","linglingban","nannanban"],"xiaoba

n:Lxiaoyiban,xiaoerbanJ,zhongban:Lzhongyiban,zhongerbanJ,

daban〃:[〃dayiban〃,〃daerban〃]}

dic_number={^congcongban77:26,z/linglingban/z:23,“nannanban”:25,"xiaoyib

an,z:32,“xiaoerban”:31,"zhongyiban”:

33,“zhongerban”:34,〃dayiban〃:32,〃daerban〃:33}

dic_totle={}

fork,vindic_class.items():

s=0

forxinv:

s+=dic_number[x]

dic_totle[k]=s

fork,vindic_totle.items():

print(/z{}:{}〃.format(k,v))

print("All:{}〃?format(sum(dic_totle.values())))

新建一個(gè)文本文件zen.txt,文件內(nèi)容為“Python之禪”的部分內(nèi)容,具體如

下:

Beautifulisbetterthanugly.

Explicitisbetterthanimplicit.

Simpleisbetterthancomplex.

Complexisbetterthancomplicated.

編寫程序統(tǒng)計(jì)該文件內(nèi)容的行數(shù)及單詞的個(gè)數(shù)。

withopen('zen.txt',〃r〃,encoding='utf-8')asfile:

content=file,readlines()

words=[len(row[:-l].splitO)forrowincontent]

print(f'行數(shù):{len(content)}')

print(f,單詞的個(gè)數(shù):{sum(words)}')

已知字符串s存放了一個(gè)英文繞口令

s=z/Whethertheweatherbefine,orwhethertheweatherbenot.Whether

theweatherbecold,orwhethertheweatherbehot.Wewillweatherthe

weatherwhetherwelikeitornot.〃

試編寫程序,統(tǒng)計(jì)該字符串中英文單詞的個(gè)數(shù)(不區(qū)分大小寫且不能重復(fù))。

s=input(///z)

s=s.lower().replacereplace

lst=s.split(,')

wordSet=set(1st)

print(wordSet)

print(Z/Thereare{}wordsintotal./z.format(len(wordSet)))

分別輸入直角三角形的兩個(gè)直角邊長,求斜邊的長度、周長和面積并輸出

假設(shè)邊長為實(shí)數(shù),結(jié)果保留2位小數(shù)并輸出

sidel=eval(input())

side2=eval(input())

side3=pow(sideInside1+side2*side2,1/2)

length=sidel+side2+side3

area二sidel*side2/2

print(〃{:.2f}〃.format(side3))

print(〃{:?2f}〃?format(length))

print(〃{:.2f}〃.format(area))

使用程序計(jì)算整數(shù)N到整數(shù)N+100之間所有奇數(shù)的數(shù)值和,不包含N+100,

并將結(jié)果輸出

整數(shù)N由用戶給出,不判斷輸入異常。

N=input(〃請輸入一個(gè)整數(shù):〃)

s=0

foriinrange(eval(N),eval(N)+100):

ifi%2=1:

s+=i

print(s)

編寫一個(gè)函數(shù)進(jìn)行重復(fù)元素的判定,接收一個(gè)列表作為參數(shù),如果一個(gè)元素在列

表中出現(xiàn)了不止一次,則返回True,否則返回False,注意處理過程中不要改變

原列表的值。

主程序中調(diào)用該函數(shù)判定用戶輸入的列表中是否有重復(fù)元素

例如用戶輸入[87,34,35,26,75,72]則程序應(yīng)該輸出False

deffun(ls):

forninIs:

ifIs.count(n)>1:

returnTrue

else:

returnFalse

deffun2(Is):

returnlen(set(Is))<len(ls)

Is=eval(input('請按照列表格式輸入列表元素:’))

iffun(ls)==True:

print(,Thereareduplicateelementsinthislist,)

else:

print(JTherearenoduplicateelementsinthislist,)

iffun2(Is)==True:

print('該列表中存在重復(fù)元素')

else:

print('該列表中不存在重復(fù)元素')

新建?個(gè)文本文件yzy.txt,文件內(nèi)容如下:

慈母手中線,游子身上衣。臨行密密縫,意恐遲遲歸。誰言寸草心,報(bào)得三春暉。

編寫程序輸出該文件的內(nèi)容,要求使用一次性讀入整個(gè)文件內(nèi)容和逐行讀取文件

內(nèi)容兩種方式。

file=open('yzy.txt','r',encoding='utf-8')

print(file,read())

file,close()

file=open(,yzy.txt),'r',encoding='utf-8')

print(file,readline())

print(file,readline())

print(file,readline())

print(file,readline())

file,close()

假設(shè)已有字典變量dic_score存儲(chǔ)了學(xué)生的成績信息(見下表),r姓名為字典

的鍵。

試編寫程序,統(tǒng)計(jì)每名學(xué)生的平均成績,添加至字典,最后將字典內(nèi)容輸出。

語數(shù)英計(jì)算

姓名

文學(xué)語機(jī)

XuLi88909895

ZhangXing85929598

LiuNing89899092

ZhangXu82868990

dic_score={,,XuLi/,:[88,90,98,95],"ZhangXing〃:[85,92,95,98],“LiuNing〃:]

89,89,90,92],"ZhangXu":[82,86,89,90]}

fork,vindic_score.items():

dic_score[k].append(sum(v)/len(v))

print(〃Name\tChinese\tMath\tEnglish\tComputer\tAverageScore")

fork,vindic_score.items():

print(k,end=〃\t〃)

forxinv:

print(x,end=〃\t〃)

print()

輸入一個(gè)8位整數(shù),將其中四位取出來輸出

num=eval(input())

print(num//100%10000)

警察抓了abed四個(gè)盜竊嫌疑犯其中只有一個(gè)人是小偷,

請問到底誰是小偷?

C

找出2?100中所有的李生素?cái)?shù)。李生素?cái)?shù)是指相差2的素?cái)?shù)對,如3和5、5

和7、n和13等。

(3,5)

(5,7)

(11,13)

(17,19)

(29,31)

(41,43)

(59,61)

(71,73)

文件goods,txt中每-行內(nèi)容分別為購買的商品名稱、價(jià)格、數(shù)量,內(nèi)容如下:

apple103

focus1000001

surface80002

thinkpad70003

chicken103

求出所購商品花費(fèi)的總費(fèi)用。

cost=[]

withopen(Jgoods.txt,,'r')asfile:

forrowinfile,readlines():

Is=row.split('')

cost,append(int(ls[l])*int(ls[2]))

print(sum(cost))

新建--個(gè)文本文件score,csv,用來保存10名考生3門課程的成績,內(nèi)容如下:

考號,程序設(shè)計(jì),細(xì)胞生物,生理學(xué)

10153450101,72,96,88

10153450102,68,88,73

10153450103,63,63,66

10153450104,95,64,65

10153450105,89,88,57

10153450106,77,87,77

10153450107,67,64,97

10153450108,44,99,64

10153450109,82,73,75

10153450110,79,78,85

以上各數(shù)據(jù)項(xiàng)均使用英文逗號分隔。

請編寫程序讀取該文件內(nèi)容,統(tǒng)計(jì)每門課程的平均分、最高分、最低分

#統(tǒng)計(jì)score.CSV文件中每門課程的平均成績、最高分和最低分。

#方法一

withopenCscore,csv',"r",encoding=,utf-8")asfile:

LS=list(file)

delLS[O]#去掉標(biāo)題行

Isl,ls2,ls3=□,□,[]

forsinLS:

X=s[:T].split#因?yàn)樽詈笠粋€(gè)字符是回車符\n,s[:T]相當(dāng)于

去掉了最后的回車符

Isl.append(int(x[l]))

ls2.append(int(x[2]))

ls3.append(int(x[3]))

print('程序設(shè)計(jì)課程平均成績:{:.2f},最高分{},最低分{}'.format(sum(lsl)

/len(lsl),max(Isl),min(lsl)))

print(J細(xì)胞生物課程平均成績:{:.2f},最高分{},最低分{}'.format(sum(ls2)

/len(ls2),max(ls2),min(ls2)))

print('生理學(xué)課程平均成績:{:.2打,最高分{},最低分{}'.代皿1@土於11111(卜3)/

len(ls3),max(ls3),min(ls3)))

#方法二,使用內(nèi)置csv庫和字典讀法

importcsv

Isl,ls2,ls3=[],[],[]

withopen(,score.csv,,〃r〃,encoding='utf-8')asfile:#用with打開

文件,可以不用去特意關(guān)閉file了

reader=csv.DictReader(file)

forrowinreader:

#print(row)

Isl.append(int(row[〃程序設(shè)計(jì)〃[))

ls2.append(int(row[〃細(xì)胞生物〃]))

Is3.append(int(row]〃生理學(xué)〃]))

print('程序設(shè)計(jì)課程平均成績:{:.2f},最高分{},最低分{}'.format(sum(lsl)

/len(lsl),max(Isl),min(lsl)))

printC細(xì)胞生物課程平均成績:{:.2f},最高分{},最低分{}'.format(sum(ls2)

/len(ls2),max(ls2),min(ls2)))

print('生理學(xué)課程平均成績:{:.2f},最高分。,最低分{『.format(sum(ls3)/

len(ls3),max(ls3),min(ls3)))

讀取任意一個(gè)Python源代碼文件(?py文件)在源代碼每行的左邊加上行號,且

行號與代碼間保留-個(gè)空格,最后將含有行號的代碼保存至一個(gè)新的文件內(nèi)。

withopen('實(shí)驗(yàn)9-9.py',〃r〃,encoding='utf-8')asfile:

lines=file,readlines()

Is=[str(i+1)+''+linefori,lineinenumerate(lines)]

new_content=''.join(Is)

print(new_content)

withopen('實(shí)驗(yàn)9-9_帶行號.txt',〃w〃,encoding='utf-8')asfile:

file,write(newcontent)

編寫程序,對用戶輸入的英文字符串中各字母出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì)(不區(qū)分大寫

字母和小寫字姆),統(tǒng)計(jì)結(jié)果使用字典存放。

例如,字符串Ihave2ideas.的統(tǒng)計(jì)結(jié)果為

2,'h':1,:2,'v':1,,e,:2,'d':1,'s':1)

myDict={}

forcins:

ch=c.lower()

ifch.isalphaO:

myDict[ch]=myDict.get(ch,0)+1

print(myDict)

反彈的球

球從100米高度自由落下,每次落地后反跳回原高度的一半。求它在第n次落地

并反彈回時(shí),共經(jīng)過多少米?

n由用戶輸入,結(jié)果要求保留2位小數(shù)

s=0

h=100

n=int(input())

for_inrange(1,n+1):

s+=(h+h/2)

h/=2

print(〃{:.2f}〃.format(s))

定義一個(gè)函數(shù)delSame(li),參數(shù)li是一個(gè)列表(普通列表,不包含嵌套的子列

表);該函數(shù)返回一個(gè)新列表,新列表不包含重復(fù)元素,只保留第一-次在原列

表中出現(xiàn)的元素。

如原列表為[1,2,3,4,5,2,1,4,5,3,8,8,9],經(jīng)過處理后得到的列表為[1,

2,3,4,5,8,9]。在主程序中定義一個(gè)列表并初始化,調(diào)用該函數(shù),輸出

新的列表。

importrandom

defdelSame(ls):#此方法可以保持元素的原始順序

t=[]

forpinIs:

ifpnotint:

t.append(p)

returnt

defdelSame2(Is):

returnlist(set(Is))#使用集合去重,但不能保持元素的原始順序

data=[random,randint(1,100)foriinrange(12)]

print(data)

print(delSame(data))

print(delSame2(data))

data=[1,2,3,4,5,2,1,4,5,3,8,8,9]

print(data)

print(delSame(data))

print(delSame2(data))

對于學(xué)生成績,學(xué)生關(guān)注的通常是自己的成績,而教師往往關(guān)注的是全班成績。

現(xiàn)在有一個(gè)字典(鍵為學(xué)號,值為成績),里面存放若干名學(xué)生的成績,如

{"9601”:95,"9602":96,"9603”:87,,其中“9601”表示學(xué)號,95表示成

績。

請編寫一個(gè)程序,要求如下:

1.定義一個(gè)全局字典,用來保存學(xué)生的成績

2.定義一個(gè)函數(shù),接收一個(gè)參數(shù),該參數(shù)表

示學(xué)號,函數(shù)返回字典中該學(xué)號對應(yīng)的成績。若字典中不存在該學(xué)號,則函數(shù)返

回T。

3.定義一個(gè)函數(shù),按照成績降序輸出所有學(xué)

生信息,例如:

9602,96

9601,959603,87

在主程序中測試這兩個(gè)函數(shù)。

dicScore={

'9601':95,

‘9602':96,

‘9603):87,

}

defget_score(id):

returndicScore.get(id,-1)

defsortscore():

Is=sorted(dicScore.items(),key=lambdax:x[l],reverse=True)

foriinIs:

print(f){i[0]},)

print(get_score('9602"))

sort_score()

編寫程序輸入梯形的上邊長、下邊長和高計(jì)算梯形的面積并輸出,輸出結(jié)果保留

兩位小數(shù)

top=eval(input())

bottom=eval(input())

height=eval(input())

area=(top+bottom)*height/2

print.2f}format(area))

微信朋友圈中曾瘋傳“手機(jī)尾號暴露你的年齡”,其算法如下:

1.看一下你手機(jī)號的最后一位;2.把這個(gè)數(shù)字乘以2;

3.然后加上5;

4.再乘以50;

5.把得到的數(shù)加上1766;

6.用這個(gè)數(shù)減去你出生的那一年;

現(xiàn)在得到一個(gè)新的數(shù)字,該數(shù)字的最后兩位就是你的實(shí)際年齡(本規(guī)則僅適用于

年齡在100歲以內(nèi)的人)。

現(xiàn)在,請編寫一個(gè)函數(shù)來實(shí)現(xiàn)上述計(jì)算,該函數(shù)有兩個(gè)參數(shù):一個(gè)參數(shù)為手機(jī)號

最后一位;另一個(gè)參數(shù)為四位數(shù)的出生年份,如1990。該函數(shù)最后返回按照上述

規(guī)則計(jì)算出來的年齡。在主程序中讓用戶輸入手機(jī)號最后一位和出生年份,調(diào)用

該函數(shù)輸出計(jì)算結(jié)果。

deffun(m,n):

return((m*2+5)*50+1766-n)%100

m=int(input('請輸入手機(jī)號最后一位:’))

n=int(input('請輸入四位出生年份:’))

print(fun(m,n))

定義一個(gè)lambda。函數(shù)用來求一個(gè)數(shù)的平方,然后調(diào)用該函數(shù)求出一個(gè)列表所

有元素的平方之和。

importrandom

fun=lambdan:n**2

data=[random,randint(1,10)foriinrange(5)]

print(data)

data2=[fun(d)fordindata]

print(sum(data2))

某文件data,txt中存放了若干個(gè)整數(shù),各整數(shù)之間使用英文逗號分隔,編寫程

序讀取該文件中的所有整數(shù),將其升序排列后保存至一個(gè)新的文件內(nèi)。

withopenC9-12.txt',"r",encoding=,utf-8))asfile:

content=file,read()

data=[int(d)fordincontent,split(',')]

data,sort()

new_content=join([str(d)fordindata])

print(new_content)

withopenC9-12_sort.txt',"w",encoding=,utf-8")asfile:

file,write(new_content)

輸出[m,n]范圍內(nèi)的所有素?cái)?shù)

其中m和n由用戶輸入,假設(shè)m<=n,且二者均大于1

輸出時(shí)素?cái)?shù)之間以單一英文空格分割

例如:

用戶輸入2,10

輸出2357

m,n=eval(input())

foriinrange(m,n+1):

forjinrange(2,i):

ifi%j==0:

break

else:

print(i,end=,')

文件score,txt保存了學(xué)生的平時(shí)成績和期末成績,內(nèi)容如下:

學(xué)號,平時(shí)成績,期末成績

9999180101,77,88

9999180102,91,85

9999180103,87,96

9999180104,78,68

9999180105,86,72

編寫程序讀取所有成績,計(jì)算總評成績(四舍五入到整數(shù)),其中總評成績=平時(shí)

成績X40%+期末成績X60虬最后按總評成績降序排列后保存至一個(gè)新的文件

內(nèi),文件內(nèi)容應(yīng)該如下:

學(xué)號,平時(shí)成績,期末成績,總評成績

9999180103,87,96,92

999918el02,91,85,87

9999180101,77,88,84

9999180105,86,72,78

9999186104,70,68,69

importcsv

withopen('score,txt"r",encoding=,utf-81)asfile:

data=list(csv.reader(file))[1:]#去除標(biāo)題行

print(data)

fordindata:

d.append(str(round(int(d[1])*0.4+int(d[2])*0.6)))

print(data)

data,sort(key=lambdax:x[3],reverse=True)

data,insert(0,['學(xué)號','平時(shí)成績','期末成績‘,'總評成績'])

#print(data)

withopen(,score_total.txt',〃w〃,encoding='utf_8,,newline='')as

file:

writer=csv.writer(file)

writer,writerows(data)

#另一種方法,使用DictReader和DictWriter,可讀性較好

withopen(,score,txt〃r〃,encoding='utf-8')asfile:

data=list(csv.DictReader(file))#DictReader并不包含第一行標(biāo)題

fordindata:

#print(d)

d['總評成績']=str(round(int(d「平時(shí)成績'])*0.4+int(d['期末成

績'])*0.6))

print(d)

data,sort(key=lambdad:d['總評成績r(jià)everse=True)

#print(data)

#fordindata:

#print(d)

fieldnames='學(xué)號',’平時(shí)成績','期末成績','總評成績']

withopen(,score_total.txt〃w〃,encoding='utf-8',newline」')as

file:

writer=csv.DictWriter(file,fieldnames)

writer,writeheader()

writer,writerows(data)

用代碼創(chuàng)建如下加密字典die,鍵為26個(gè)小寫英文字符,值為該字符對應(yīng)的下

一個(gè)字符,最后一個(gè)字符:對應(yīng)的為a

die={a:b,b:c,c:d,...z:

然后利用該字典將用戶輸入的一個(gè)小寫英文句子轉(zhuǎn)換為對應(yīng)的加密句子(其它字

符不予加密

例如hellopython加密后為ifmmpqzuipo

die二{}

forcinrange(ord('a'),ord('z')):

die[chr(c)]=chr(c+1)

dieLzJ=a

old=input(zzplsinputurstring:")

〃〃

new=

forcinold:

if(c>=,a'andc<='z'):

new+=dic[c]

else:

new+=c

print(new)

輸入期末、作業(yè)和平時(shí)成績計(jì)算總成績

最終成績由期末考試成績,作業(yè)成績和平時(shí)成績構(gòu)成,三類成績滿分均為100

分,占最終成績的比重為:0.6,0.3和0.1,請編程分別輸入三類成績,計(jì)算并

輸出最終成績,結(jié)果保留到小數(shù)點(diǎn)后1位。

例如輸入:

80

80

80

輸出:80

term=eval(input())

homework=eval(input())

regular=eval(input())

final=term*。.6+homework*0.3+regular*0.1

printIf}format(final))

中位數(shù)是常見的統(tǒng)計(jì)量之一,在概率論和統(tǒng)計(jì)學(xué)中有廣泛的應(yīng)用,在偏態(tài)分布中

有重要的價(jià)值。

例如,想從一組數(shù)據(jù)中知道人們的平均財(cái)富,假設(shè)100人一個(gè)月每人收入100

元,10人一

個(gè)月每人收入1000000元。如果獸平,1行到的是91000元,這是一個(gè)元全沒有

P人1示真實(shí)情況的奇怪的值。在這種境死T姜數(shù)會(huì)提供更有用的值和較好的通

25公賣個(gè)數(shù)不同的列表而言,中位委T導(dǎo)-P如下兩種:

1.若列表中元素的個(gè)數(shù)為奇數(shù),則中位數(shù)為排序后列表中間位置的那個(gè)數(shù)。

2.若列表中元素的個(gè)數(shù)為偶數(shù),則中位數(shù)為排序后列表中間位置兩個(gè)數(shù)的平均

值。請編寫一個(gè)函數(shù),該函數(shù)接收一個(gè)列表參數(shù),返回該列表的中位數(shù),最后在

主程序中測試該函數(shù)。

importrandom

defmedian(Is):

_ls=sorted(Is)

_len=len(_ls)

if_len%2二二0:

return(_ls[_len//2-1]+_ls[_len//2])/2

else:

return_ls[_len//2]

data=[random,randint(1,100)foriinrange(5)]

print(sorted(data))

print(median(data))

data=[random,randint(1,100)foriinrange(6)]

print(sorted(data))

print(median(data))

輸入m和n計(jì)算m*(m+1)*(m+2)*...*n的積

如果m>n則輸出0

例如

輸入2,5則輸出120

輸入3,8則輸出20168

輸入649,319則輸出e

m,n=eval(input())

r=0

ifm>n:

pass;

else:

r=1

foriinrange(m,n+1):

r*二i

print(r)

編寫一個(gè)函數(shù)isdiff(n),用來判斷參數(shù)n的各位數(shù)字是否互不相同,若互不相

同,則返回1否則返回3主程序中調(diào)用該函數(shù)對用戶輸入的數(shù)據(jù)進(jìn)行判斷并輸

出結(jié)果。

defisdiff(n):

s=str(n)

foriins:

ifs.count(i)>1:

return0

else:

return1

defisdiff2(n):

a=str(n)

b=set(a)

return1iflen(a)==len(b)else0

n=int(input('請輸入一個(gè)正整數(shù):’))

ifisdiff(n)==1:

print(f?Thedigitsof{n}aredifferentfromeachother,)

else:

print(f,Thereareduplicatefiguresin{n}')

ifisdiff2(n)二二1:

print(f'{n}的各位數(shù)字互不相同’)

else:

print(f'{n}中有重復(fù)數(shù)字')

編寫一個(gè)函數(shù)isdiff(n),用來判斷參數(shù)n的各位數(shù)字是否互不相同,若互不相

同,則返回1否則返回0,主程序中調(diào)用該函數(shù)對用戶輸入的數(shù)據(jù)進(jìn)行判斷并輸

出結(jié)果。

s=int(input('請輸入成績:’))

ifs>=90:

grade='A'

elifs>=60:

grade='B'

else:

grade='C'

print(grade)

求出所有符合下列條件的三位正整數(shù):分別乘以3、4、5、6、7后得到的整數(shù)的

各位數(shù)字之和都相等。

例如:

x=180:x*3=540,x*4=720,x*5=90e,x*6=10x=198:x*3=594,x*4=792,

x*5=990,x*6=11

deffun(n):

Is=[int(c)forcinstr(n)]

returnsum(ls)

count=0

forninrange(100,1000):

iffun(n)==fun(n*3)==fun(n*4)二二fun(n*5)==fun(n*6)==

fun(n*7):

count+=1

print(fz/x={n}:x*3={n*3},x*4={n*4},x*5={n*5},x*6={n*

6},x*7={n*7}〃)

輸出1+2+3+..?+n的和超過max的第一個(gè)和及此時(shí)的求和項(xiàng)的數(shù)量

其中max由用戶輸入,輸出的兩個(gè)數(shù)據(jù)使用單個(gè)空格分割

例如:

輸入5

則輸出63

max=eval(input())

sum=0

i=1

whilesum<=max:

sum+=i

i+=1

else:

print(sum,i-l)

編寫一個(gè)函數(shù),簡單模擬微信發(fā)紅包算法。

函數(shù)有兩個(gè)參數(shù):一個(gè)參數(shù)表示紅包總金額,默認(rèn)值為100;另一個(gè)參數(shù)表示紅包

數(shù)量,默認(rèn)值為15。

所有隨機(jī)產(chǎn)生的紅包金額(保留兩位小數(shù))存放在一個(gè)列表(同時(shí)作為函數(shù)的返回

值)中,單個(gè)紅包金額最少為0.01元,所有紅包金額之和應(yīng)等于紅包總金額。

最后在主程序中調(diào)用該函數(shù)模擬發(fā)紅包過程。

importrandom

defredPacketl(money=100,number=15):

Is=[]

forninrange(number-1):

lucky_money=random,uniform(0.01,money-(number-1-n)*

0.01)

lucky_money=round(lucky_money,2)

Is.append(lucky_money)

money=money一lucky_money

Is.append(round(money,2))

returnIs

defredPacket2(money=100,number=15):

Is=[]

forninrange(number-1):

lucky_money=random,uniform(0.01,money/(number-n)*2)

lucky_money=round(lucky_money,2)

Is.append(lucky_money)

money=money-lucky_money

Is.append(round(money,2))

returnIs

defredPacket3(money=100,number=15):

money=money*100

Is=[]

forninrange(number-1):

lucky_money=random,randint(1,int(money/(number-n)*2))

Is.append(lucky_money/100)

money=money一lucky_money

Is.append(money/100)

returnIs

a=redPacketl()

print(a)

print(sum(a))

a=redPacket2()

print(a)

print(sum(a))

a=redPacket3()

print(a)

print(sum(a))

a=redPacket3(1000)

print(a)

print(sum(a))

a=redPacket3(1000,20)

print(a)

print(sum(a))

a=redPacket3(10,6)

print(a)

print(sum(a))

#money=float(input('紅包總金額:’))

#number=int(input('紅包數(shù)量:'))

#print(redPacket(money,number))

計(jì)算運(yùn)動(dòng)會(huì)某個(gè)參賽選手的得分。假設(shè)共有10個(gè)裁判,每個(gè)裁判給該參賽選手

打分(分值在0?10之間)后,去掉一個(gè)最高分和一個(gè)最低分之后的平均分即

為該運(yùn)動(dòng)員的最后得分。

某位選手的得分?jǐn)?shù)據(jù)保存在文件中,各數(shù)據(jù)之間使用一個(gè)空格分隔,內(nèi)容如下:

9.379.529.98109.859.739.939.769.819.08

請編寫程序從文件中讀取該選手的成績并計(jì)算最后得分。

file=open('9-2.txt','r',encoding='utf-8')

content=file.read()

file,close()

scores=[float(n)fornincontent.split()]

print(scores)

maxScore=max(scores)

minScore=min(scores)

scores,remove(maxScore)

scores,remove(minScore)

print(scores)

print(sum(scores)/len(scores))

某超市整理庫存。假設(shè)字典dic_repertory存儲(chǔ)了超市最初的商品數(shù)量。

dic_repertory={〃SoySauce〃:50,“Vinegar”:60,"Salt”:100,“Sugar”:120,〃Chi

ckenEssence〃:20,“Sesame0il〃:40}

字典dic_change存儲(chǔ)了經(jīng)過銷售和進(jìn)貨等流程后發(fā)生變化的商品及其現(xiàn)有數(shù)

量。

dic_change={〃SoySauce”:100,“Vinegar”:80,"ChickenEssence”:50,"Oyster

Sauce”:60}

試編寫程序,實(shí)現(xiàn)以下功能:

1.對字典dic_repertory的內(nèi)容進(jìn)行更新。

2.對更新后的字典dic_repertory按照商品數(shù)量進(jìn)行降序排列。

3.輸出當(dāng)前庫存數(shù)量最多的商品和最少的商品信息。

dic_repertory={z/SoySauce/z:50,z/Vinegarz/:60,/zSalt/z:100,Z/Sugar/Z:120,Z/Chi

ckenEssence〃:20,“Sesame0il〃:40}

dic_change={^SoySauce〃:100,“Vinegar”:80,"ChickenEssence〃:50,“Oyster

Sauce”:60}

dic_repertory.update(dic_change)

dic_result=sorted(zip(dic_repertory.values(),dic_repertory.keys()),re

verse=True)

print(z,Thegoodswiththemaximuminventoryare:

{}〃.format(dic_result[0][1]))

print(Z/Thegoodswiththeleastinventoryare:

{}〃.format(dic_result[-1][1]))

輸入一個(gè)三位數(shù),求各位數(shù)字之和并輸出

例如輸入123,輸出6

num=eval(input())

print(num//100+num//10%10+num%10)

使用循環(huán)結(jié)構(gòu)計(jì)算x的n次幕

輸入兩個(gè)整數(shù)x和n,計(jì)算x的n次塞并輸出,如果n為O則輸出1

x,n=eval(input())

r=1

foriinrange(1,n+1):

r=r*x

print(r)

編寫程序隨機(jī)產(chǎn)生100個(gè)兩位正整數(shù),并將這100個(gè)數(shù)寫入文本文件

number,txt中,要求每行10個(gè)整數(shù),整數(shù)之間用一個(gè)空格分隔。

importrandom

data=[random,randint(10,100)foriinrange(100)]

withopen(,number.txt,,〃w〃,encoding='utf-8')asfile:

k=0

fordindata:

file,write(str(d)+')

k=k+1

ifk%10==0:

file,write('\n')

zen.txt文件內(nèi)容如下:

Beautifulisbetterthanugly.

Explicitisbetterthanimplicit.

Simpleisbetterthancomplex.

Complexisbetterthancomplicated.

請編寫程序統(tǒng)計(jì)文件內(nèi)單詞的詞頻,并將統(tǒng)計(jì)結(jié)果保存至一個(gè)新的文件內(nèi)。詞頻

即相同單詞出現(xiàn)的次數(shù),如zen.txt文件中better的詞頻為4,Simple的詞

頻為lo

withopen('zen.txt',〃r〃,encoding='utf-8')asfile:

content=file.read().lower().replace(,\n,,'')?replace'')

words=content,split()

dic_fq={}

forwordinwords:

dic_fq[word]=dic_fq.get(word,0)+1

forfqindic_fq.items():

print(f){fq[0]):{fq[l]}?)

#另一種方法:使用collections庫中的Counter,更簡潔

fromcollectionsimportCounter

printC-----------')

result=Counter(words)

forrinresult,items():

print(ff{r[0]}:{r[1]),)

分?jǐn)?shù)轉(zhuǎn)換,讀取百分制分?jǐn)?shù)并轉(zhuǎn)換成對應(yīng)的字符輸出

學(xué)習(xí)成績>=90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C

表示

s=int(input('請輸入成績:'))

ifs>=90:

grade='A'

elifs>=60:

grade='B'

else:

grade='C'

print(grade)

編寫函數(shù)求s=a+aa+aaa+.?.十a(chǎn)aa...aaa的值,其中a是1~9之間的某

個(gè)數(shù)字,n是一個(gè)正整數(shù)。

例如,當(dāng)a=2,n=5時(shí),8=a+aa+aaa+...+aaa...aaa=24690。

主程序中根據(jù)用戶輸入的a和n調(diào)用該函數(shù)計(jì)算結(jié)果并輸出。

deffun(a,n):

s=0

item=0

foriinrange(n):

item=item*10+a

s+=item

returns

deffun2(a,n):

s=0

foriinrange(1,n+1):

s+=int(str(a)*i)

returns

deffun3(a,n):

Is=[int(str(a)*i)foriinrange(1,n+1)]

returnsum(ls)

a,n=eval(input(〃輸入a和n[用逗號分隔]:〃))

s=fun(a,n)

print(f"ifa={a},n={n},s=a+aa+aaa+...+aaa...aaa={s}〃)

s=fun2(a,n)

print(f〃若a={a},n={n},貝!]s=a+aa+aaa+...+aaa...aaa={s}z/)

s=fun3(a,n)

print(f〃若a={a},n={n},貝!Js=a+aa+aaa+...+aaa...aaa={s}")

假設(shè)字典dic_score存放了學(xué)生的成績,內(nèi)容為

{〃李剛〃:93,〃陳靜〃:78,〃張金柱〃:88,〃趙啟山〃:91,〃李鑫〃:65,〃黃寧

〃:83)

試編寫程序,按成績從高到低的順序輸出學(xué)生的姓名。

dic_score={“LiGang〃:93,〃ChenJing〃:78,〃ZhangJinzhu〃:88,“ZhaoQishan〃:91

,〃LiXin〃:65,〃HuangNing〃:83}

1st_name=dic_score.keys()

lst_score=dic_score.values()

dic=zip(lst_score,lst_name)

forxinsorted(die,reverse=True):

print(x[l])

編寫一個(gè)程序,在主程序中求1900~2020年中所有的閏年,每行輸出5個(gè)年份。

閏年即能被4整除但不能被100整除,或者能被400整除的年份。

要求定義一個(gè)函數(shù)isLeap(),該函數(shù)用來判斷某年是否為閏年,是閏年則函數(shù)

返回True,否則返回Falseo

defisLeapYear(year):

returnyear%400==0or(year%4==0andyear%100!=0)

count=0

forninrange(1900,2021):

ifisLeapYear(n)isTrue:

print(n,end='\t')

count+=1

ifcount%5==0:

print()

輸出滿足勾股定理的20以內(nèi)的所有組合勾股定理中3個(gè)數(shù)的關(guān)系是

:gou-2+gu-2=Xian^2,編寫一個(gè)程序,輸出20以內(nèi)(包括20)滿足上述條件且

gou<gu的整數(shù)組合,如345就是符合條件的一個(gè)組合

0

要求每個(gè)組合中三個(gè)數(shù)據(jù)以空格分割,每個(gè)組合單獨(dú)一行,形如:

345

51213

6810

forgouinrange(1,21):

forguinrange(1,21):

forxianinrange(1,21):

ifgou*gou+gu*gu==xian*xianandgou<gu:

print(gou,gu,xian)

編寫程序,對用戶輸入的英文字符串中各字母出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì)(不區(qū)分大寫

字母和小寫字母),統(tǒng)計(jì)結(jié)果使用字典存放。

例如,字符串Ihave2ideas.的統(tǒng)計(jì)結(jié)果為

{'『:2,〃h':1,〃a':2,〃v:1,'e':2,'d':1,'s':1}

myDict={}

forcins:

ch=c.lower()

ifch.isalpha():

myDict[ch]=myDict.get(ch,0)+1

print(myDict)

編寫一個(gè)函數(shù),接收一個(gè)列表參數(shù),函數(shù)返回該列表中所有正數(shù)之和。

在主程序中調(diào)用該函數(shù)計(jì)算用戶輸入的一個(gè)整數(shù)列表中正數(shù)的和并輸出。

例如用戶輸入:[23,54,77,87,56,3]

程序應(yīng)該輸出30日

deffun(Is):

_ls=[iforiinIsifi>0]

returnsum(_ls)

deffun2(Is):

_ls=filter(lambdan:n>0,Is)

returnsum(_ls)

Is=eval(input(請按照列表格式輸入列表元素:’))

print(f'Thesumofallthenumbersinthislistis:{fun(Is)},)

print(F該列表中所有正數(shù)之和為:{fun2(ls)}‘)

假設(shè)字典變量dic_country存儲(chǔ)了部分國家的國家名與首都名的對應(yīng)關(guān)系,其中

國家名為鍵首都名為值,如下表。

試編寫程序,根據(jù)用戶輸入的國家名查詢首都名,如果存在則輸出查詢結(jié)果,否

則提示

“None"。假設(shè)對國家名進(jìn)行查詢時(shí)不區(qū)分大小寫。

dic_country={"China":"Beijing","America":"Washington","Norway":"Oslo"

,〃J丁apan〃:〃Tloikyo〃,〃△Germany〃:〃nBerliin,”Ccanadia〃:〃O八t」t,awa〃,〃b「rance〃:〃Pcari?s

〃,“Thailand":"Bangkok”}

country=input(〃請輸入國家名:〃).lower().capitalize()

ifcountryindic_country:

print(dic_country[country])

else:

print(〃None〃)

已知字符串變量

s="Wheninthecourseofhumanevents,itbecomesnecessaryforonepeople

todissolvethepoliticalbandswhichhaveconnectedthemwithanother,

andtoassumeamongthepowersoftheearth,theseparateandequalstation

towhichtheLawsofNatureandofNature5sGodentitlethem,adecent

respecttotheopinionsofmankindrequiresthattheyshoulddeclarethe

causeswhichimpelthemtotheseparation.〃

試編寫程序,實(shí)現(xiàn)以下功能:

1.對文本中每個(gè)單詞出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì),并將結(jié)果輸出。

2.輸出出現(xiàn)次數(shù)排在前五名的單詞

s=input(〃〃)

s=s.lower().replacereplace

lst=s.splitC')

dic={}

forwordin1st:

die[word]=dic.get(word,0)+1

print(die)

newlst=[(v,k)fork,vindie.items()]

newlst.sort()

print(newlst[-1:-6:-l])

模擬評委打分

在體育賽事中,通常采用多個(gè)評委打分然后去

掉一個(gè)最高分和一一個(gè)最低分取具東賣平3的方法作為最終成績,請編程模以8

位Z2的過程,即輸入8個(gè)成績,然百計(jì)獸最冬交并輸出,結(jié)果保留1位小數(shù)

例如輸入

8.58.88.78.88.68.48.98.8

輸出

8.7

foriinrange(1,9):

x=eval(input())

ifi==1:

sum=max=min=x;

else:

sum+=x

ifx>max:

max=x

ifx<min:

min二x

print(〃{:?If}〃?format((sum-max-min)/6))

輸入一串字符作為密碼,密碼只能由數(shù)字與字母組成。

編寫一個(gè)函數(shù)judge(password),用來求出密碼的強(qiáng)度level,并在主程序中測

試該函數(shù),根據(jù)用戶輸入的密碼,輸出對應(yīng)密碼強(qiáng)度。

密碼強(qiáng)度判斷準(zhǔn)則如下(滿足其中一條,密碼強(qiáng)度增加一級):

1.有數(shù)字;2.有大寫字母;3.有小寫字母;4.位數(shù)不少于8位。

例如用戶輸入Abcl23則輸出3

defjudge(password):

level=0

n=len(passwo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論