




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上Python入門 精選30題考點(diǎn):循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)1、輸入一個(gè)三位整數(shù),判斷這個(gè)數(shù)是不是“水仙花數(shù)”;所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù),例如:153=13 +53 +33 ,153 就是水仙花數(shù)。n=eval(input()i=na=0while i: a=a+(i%10)*3 i=i/10if a=n: print("yes")else:print("no")2. 隨機(jī)產(chǎn)生一個(gè)兩位數(shù)的數(shù)字,然后用戶輸入一個(gè)兩位數(shù)的數(shù)字,如果用戶輸入的數(shù)字與 隨機(jī)產(chǎn)生的數(shù)字完全相同(包括順序),則輸出獎(jiǎng)勵(lì) 100 分;
2、如果用戶輸入的數(shù)字與隨機(jī)產(chǎn)生的數(shù)字相同(不包括順序), 則輸出獎(jiǎng)勵(lì) 50 分;如果用戶輸入的數(shù)字與隨機(jī)產(chǎn)生的數(shù)字有一位數(shù)相同,則獎(jiǎng)勵(lì) 10 分,如果都不相同,則輸入沒有獎(jiǎng)勵(lì)??键c(diǎn):產(chǎn)生隨機(jī)數(shù)、取出一個(gè)整數(shù)各位上的數(shù)、分支結(jié)構(gòu)import randoma=random.randint(10,99)b=eval(input()a1=a%10a2=a/10b1=b%10b2=b/10if a=b: print('100')elif a1=b2 and a2=b1: print('50')elif a1=b1 or a2=b2 or a1=b2 or a2=b1: pr
3、int('10')else: print('0') 3.在金字塔模式中顯示數(shù)字(編寫一個(gè)嵌套 for 循環(huán)來顯示下面的輸出) : a=eval(input()for i in range(a):考點(diǎn):循環(huán)結(jié)構(gòu)、制表 if i=0: for j in range(a-i): print(' ',end='t') print('1',end='') for j in range(a-i): print(' ',end='t') print() elif i!=0: for
4、 k in range(a-i): print(' ',end='t') for l in range(0,i+1): a1=2*l print(a1,end='t) for y in range(i-1,-1,-1): a1=2*y print(a1,end='t') for x in range(a-i): print(' ',end='t') print()考點(diǎn):素?cái)?shù)、循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)4、如果一個(gè)素?cái)?shù)可以寫成2 p -1的形式,其中p為一個(gè)正整數(shù),那么這個(gè)數(shù)被稱作梅森素?cái)?shù)。編寫程序找出所有的p<
5、;= 31的梅森素?cái)?shù)。def issushu(n): k=1 for i in range(2,n): a=n/i if a%1=0: k=0 return False if k=1: return Truep=1while p<=31: a=(2*p)-1 p+=1 if issushu(a): print(a,end=' ')5、寫一個(gè)函數(shù)計(jì)算下面的數(shù)列考點(diǎn):循環(huán)結(jié)構(gòu)+ + +def m(n): s=1 m=0 while s<=n: a=s s=s+1 m=m+(a/s) return m n=eval(input()print(m(n)考點(diǎn):函數(shù)、循環(huán)結(jié)構(gòu)、
6、分支結(jié)構(gòu)6、神奇的 Collatz 序列。編寫一個(gè)名為 collatz 的函數(shù),它接收一個(gè)名為 number 的整數(shù)參數(shù), 如果 number 是偶數(shù),就打印 number/2,并返回該值。否則打印 3*number+1 并返回。同 時(shí)編寫主程序,讓用戶輸入一個(gè)整數(shù),并不斷地調(diào)用該函數(shù)(用第一次的返回值做第二次的參數(shù),以此類推) ,直到函數(shù)返回 1. 例如用戶輸入 3 則打印輸出應(yīng)為 10 5 1684 2 1def collatz(number): if number%2=0: a=number/2 print(a) return(a) else: b=number*3+1 print(b)
7、 return(b)number=eval(input()while 1: number=collatz(number) if number=1: break7、一個(gè)數(shù)如果恰好等于它的除自身外的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。例如 6=1+2+3, 6 是完數(shù)。編寫程序輸出 1 至 1000 之間的所有完數(shù)??键c(diǎn):完數(shù)、print輸出格式、循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)def wanshu(n): s=0 for i in range(1,n): a=n/i if a%1=0: s=s+i if s=n: return Truefor i in range(1,1001,1): if wanshu(i):
8、 print(i,end=' ') 考點(diǎn):turtle內(nèi)置函數(shù)8、使用 turtle 繪制一個(gè)黃色邊框的紅色五角星。(五角星的每個(gè)內(nèi)角均為 36°)import turtleturtle.showturtleturtle.pensize(5)turtle.color("yellow","red")turtle.begin_fill()for i in range(5): turtle.forward(100) turtle.right(144) turtle.forward(100)turtle.end_fill()turtle
9、.hideturtle 太陽花:import turtleturtle.pensize(3)turtle.speed(10)turtle.color('yellow','red')turtle.begin_fill()for i in range(30): turtle.forward(100) turtle.right(165) turtle.forward(100)turtle.end_fill()9、使用 turtle 繪制奧運(yùn)五環(huán)(藍(lán)黑紅黃綠)import turtleturtle.showturtleturtle.pensize(10)turtle.s
10、peed(10)turtle.color("black")turtle.penup()turtle.goto(0,0)turtle.pendown()turtle.circle(100)turtle.color("blue")turtle.penup()turtle.goto(-250,0)turtle.pendown()考點(diǎn):turtle內(nèi)置函數(shù)turtle.circle(100)turtle.color("red")turtle.penup()turtle.goto(250,0)turtle.pendown()turtle.cir
11、cle(100)turtle.color("yellow")turtle.penup()turtle.goto(-125,-70*(3*0.5)turtle.pendown()turtle.circle(100)turtle.color("green")turtle.penup()turtle.goto(125,-70*(3*0.5)turtle.pendown()turtle.circle(100)考點(diǎn):循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)、輸出格式10、打印9*9乘法表for i in range(1,10): if i=1: print("1 * 1 =
12、1") else: for j in range(1,i+1): print(j,"*",i,"=",j*i,end="t") #”t”是制表符 print()考點(diǎn):循環(huán)結(jié)構(gòu)求因子、分支結(jié)構(gòu)、輸出格式11、編寫程序讀取一個(gè)大于1的正整數(shù),然后顯示它所有的最小因子,也稱之為素因子(即將一個(gè)正整數(shù)分解質(zhì)因數(shù))。例如:輸入整數(shù)為90,輸出90=2*3*3*5。n=eval(input()print(n,end='=')while n: for i in range(2,n+1): a=n/i if a%1=0 an
13、d a!=1: print(i,end='*') break elif a%1=0 and int(a)=1: print(i,end='') break n=int(a)12、從鍵盤輸入整數(shù)n,輸出數(shù)字方陣。例如:輸入n=5,輸出如下: 1 2 3 4 5 考點(diǎn):循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)、制表2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4 n=eval(input()for i in range(1,n+1): for j in range(i,n+1): print(j,end='t') if i=1: print(
14、) if i!=1: for k in range(1,i,1): print(k,end='t') print() 13、素?cái)?shù)是指一對(duì)差值為2的素?cái)?shù)。如3和5就是一對(duì)雙素?cái)?shù)。編寫程序,輸入正整數(shù)n,輸出大于等于n的最小的一對(duì)雙素?cái)?shù)??键c(diǎn):循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu)、素?cái)?shù)def issushu(n): k=1 for i in range(2,n): a=n/i if a%1=0: k=0 return False if k=1: return Truen=eval(input()while 1: if issushu(n) and issushu(n+2): print(n,n+2,
15、sep=' ') break else: n=n+1 14、反素?cái)?shù)(逆向拼寫的素?cái)?shù))是指一個(gè)將其逆向拼寫后也是一個(gè)素?cái)?shù)的非回文數(shù)。例如:17和71都是素?cái)?shù),所以,17和71都是反素?cái)?shù)。編寫程序,輸入一個(gè)正整數(shù),顯示大于該數(shù)的前10個(gè)反素?cái)?shù)??键c(diǎn):函數(shù):素?cái)?shù)、回文數(shù)def issushu(n): a=True for i in range(2,n): if (n/i)%1=0: a=False return False if a=True: return Truedef nixiang(m): m=str(m) m=m:-1 m=eval(m) return mdef nothu
16、iwenshu(s): s=str(s) if s=s:-1: return False else: return Truez=eval(input()s=0while s<10: z=z+1 if issushu(z) and issushu(nixiang(z) and nothuiwenshu(z): s+=1 if s<10: print(z,end=' ') elif s=10: print(z,end='')15、編寫一個(gè)函數(shù),計(jì)算一個(gè)整數(shù)各個(gè)數(shù)字的和。使用下面的函數(shù)頭:def sumDigits(n):例如:sumDigits(234)
17、返回9(2+3+4)。提示:使用求余運(yùn)算符%提取數(shù)字,而使用除號(hào)/去掉提取出來的數(shù)字。使用一個(gè)循環(huán)來反復(fù)提取和去掉每個(gè)數(shù)字,直到所有數(shù)字被提取完為止。編寫程序提示用戶輸入一個(gè)整數(shù),然后顯示這個(gè)整數(shù)所有數(shù)字的和??键c(diǎn):函數(shù)、求各位上的數(shù)def sumDigits(n): s=0 while 1: a=n%10 s=s+a n=n/10 #取出各位上的數(shù)的循環(huán)方法 if n=0: return sn=eval(input()print(sumDigits(n)16、通過鍵盤輸入一串小寫字母(az)組成的字符串,編寫一個(gè)測(cè)試程序,將字符串中連續(xù)出現(xiàn)的重復(fù)字符刪去(即在一個(gè)字符串中,如果遇到連續(xù)重復(fù)的
18、字符只出現(xiàn)一次),然后輸出處理后的字符串。例如:str1="aabbccddaabbccdd",輸出結(jié)果為:"abcdabcd"。考點(diǎn):字符串、列表a=input()c=0e=-1k=list(a)for i in a: e+=1 b=ord(i) if c=b: ke=' ' c=bk=x for x in k if x!=' 'k=''.join(k) #列表變字符串輸出形式print(k)變形:輸入一個(gè)字符串a(chǎn),你需要通過將字符串中連續(xù)的字母表示為:字母+出現(xiàn)次數(shù)的方式來壓縮這個(gè)字符串。例如 &quo
19、t;aabcccccaaa"壓縮輸出成 "a2b1c5a3"。x=input()s=1c=x0 #初始字母,從此開始縮減字母顯示次數(shù)ss="" #創(chuàng)建空字符串for i in range(1,len(x): if xi = c: s += 1 else: ss+=c+str(s) c=xi s = 1ss+=c+str(s) #+號(hào)表示字符串連接print(ss)17、編寫下面的函數(shù)合并兩個(gè)有序列表構(gòu)成一個(gè)新的有序列表:def merge(list1,list2):編寫測(cè)試程序提示用戶輸入兩個(gè)有序列表,然后顯示合并后的升序列表。要求:不允許使用
20、系統(tǒng)提供的sort方法??键c(diǎn):函數(shù)、列表輸入格式:兩個(gè)有序列表(列表元素之間空格分隔,結(jié)尾無空格,回車換行輸入下一個(gè)有序列表)def merge(list1,list2): list3=list1+list2 list31= for x in list3: x=int(x) list31.append(x) list31=sorted(list31,reverse=False) return list31a1=input()b1=list(a1.split(' ')a2=input()b2=list(a2.split(' ')print(merge(b1,b2)
21、18、輸入30個(gè)數(shù),輸出其中最大的數(shù)??键c(diǎn):循環(huán)結(jié)構(gòu)、列表與max函數(shù)方法一max1=0for i in range(30): x=eval(input() if x>max1: max1=xprint(max1)方法二a=for i in range(30): x=eval(input() a.append(x)max1=max(a)print(max1)考點(diǎn):字符串、Unicode碼與ord、chr函數(shù)19、初始化一個(gè)小寫英文字符串a(chǎn)和一個(gè)非負(fù)數(shù)b(0<=b<26), 將a中的每個(gè)小寫字符替換成字母表中比它大b的字母。這里將字母表的z和a相連,如果超過了z就回到了a。例如
22、a="cagy", b=3,則輸出 :fdjb.a=input()b=eval(input()l=for i in a: x=chr(ord(i)+b) if x>'z': x=chr(ord(i)+b-26) #如果超過了z就回到了a l.append(x)l=''.join(l)print(l) 20、輸入一個(gè)字符串a(chǎn)和一個(gè)正整數(shù)n,判斷a中是否存在長(zhǎng)度為n的回文子串。如果存在,則輸出YES,否則輸出NO??键c(diǎn):字符串及其索引的應(yīng)用a=input()b=eval(input()c=len(a)o=0for i in range(c-
23、b+1): k=ai:i+b if k=k:-1 and len(k)=b: o=1 print('YES')if o=0:print('NO')21、N的階乘定義為:N!=N×(N1)××2×1請(qǐng)編寫一個(gè)程序,輸出N的階乘的十進(jìn)制表示中從最末一個(gè)非0位開始自低位向高位數(shù)的第K位?,F(xiàn)在給你N和K(0<=N<=10000,1<=K<=5),請(qǐng)你輸出要求的數(shù)字(保證存在)。例如:N=5,K=2,則輸出1 note:(5!=120); N=8,K=3,結(jié)果為0 note:(8!=40320)考點(diǎn):循環(huán)結(jié)構(gòu)
24、求階乘、字符串索引、strip方法N=eval(input()K=eval(input()jiecheng=1if N>1: for i in range(1,N+1,1): jiecheng=jiecheng*ix=jiechengw=str(jiecheng)w=w.rstrip('0')w=w:-1k=wK-1print(k)22、編寫函數(shù) def repeat(string, n, delim):考點(diǎn):循環(huán)結(jié)構(gòu)、字符串、函數(shù)返回string重復(fù)n次的字符串,并且使用字符串delim分隔。例如,repeat(“ho”, 3, “,”)返回“ho,ho,ho”def
25、repeat(string,n,delim): x="" for i in range(n): x=x+string+delim return xstring=input()n=eval(input()delim=input()print(repeat(string,n,delim)考點(diǎn):循環(huán)結(jié)構(gòu)、列表及其內(nèi)置函數(shù)、函數(shù)23、編寫函數(shù)def merge(a, b),合并兩個(gè)列表,其中元素交替來自于兩個(gè)列表。如果一個(gè)列表比另一個(gè)短,則把短的處理完,然后追加長(zhǎng)列表中的剩余元素。def merge(a,b): c= l1=len(a) l2=len(b) if l1=l2:優(yōu)化答
26、案def merge(a, b): l= for i in range(min(len(a),len(b): l.append(a.pop(0) #把列表a開頭第一個(gè)元素刪除并將返回值添加到列表l中 l.append(b.pop(0) l.extend(a) #把列表a添加到列表l的尾部 l.extend(b) return l for i in range(l1): c.append(ai) c.append(bi) elif l1<l2: for i in range(l1): c.append(ai) c.append(bi) c=c+(bi+1:) elif l1>l2:
27、for i in range(l2): c.append(ai) c.append(bi) c=c+(ai+1:)return c24、有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無重復(fù)數(shù)字的三位數(shù)?都是多少?for i in range(1,5): for j in range(1,5): for k in range(1,5): if i!=k and i!=j and j!=k: print(i,j,k)25、一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時(shí),共經(jīng)過多少米?第10次反彈多高?def jianban(n): n=n/2 return
28、na=eval(input("請(qǐng)輸入高度:")b=eval(input("請(qǐng)輸入落地次數(shù):")c=ad=ae=a#反彈高度for i in range(b): a=jianban(a)#路程if b=1: c=aelif b=2: c=2*celif b>2: for j in range(0,b-2,1): c=c+jianban(d) d=jianban(d) c=c+eprint("經(jīng)過",c,"米","第",b,"次反彈",a,"米",sep
29、="")26、最大公約數(shù)和最小公倍數(shù)的計(jì)算。從鍵盤接收兩個(gè)整數(shù),編寫程序求出這兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)(兩個(gè)數(shù)的乘積等于這兩個(gè)數(shù)的最大公約數(shù)與最小公倍數(shù)的積。即(a,b)×a,b=a×b)#求最大公約數(shù)a=eval(input()b=eval(input()c=min(a,b)ys=k=0for i in range(2,c+1): if(a/i)%1=0 and (b/i)%1=0: ys.append(i) k=1if k=0: maxyueshu=1else: maxyueshu=max(ys)print(maxyueshu)#求最小公倍數(shù)
30、minbeishu=(a*b)/maxyueshuprint("%d"%minbeishu)27、將1,2,9共9個(gè)數(shù)分成三組,分別組成三個(gè)三位數(shù),且使這三個(gè)三位數(shù)構(gòu)成1:2:3的比例,試求出所有滿足條件的三個(gè)三位數(shù)。 例如:三個(gè)三位數(shù)192,384,576滿足以上條件。for i in range(100,1000): a=2*i b=3*i if 100<a<1000 and 100<b<1000: print(i,a,b,sep=' ')28、若一個(gè)數(shù)(首位不為零)從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數(shù)。例如:給定一個(gè)10進(jìn)制數(shù)56,將56加56(即把56從右向左讀),得到121是一個(gè)回文數(shù)。又如:對(duì)于10進(jìn)制數(shù)87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884在這里的一步是指進(jìn)行了一次N進(jìn)制的加法,上例最少用了4步得到回文數(shù)4884。def ishui(n): n=str(n) if n=n:-1: return True else: return Falsedef ni(n):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 訴訟案件司法調(diào)解員委托合同
- 污水車交接協(xié)議書
- 運(yùn)動(dòng)員培養(yǎng)協(xié)議書
- 技術(shù)入干股協(xié)議書
- 熱電材料研發(fā)與市場(chǎng)推廣合伙協(xié)議
- 裝載機(jī)買賣合同范本
- 實(shí)體店代銷協(xié)議書
- 質(zhì)押車買賣協(xié)議書
- 建造機(jī)耕路協(xié)議書
- 吳亞軍離婚協(xié)議書
- 2023年中國(guó)石油招聘考試真題
- DB43 738-2012 建設(shè)工程消防設(shè)施檢測(cè)評(píng)定規(guī)則
- 《電力系統(tǒng)繼電保護(hù)》考試復(fù)習(xí)題庫(kù)(附答案)
- 2024年中級(jí)注冊(cè)安全工程師《安全生產(chǎn)專業(yè)實(shí)務(wù)(道路運(yùn)輸安全)》真題及答案
- β內(nèi)酰胺類抗菌藥物皮膚試驗(yàn)指導(dǎo)原則2024課件
- 弱電機(jī)房工程報(bào)價(jià)清單
- 口腔醫(yī)院感染預(yù)防與控制
- 電弧增材制造工藝及其應(yīng)用
- YALEBROWN強(qiáng)迫量表完全
- 醫(yī)療機(jī)構(gòu)消毒記錄表清潔消毒日檢查記錄表
- 2024年全國(guó)甲卷高考物理試卷(真題+答案)
評(píng)論
0/150
提交評(píng)論