【正文】
(pi)monteCarlo(1000000)【詳解】本題考查的知識點(diǎn)是Python程序。原理:通常蒙特?卡羅方法通過構(gòu)造符合一定規(guī)則的隨機(jī)數(shù)來解決數(shù)學(xué)上的各種問題。對于那些由于計算過于復(fù)雜而難以得到解析解或者根本沒有解析解的問題,蒙特?卡羅方法是一種有效的求出數(shù)值解的方法。一般蒙特?卡羅方法在數(shù)學(xué)中最常見的應(yīng)用就是蒙特?卡羅積分。方法:蒙特卡羅方法的解題過程可以歸結(jié)為三個主要步驟:構(gòu)造或描述概率過程;實(shí)現(xiàn)從已知概率分布抽樣;建立各種估計量。利用蒙特卡洛方法實(shí)現(xiàn)求解圓周率!/usr/bin/Python* coding:utf8 *import randomimport mathdef monteCarlo(N): i = 0 count = 0 while i = N: x = () y = () if pow(x, 2) + pow(y, 2) 1: count += 1 i += 1 pi = 4 * count / N print(pi)monteCarlo(1000000)32.是 k%2==0或(k+1)%2==1或(k1)%2==1 ans+code[p] ans 【詳解】本題主要考查Python程序的執(zhí)行與調(diào)試。①若接收到的二進(jìn)制碼為“101011011”,1的個數(shù)有6個,則傳輸過程存在差錯。②變量k統(tǒng)計1的個數(shù),若k是偶數(shù)則表明傳輸錯誤,否則傳輸正確,故此處填k%2==0或(k+1)%2==1或(k1)%2==1。③如果p是1~9之間的數(shù)字,則直接將p拼接到ans中,否則從字典code中取對應(yīng)的字母,故此處填ans+code[p]。④變量ans保存轉(zhuǎn)換后的十六進(jìn)制,故此處填ans。33.+*/ b==0 str(c) 【詳解】本題主要考查Python程序執(zhí)行與調(diào)試。①變量fh用來接收運(yùn)算符,由代碼“if fh in s”可知,變量s保存加減乘除(+*/)四種運(yùn)算符,故此處填+*/。②變量b保存第二個數(shù),當(dāng)進(jìn)行除法運(yùn)算時,如果除數(shù)為“0”,提示輸出“除數(shù)不能為0!”,此處是處理b=0的情況,故填b==0。③變量c保存運(yùn)算結(jié)果,此處輸出 c的結(jié)果,故填str(c)。34.①i =(Len(s)\8)*8 ②a(start + c((i1)Mod 8+1)) ③ss = convert(Asc(b(i))) 【詳解】(1)“A”的ASCII碼值是65,用二進(jìn)制表示為0100001,m=35,用二進(jìn)制表示為0010001,位做異或運(yùn)算,相同為0,相異為1,可得:01100010。(2)①以8個數(shù)據(jù)為一段進(jìn)行分段處理,個數(shù)等于8的數(shù)據(jù)段需進(jìn)行位置變換,故需進(jìn)行位置變換的數(shù)據(jù)段有(Len(s)\8)個,數(shù)據(jù)個數(shù)為i =(Len(s)\8)*8。②位置變換方法:加密后數(shù)據(jù)段的第ⅰ個元素=原數(shù)據(jù)段的第c(i)個元素,其中i=1,2,……,8,i表示段內(nèi)位置。代碼“Do While i =(Len(s)\8)*8”中的i對應(yīng)段內(nèi)位置可為“1+(i1)Mod8”,start表示該數(shù)據(jù)段第一個數(shù)據(jù)的前個位置,故數(shù)組b第i位置元素是來自數(shù)組a第start + c(1+(i*1)Mod 8)位置,故②處代碼為“a(start + c(i1)Mod8+1))”。③位置變換后的數(shù)據(jù)需轉(zhuǎn)二進(jìn)制,再按位做異或運(yùn)算,故③處的代碼是調(diào)用自定義函數(shù)convert把b(i)中字符的ASCII碼轉(zhuǎn)二進(jìn)制后存入變量ss,故此處代碼為“ss = convert(Asc(b(i))”。35.順序結(jié)構(gòu) pi= r=float(input(“請輸入半徑r:”)) 整型和實(shí)數(shù)型不能直接運(yùn)算,結(jié)果會有誤差 h=float(input(“請輸入高h(yuǎn):”)) 【詳解】本題主要考查Python程序執(zhí)行與調(diào)試。①分析程序可知,解決問題的程序用到的控制結(jié)構(gòu)有:順序結(jié)構(gòu)。②圓周率定義為:,故第二空填pi=。③r=float(input(“請輸入半徑r:”)) 整型和實(shí)數(shù)型不能直接運(yùn)算,結(jié)果會有誤差 h=float(input(“請輸入高h(yuǎn):”))。36.c 5 【詳解】本題主要考查Python程序執(zhí)行與調(diào)試。①第一個人38歲,n標(biāo)記第幾個人,變量c保存年齡,當(dāng)n=1時,c=38,故第一空填38。②后面的人都比前一個人小3歲,故當(dāng)n不等于1時,調(diào)用遞歸函數(shù)age, c = age(n 1) 3,最后返回第n個人的年齡c,第二空填c。③此處是返回第5個人的年齡,即age(5),填5。37.for i in range(1,10): for j in range(1,i+1): print(str(j)+*+str(i)+=+str(i*j),end= )print()【詳解】本題主要考查Python程序的執(zhí)行。九九乘法口訣表可以通過嵌套for循環(huán)實(shí)現(xiàn),內(nèi)層循環(huán)完一次,執(zhí)行print()換行,具體代碼如下:for i in range(1,10): for j in range(1,i+1): print(str(j)+*+str(i)+=+str(i*j),end= )print()38.for i in range(100,1000): a=i//100 b= (i//10)%10 c=i%10 if i==a*a*a+b*b*b+c*c*c: print(i)【詳解】本題主要考查程序設(shè)計。可通過Python程序設(shè)計實(shí)現(xiàn)題干要求,通過for循環(huán)找出水仙花數(shù),依次取出三位數(shù)的每一位數(shù),其中百位a= i//100,十位b= (i//10)%10,個位c=i%10,然后判斷是否是水仙花數(shù),具體代碼如下:for i in range(100,1000): a=i//100 b= (i//10)%10 c=i%10 if i==a*a*a+b*b*b+c*c*c: print(i)39.參考答案1:for i in range(2,101): j=2 while j=i: if i%j==0: break j+=1 if ji: continue else: print(i,end= )參考答:2:for i in range(2,101): for j in range(2,i): if(i%j==0): break else:print(i)【詳解】本題考查是Python語言編程解決問題。break 語句可以立即終止當(dāng)前循環(huán)的執(zhí)行,跳出當(dāng)前所在的循環(huán)結(jié)構(gòu)。無論是 while 循環(huán)還是 for 循環(huán),只要執(zhí)行 break 語句,就會直接結(jié)束當(dāng)前正在執(zhí)行的循環(huán)體。這就好比在操場上跑步,原計劃跑 10 圈,可是當(dāng)跑到第 2 圈的時候,突然想起有急事要辦,于是果斷停止跑步并離開操場,這就相當(dāng)于使用了 break 語句提前終止了循環(huán)。答案中代碼的實(shí)現(xiàn)過程見下圖:參考答案1:參考答案2:40.bananaapplemangoa= 3【詳解】本題主要考查Python中For循環(huán)結(jié)構(gòu)。 for循環(huán)可以遍歷任何序列的項(xiàng)目,如一個列表或者一個字符串;len() 方法返回列表元素個數(shù)。因此本題輸出為各列表內(nèi)容及列表元素個數(shù)?!军c(diǎn)睛】