python練習題及答案_第1頁
python練習題及答案_第2頁
python練習題及答案_第3頁
python練習題及答案_第4頁
python練習題及答案_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python練習題庫

By鄭紅波2017-12-19

一、填空題

I.Pylhon標準庫malh中用來計算平方根的函數(shù)是。(sqrt)

2.在Python中表示空類型.(None)

3.列表、元組、字符串是Python的(有序?無序)序列.(有序)

4.查看變量類型的Python內(nèi)置函數(shù)是。(type())

5.查看變量內(nèi)存地址的Python內(nèi)置函數(shù)是.(id())

6.表達式[1,2,3]*3的執(zhí)行結(jié)果為。([1,2,3,1,2,3,1,2,3])

7.list(map(str,[1,2,3]))的執(zhí)行結(jié)果為。3])

8.已知x=3,并且id(x)的返回值為496103280,那么執(zhí)行語句x+=6之后,表達式id(x)==

496103280的值為。(False)

9.已知x=3,那么執(zhí)行語句x*=6之后,x的值為.(18)

10.表達式“⑶in[1,2,3,4]”的值為.(False)

1.假設列表對象aList的值為[3,4,5,6,7,9,11,13,15,17],那么切片aList[3:7]得到

的值是。([6,7,9,111)

12.使用列表推導式生成包含10個數(shù)字5的列表,語句可以寫為o([5foriinrange

(10)])

13.假設有列表a=[*name','age','sex']和b=「Dong',38,'Male*],請使用一個語句將這兩個列

表的內(nèi)容轉(zhuǎn)換為字典,并且以列表a中的元素為“鍵二以列表b中的元素為“值”,這個語句

可以寫為.(c=diet(zip(a.b)))

14.任意長度的Python列表、元組和字符串中最后一個元素的下標為。(-1)

15.Pylhon語句''.join(list('helloworld!*))執(zhí)行的結(jié)果是。('helloworld!

1)

16.轉(zhuǎn)義字符的含義是.(回車換行)

17.Python語句list(range。,10,3))執(zhí)行結(jié)果為。([1,4,7])

18.切片操作lisi(range⑹比:2]執(zhí)行結(jié)果為。([(),2,4])

19.表達式‘a(chǎn)b'in'acbed'的值為。(,False)

20.Python3。x語句print(1,2,3,scp=':')的輸出結(jié)果為。(1:2:3)

21.表達式int(4**0。5)的值為。(2)

22.達式sorted([式1,2,33],key=lambdax:-lcn(str(x)))的值為。([ill,33,2])

23.已知列表對象x=['11','2',3],則表達式max(x)的值為.(3)

24.表達式min(『11','2',3])的值為。('ll,)

25.已知列表對象x=['I「,'2','3'],則表達式max(x、key=len)的值為o(UI')

26.語句x=(3,)執(zhí)行后x的值為。((3,))

27.語句x=(3)執(zhí)行后x的值為.(3)

28.己知x={1:2},那么執(zhí)行語句x[2]=3之后,x的值為o<{1;2,2;3))

29.字典對象的方法返回字典中的“鍵-值對”列表.(items())

30.使用列表推導式得到100以內(nèi)所有能被13整除的數(shù)的代碼可以寫作

____________________________________o([iforiinrange(100)ifi%13==0])

31.表達式3**2的值為0(9)

32.表達式3*2的值為o(6)

33.已知x=[3,5,7J,那么執(zhí)行語句x[len(x):]=[1,2]之后,x的值為。

([3,5,7,1,21)

34.表達式list(zip([1,2],[3,4]))的值為o([(1,3),(2,4)])

35.已知x=[l,2,3,2,3],執(zhí)行語句x.popO之后,x的值為.([1,2.3,2])

36.表達式[xforxin[1,2,3,4,5]ifx⑶的值為.([1,2])

37.表達式[indexforindex,valueinenumerale([3,5,7,3?7])ifvalue==max([3,5,7,3,7])]的值

為。([2,4])

38.已知path=r'c:\testohtml',那么表達式path[:-4]+,htm,的值為_________。(*c:Wtest.htm')

39.表達式'%d,%d%(65,65)的值為。('65,A')

40.表達式'Thefirst:{1},thesecondis{0}'.format(65?97)的值為

。(Thefirst:97,thesecondis65,)

41.表達式.join('abcdefg'。split—cd'))的值為。('ab:efg')

42.表達式isinstance(tabedefg',str)的值為。(True)

43.表達式"Helloworld.IlikePython.\find('python')的值為。(-1)

44.表達式:'.join('abccc\n\n\ndddsplit。)的值為°('a,b,ccc,ddd')

45.已知x='123'和y='456',那么表達式x+y的值為。('123456')

46.表達式'abcab'.replace('a','yy')的值為。('yybcyyb')

1

47.已知table="omaketransCabcw,'xyzc'),那么表達式'Hellowworld*?translate(table)的

值為cCHelloccorld')

48.已知x={'a':2},那么執(zhí)行語句x。update({'a':3,'d,:4})之后,表達式sorted(x.items

0)的值為,([Ca',3),('b',1),Cd,,4)1)

49.已知x=list(range(20)),那么語句print(x[100:200])的輸出結(jié)果為.([])

50.表達式sorted({'a':9,'b':3,'c':78}。values())的值為°([3,9,78])

51.type(1+2*3.14)的結(jié)果是:floatclass

二、閱讀程序

I.寫出下面代碼的執(zhí)行結(jié)果。

defJoin(List,sep=None):

return(sepor',')。join(List)

print(Join(['a','b*,'cf1))

print(Join(「a:'b',c*]/:'))

答:

a,b,c

a:b:c

2.若k為整數(shù),下述while循環(huán)執(zhí)行的次數(shù)為:9

k=1(X)()

whilek)1:

print(k)

k=k//2

3.寫出下面代碼的運行結(jié)果。

defSum(a,b=3,c=5):

returnsum([a,b,c])

print(Sum(a=8?c=2))

print(Suni(8))

prinl(Sum(8,2))

答:

13

16

15

4.寫出卜.列程序輸出結(jié)果

i=l

whilei+1:

ifi)4:

print("%d"%i)

i+=l

break

print(”%d"%i)

i+=l

i+=l

5.寫出下面代碼的運行結(jié)果。

defSum(*p):

returnsum(p)

print(Sum(3,5,8))

print(Sum(8))

print(Sum(8,2,10))

答:

16

8

20

6.下面程序的執(zhí)行結(jié)果是。(1)

s=0

foriinrange(1,101):

s+=i

else:

print(1)

7.下面程序的執(zhí)行結(jié)果是o(1275)

s=0

foriinrange(l,101):

s+=i

ifi==50:

print(s)

break

else:

print(1)

8.閱讀下面的代碼,輸H結(jié)果為。

x=list(range(10))

forindex,valueinenumerate(x):

ifvalue==3:

x[indcxl—5

else:

print(x)

答:將列表x中值為3的元素修改為5.

9.閱讀下面的代碼,解釋其功能:________________________________________________

?>importstring

?>x=string.asciijetters+string.digits

>>>importrandom

>?print,'.join(randomosample(x,10)))

答:輸出由英文字母人小寫或數(shù)字組成的長度為10且不重復的隨機字符串。

10.下面的代碼輸出結(jié)果為。(3)

17.下面程序打印結(jié)果:

foriinrange(1,7):

print(''*2*(6—i),end=")

forjinrange(i,0,—11:

print(j,end='^,^)

print()

18.下面程序輸入〉>>rev(4Iloveyou5)返回值為youloveI

defrevl(s):

s=s.split()

sl=**ojoin(reversed(s))

returns1

19.閱讀程序,打印結(jié)果是1000

defaddlnterest(balance,rate):

newBa!ance=balance:f:(I+rate)

balancc=ncwBalancc

defmain():

amount=1000

rale=0o05

addInterest(amount,rate)

print(amount)

main()

20.閱讀程序,打印結(jié)果是_____________________________________

defdemo(newitem.old_list=L]):

oldjist.appcnd(newitem)

returnoldjist

defmain():

print(demo(<a,))

print(demo('h'))

main()

答案:l?T]

21.閱讀程序,打卬結(jié)果是______________________________________

deffuncS(a,b,*c):

print(a,b)

print("lengthofcis%d,cis"%len(c),c)

func5(l,2,3,456)

答案:12

lengthofcis4,cis(3,4,5,6)

22.閱讀程序,打印結(jié)果是(2.5,3,4)_________________________________

defdemo(*para):

avg=sum(para)/len(para)

g=[iforiinparaifi>avg]

return(avg,)+tuple(g)

print(demo(1,2,3?4))

23.閱讀程序,打卬結(jié)果是

deff(w=l,h=2):

print(w,h)

f()

f(w=3)

f(h=7)

f(a=3)

答案:12

32

17

錯誤

24.閱讀程序,打印結(jié)果是

defsort(number1,rumber2):

ifnumber1(nunibcr2:

returnnumber1,number2

else:

returnnumber?,number1

nl,n2=sort(3,2)

print('nlis\nl)

print('n2is\n2)

答案:nlis2

n2is3

25.閱讀程序,打印結(jié)果是1060

defdemo(ni,n):

ifm)n:

m,n=n,m

p=m*n

whilem!=0:

r=n%m

n=m

m=r

return(n.p//n)

print(demo(20,30))

三、程序填空題

I.下面代碼的功能是,隨機生成50個介于[1,20]之間的整數(shù),然后統(tǒng)計每個整數(shù)出現(xiàn)頻率。請

把缺少的代碼補全.

importrandom

x=[randomo11,20)foriinrange()]

r=diet()

foriinx;

r[i]=Toget(i,)+1

fork,vinr.ilems():

print(k,v)

答:

分別填寫randint>50、0

2.生成包含1000個隨機字符的字符串,然后統(tǒng)計前20個高頻字符,最后以15個位左對齊輸出高

頻字符,以5個位右對齊輸出個數(shù)。清把缺少的代碼補全。

importrandom

x=string.,ascii_letters+string.digils+string.punctuation

y=[foriinrange(1000)]

d=diet()

forchiny:

d[ch]=doget(ch,0)+1

/tems=list(d.items())

itemsosort(,reverse=True)

foriinrange(20):

word,count=items[i]

print(%(word,count))

答案:importstring、random(>choice(x)、key=lambdax:x[1“%—15s%5d”

3.用戶輸入5,打印如右圖字符金字塔圖形,請補全代碼:

『input('輸入行數(shù):‘)

&

fbriinrange(l,n+l):&&&

print(,cnd=€*)&&&&&

forjinrange(l,2*i):

print('&',)&&&&&&&

print()

答案:n=int(n),''*(n-i),cnd=M

4.質(zhì)因數(shù)分解,如輸入60,則得到6()=2*2*3*5。請補全代碼:

x=eval(input(”請輸入小于1000的整數(shù):”))

k=2

whilex>1:

print(k,end二

x=x//k

ifx)1:

print("*",end="”)

else:

答案:print(x,"=",end="”),x%k==0,k+=1

5.驗證哥德巴赫猜想:一個大于等于6的偶數(shù)可以表示為兩個素數(shù)之和,請補全代碼.

importmath

x=eval(input(“輸入一個數(shù)”))

whilex<6orx%2==l:#大于6的偶數(shù)

x二eval(input(“輸入一個數(shù)”))

fornlin:

ml=int(mathosqrt(nl)+1)

foriinrange(2,ml):#2-sqrt(nl)

if___________________________

break

else:

m2=ma(hoceil(ma(h.$qrt(n2)+1)

forjinrange(2,m2):

ifn2%j==Oandj<n2:

else:

print(x,nh'+',n2)

答案:range(3?x〃2,2),nl%i==0,n2=x—nl,break

6.右對齊九九乘法表,請補全代碼:

1X1=1

foriinrange(1,10):2X1=22X2=4

3X1=33X2=63X3=9

4X1=44X2=84X3=124X4=16

sl=stKi)+'x」str(j)+'='+str(i*j5X1=55X2=105X3=155X4=205X5=25

6X1=66X2=126X3=186X4=246X6=306X6=36

print()7X1=77X2=147X3=217X4=287X5=357X6=427X7=49

print()8X1=88X2=168X3=248X4=328X5=408X6=488X7=568X8=64

9X1=99X2=189X3=279X4=369X5=459X6=549X7=639X8=729X9:

答案:forjinrange(l?i+l):/%8s,%(sl),end=M

7.輸出右邊圖形,請補充程序:*

***

fori:*****

*******

print((4*'*(2*i—1)).center(30))*****

********

foriinrange(6?0,—1):********

*******

print()*****

***

答案:inrange(6);('**(2*1-1)).center(5*n)*

8.下面代碼判斷回文串,請補全代碼:

s=,霧鎖山頭山鎖霧,

low=0

high=__________________

whilelow(high:

if:#倒序和順序不一樣

print(s,"不是回文”)

low+=1

else:

print(s,“是回文串”)

答案:len(s)—l,s[low]!=s[high],break,high-=l;

9.輸出右邊圖形,請補充程序;

s-MIamateacher!Youarestudents!統(tǒng)計信息

printC='*30)行數(shù)1

print("統(tǒng)計信息'.center(28))單詞數(shù)7

字符數(shù)(包含空格)33

print()字符數(shù)(不包含空格)27

item_width=25

line=s.count('\n')+1

word二s。split()

char=list(s)#包含空格、標點符號

w_num=0

forwinword:

wnum+=

print(,%一*s%5d'%(item_width-3,'行數(shù)',line))

print('%?*s%5d'%(,'單詞數(shù)',len(word)))

printf%-*s%5d'%(ilem_widlh—10,*字符數(shù)(包含空格)',))

print('%—*s%5d'%(item_width-l1,'字符數(shù)(不包含空格)',w_num))

print('-,*30)

答案:'-'*30;len(w);item_width-4;len(char)

10.輸出右邊圖形,請補充程序:

defdemo(t):

U

print([1])N1]

1

331—

64

1

1

line=ll,l]45,0,1

?5,1]

1510

foriinrange(2,t):?20

6,2115,6,1]

7&,2?3535,21,7,1]

856

36?70,56,28,8,1]

9,84

forjinrange(0,len(line)-1):?126,126,84,36,9,1]

reappend()

line=[l]+r+[1]

print(line)

demo()

答案:print([1,1]),r=\],line[j]+案e[j+l],10

四、編程題

I.編寫程序,在D盤根目錄下創(chuàng)建一個文本文件test.txt,并向其中寫入字符串helloworlds

答:

fp=opcn(r'D:\tcst.txt','a+')

print(4helloworld'?file=fp)

fp.close()

2.編寫程序,生成一個包含2()個隨機整數(shù)的列表,然后對其中偶數(shù)下標的元素進行降序排列,奇數(shù)下

標的元素不變。(提示:使用切片。)

答:

importrandom

x=[randomorandint(0,100)foriinrange(20)]

prinl(x)

y=x[::2]

y.sort(reverse=True)

x[::2]=y

print(x)

3.編寫函數(shù),判斷一個數(shù)字是否為素數(shù),是則返回字符串YES,否則返回字符串NOo再編寫測

試函數(shù).

答:

importmath

defIsPrime(v):

n=int(math.sqrt(v)+1)

foriinrange(2,n):

ifv%i==0:

reium'No'

else:

return'Yes'

print(IsPrime(77))

4.編寫函數(shù),模擬Python內(nèi)置函數(shù)sorled(lsl).

答:

defsorted(v):

t=v[::]

r二U

whilet:

tt=min(t)

r。append(lt)

toremove(tt)

returnr

print(sorted([l,3,2,4])

5.編寫程序,生成包含20個隨機數(shù)的列表,然后將前10個元素升序排列,后10個元素降序排列,

并輸出結(jié)果.

答:

importrandom

x=[random.randint(0,100)foriinrange(20)]

print(x)

y=x[0:10]

y。sort()

x[0:10]=y

y=x[10:20]

y.sort(rcvcrsc=Truc)

ifx<0orx>=20:

print(0)

elif0<=x<5:

print(x)

elif5<=x<10:

print(3*x—5)

elif10<=x<20:

print(Oo5*x—2)

8.已知有一個包含一些同學成績的字典,計算成績的最高分、最低分、平均分,并查找最高分同

學,最后打印最高分、最低分、平均分、最高分同學。

scores={"ZhangSan^:45,Si":78,"WangWu":40,"ZhouLiu“:96,"ZhaoQi“:65,"SunBa":

90,“ZhengJiu“:78,“WuShi":99,"DongShiyi”:60}

highest=max(scorcsovalues())

lowest=min(scoresovaluesO)

average=sum(scorcs.values())/lcn(scores)

highestPerson=[nameforname,scoreinscoresoitems()if/score==highest]井分行

print(highest,lowest,average.highestPerson)

9.統(tǒng)計不及格的學生及成績,要求:給定一此學生姓名和成績;詢問用戶是否還需要輸入更多的

學生姓名和成績,用戶回答是就繼續(xù)輸入,繼續(xù)詢問;打印所有補考學生名單和成績.

d=張三”,76],["李四",45],["王五”,83],[”鄭六”,66],[3,54],['c',68],['bl89]]

sl=input("輸入數(shù)據(jù)YorN:")。strip()#去掉前后空格

whilesi='¥*:

s2=input(”請輸入學生及成績(空格隔開)")

name,grade=s2osplit()

doappend([name?grade])

#d[name]=int(grade)

si二input("繼續(xù)輸入YorN:").strip()

else:

print(d)

print("不及格的名單:“)

fbrname,gradeind:

iffloat(grade)(60:

print("姓名:",name,"\t","成績:",grade)

10.由用戶一個一個輸入一個數(shù)值型列表,然后將每個元素逐一打印。

lst=[]

n=eval(input("請輸入數(shù)字個數(shù):”))

fbriinrange(n):

number=eval(inpiit("請輸入數(shù)字:”))

Ist.append(number)

forvaluein1st:

print(value,end=,')

11.序列求和,n通過用戶輸入:1一!+4一1+...+(-1)-11

n=im(input(“請輸入N的值:”))234n

s=0

fh=l

foriinrange(1,n+l):

s+=fh*l/i#求和語句

fh=—fh#正負交替

printC*1—1/2+1/3-1/4.,.+(-1)A(n-1)/n=M,s,i)

12.生成?個包含50個兩位隨機整數(shù)的列表,然后刪除其中的所有奇數(shù)(提示從后向前刪)

lst=[random(>randint(l,l(X))foriinrange(50)]

prim('5O個隨機兩位整數(shù)

k=lcn(1st)—1

foriinrange(k,-1,—1):#從后往前刪,減少列表元素移動

if1st[i]%2==1:

Ist.pop(i)

print("偶數(shù)為“Jst)

13.愷撒(kaisa)密碼:原文:ABCDEFGH1JKLMNOPQRSTUVWXYZ,對應的密文為:

DEFGHIJKLMNOPQRSTUVWXYZABC,請設計程序?qū)崿F(xiàn)之.

plaincode二input('請輸入明文:')

fbrpinplaincode:

if'a'<=pv='z':

c=chr(ord('a,)+(ord(p)-ord('a,)+3)%26)

井。rd是字符編碼的值,都減掉ord(W)才可以得到字符的順序0—25

print(c,cnd=,*)

elif'A*<=p〈=Z:

c=chr(ord(1A')+(ord(p)―ord(,A)+3)%26)

print(c,end=")

else:

print(p,end=°)

14.如果一個字符串從前往后和從后往前讀時是一樣的,那么這個字符串就是回文串.請編寫一個函

數(shù)判斷是否為回文串,同時編寫測試代碼檢驗回文串。

defisPalindronic(s)

ifs==s[::-1]:#切片操作,倒序和順序一樣

returnTrue

else:

returnFalse

s=input('inputastring/)

ifisPalindrome(s):

prinl('%sisapalindrome!'%s)

else:

print(*%sisnotapalindrome!*%s)

15.輸入一串字符,統(tǒng)計每個字符數(shù),用字典輸出。

s=input("輸入一行字符串或句子:")

char_counts={}

forcharins:

char_counts[char]=char_counts.get(char,0)+1

print(char_counls)

16.生成包含100個隨機字符的字符串,然后統(tǒng)計前20個高頻字符.

importstring,random

strl=stringoascii_letters+string.digits

sirl=sir1olower()

str2=[random.choice(strl)foriinrange(100)]

print(str2)

str_count={}

forcharinstr2:

slr_count[char]=slr_coun(.get(char,0)+1

print(str_count)

items=list(str_countoitems())

items.sort(key=lambdax:x[1],reverse=True)#以數(shù)量降序

foriinrange(20):

word?count=itemsfi]

print("%—15s%5d”%(word,count))#一表示左對齊,s表字符,d表示整數(shù)

17.統(tǒng)計"e:\HarryPottcrSorccrStonc.txt”文件中的英文單詞及其數(shù)量,打印出單詞及其個數(shù)

filename=r'HarryPotterSorcerStone.txt'

infile=open(filenameJT')#Openthefile

txt=infileoread()

words=txt.split()#以空格分割單詞

words_counts={}

forwordinwords:

vvords_counts[word]=words_counts.gct(word,0)+1

print(words_counts)

18.讀取文本文件data。txt中所有整數(shù),將其排序后寫入文本文件data_asc.txt中。

withopenC'data.txt'rT')as巾:

data=fporcadlincs()#文件全部讀完返回字符列表3data二ZW本

文,*(F)E加6K?(V)MRU(H)

,

溫馨提示

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

評論

0/150

提交評論