版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高端建筑深井降水施工合作協(xié)議2篇
- 2025年度跨境電子商務(wù)平臺(tái)服務(wù)貿(mào)易三方合作協(xié)議4篇
- 2025年度互聯(lián)網(wǎng)數(shù)據(jù)中心租賃合同網(wǎng)絡(luò)服務(wù)保障補(bǔ)充4篇
- 二零二五年度森林資源保護(hù)與綠化工程合同范本4篇
- 2025年消防設(shè)施安裝與消防安全應(yīng)急預(yù)案編制合同3篇
- 2025集裝箱租賃合同范本
- 2025版旅行社旅游特色小鎮(zhèn)建設(shè)項(xiàng)目合同4篇
- 2025年物流園區(qū)裝卸作業(yè)承包合同范本3篇
- 簡單商場租賃合同范本
- 2025關(guān)于合同結(jié)束證明
- 小學(xué)四年級數(shù)學(xué)知識點(diǎn)總結(jié)(必備8篇)
- GB/T 893-2017孔用彈性擋圈
- GB/T 11072-1989銻化銦多晶、單晶及切割片
- GB 15831-2006鋼管腳手架扣件
- 醫(yī)學(xué)會(huì)自律規(guī)范
- 商務(wù)溝通第二版第4章書面溝通
- 950項(xiàng)機(jī)電安裝施工工藝標(biāo)準(zhǔn)合集(含管線套管、支吊架、風(fēng)口安裝)
- 微生物學(xué)與免疫學(xué)-11免疫分子課件
- 《動(dòng)物遺傳育種學(xué)》動(dòng)物醫(yī)學(xué)全套教學(xué)課件
- 弱電工程自檢報(bào)告
- 民法案例分析教程(第五版)完整版課件全套ppt教學(xué)教程最全電子教案
評論
0/150
提交評論