資源簡介 第三章 算法的程序實現 測試卷一、選擇題1.在Python語言 中,下面程序的屏幕輸出結果是( )s=1for i in range(1, 9,2):s=s*2print (s)A.2 B.8 C.16 D.322.定義如下函數:def tob(n): if n==0: return"" else: return tob(n//2)+str(1-n%2)執行語句s=tob(10)后,s的值為( )A."1010" B."0101" C."1001" D."1100"3.有如下python程序:import randoma,i,c=[],0,0while i<5: b=random.randint(0,9) if b not in a: a.append(b) i+=1key=int(input("key="))for j in range(len(a)): if a[j]%key==0: c+=1 else: a[j-c]=a[i]print(a)運行該程序,若輸入key為2,則輸出的a不可能為( )A.[3,7,5,4,5] B.[3,7,1,5,5]C.[3,5,0,3,5] D.[9,7,4,7,3]4.某Python程序如下:q=[""]*50head=tail=0s="ningbo"for i in s: q[tail]=i tail+=1while head print(q[head],end="") head+=1 for i in range(3): q[tail]=q[head] head+=1 tail+=1執行該程序段后,輸出結果為( )A.nbgoni B.nbogni C.goninb D.ningbo5.執行下列Python程序段后,a的值是( )a=76while a<=90:a=a+4print (a)A.88 B.92 C.90 D.946.在Python語言中,以下賦值語句正確的是( )A.i=i-1 B.i-1=a+2 C.i+1=a D.i*3=a//27.在Python語言中,使用函數 range(3,12,3)返回的整數序列是( )A.0,3,6,9 B.3,6,9,12 C.3,6,9 D.0,3,6,9,128.用Python編寫成程序,輸出結果的語句是( )A.a=input(“請輸入a的值:”) B.b=input(“請輸入b的值:”) C.c=a+b D.print(a,b)9.閱讀下列Python程序塊,運行結果為( )s=0while s<=20: print(s) s=s+7A. B. C. D.10.橫線處應該填入的是( )x=int(input("請輸入一個正整數:"))if_______:print(x,"是偶數。")else:print(x,"是奇數。")A.x%2==0 B.x%2=0 C.x//2==0 D.x//2=011.Python程序如下,運算結果為( )a=20b=5c=a-bprint(a,"-",b,"=",c)A.25 B.20-5=15 C."20"-"5"=15 D.2012.Python比較運算符中表示“不等于”和“等于”的是( )A.>= == B.!= == C.!= = D.<= =13.運行以下程序,鍵盤依次輸入16和30,其輸出結果為( )A.16 B.30 C.14 D.4614.若a=6,b=3下列表達式結果為真(True)的是( )A.a>2 and b>5 B.a==b C.a<7 or b>5 D.a>=6 and b<315.下列程序運行后結果是( )sum=0for i in range(1,7,2): sum = sum+iprint(sum)A.4 B.7 C.9 D.1616.在Python語言中,not(3==4)的值為( )A.True B.False C.3 D.417.下列程序代碼,運行結果為( )sum=1for i in range(2,6): sum=sum+iprint(sum,i)A.21 5 B.15 6 C.15 5 D.21 618.下列Python程序,運行的結果是( )a=1if(a==4) or (a<6):print("你好!",a)else:print("退出!")A.你好! B.退出 C.你好!1 D.你好!619.在Python中,range(10,0,-3)的表示范圍是( )A.10,7,4,1,-2 B.10,7,4,1 C.10,9,8,7,6,5,4,3,2,1 D.-3,0,3,6,920.在Python語言中,以下能作為變量名的是( )A.@1 B.a_1 C.1a D.for二、填空題21.input( )函數的返回值的類型是 。22.已知變量a=3,那么執行語句a+=6之后,a的值為 。23.在 Python中, 數據用來表示小數。24.Python可在 編輯器中編輯程序,并使用快捷鍵 調試程序。25.int(2.9)的值是 ,17//2的值是 。三、判斷題26.已經構建發布的模塊可以直接使用。( )27.range(1,5)、range(5)都會生成列表[1,2,3,4,5]。( )28.在Python語言中,數據的輸出是通過output()函數實現的。( )29.在Python 語言中,關系運算符可以連續使用,如11and x<2。( )30.python 語言中的“=”與數學中的“=”含義是相同的。( )四、操作題31.某智能貨架有一排貨位,貨位號從0開始編號,每個貨位等寬。貨架上可放置不同寬度(占1-3個貨位)的箱子,箱子從左往右連續相鄰擺放。每次放置箱子時,只能在貨架上最后一個箱子的右側放置新箱子,搬離某個箱子時,該箱右側所有箱子被自動左移。編寫程序,模擬搬離或放置操作,操作結束后,輸出當前貨架上所有箱子的起始位置。請回答下列問題:(1)若貨架狀態如上圖所示,搬離第2個箱子后,當前貨架上最后一個箱子的起始位置是 。(2)實現上述功能的部分Python程序如下,請在劃線處填入合適的代碼。#共有n個箱子供操作,代碼略lst=[-1]*nst=0m=0while True:"操作序列如["P1","MO",……,"E"],依次讀取序列元素,存入變量op,"P1"表示放置寬度為1的箱子,"MO"表示搬離第1個箱子,代碼略" if op[0]=="P": w=int(op[1:])#表示箱子的寬度為w lst[m]=st st=st+w elif op[0]="M": i=int(op[1:])#表示第i+1個箱子將被搬離 if lst[i+1]!=-1: dis= else: dis=st-1st[i] while 1st[i+1]!=-1: 1st[i]=lst[i+1]-dis i=i+1 1st[i]=-1 st= m=m-1 else: break#輸出當前貨架上所有箱子的起始位置,代碼略32.某醫院的看病流程為:患者通過網上、自助設備或人工窗口成功掛號后,到門診的簽到處簽到,簽到成功后即可排隊等待叫號就診。簡化的排隊規則如下:①當天08:00之前完成簽到的患者,按照掛號順序從小到大排隊就診;②08:00之后簽到的患者,按照掛號的序號從小到大的次序插入候診隊伍中;③隊伍中前3名患者(包括正在就診患者)視為已進入待診狀態,插隊的患者只能插到這3名待診患者后的隊伍中。假設醫生從08:00開始叫號就診,對每位患者的診斷時間均為3分鐘,忽略相鄰患者就診的時間間隔。編寫程序實現以下功能:若有患者簽到,則根據規則更新候診隊伍;醫生每完成一名患者的診斷,電子屏幕上按順序顯示待診的患者姓名和每個患者預計就診的時間。(1)若當前已簽到患者信息如下表所示:姓名 掛號序號 簽到時間A 3 07:47:03B 1 07:51:12C 6 07:55:32D 4 07:57:10E 8 07:59:52F 2 08:02:07則患者F的預計就診時間為 (格式如08:07:20)。(2)08:00:00之前簽到的患者原始數據存在列表lst中,每位患者信息包括姓名、掛號序號、簽到時間,以下函數將列表中的數據按掛號序號從小到大排序,并構建候診隊伍。def init(lst): #構建8點前簽到的候診隊伍 i=0;n=len(lst) while i< n-1: k=i;i=n-1 for j in range(n-1,k,-1): if lst[j][1]< lst[j-1][1]: lst[j],lst[j-1]=lst[j-1],lst[j] for i in range(n): lst[i][2]=180*i#修改時間格式,每位患者診斷時間為3分鐘 lst[i].append(i+1) lst[n-1][3]=-1#尾結點指針域處理,如['E',8,720,-1]程序劃線處的代碼是 (單選,填字母)A.i=i+1 B.i=j+1 C.i=k-1 D.i=j(3)每當一位患者就診結束,更新隊伍并按就診順序輸出待診的患者姓名和每個患者預計就診的時間。請補充程序劃線處。def gs(t):#時間格式轉換,將時間戳127轉成“08:02:07”形式 t=t+8*60*60 h=t//3600 m= s=t%60 time='%02d'%h+':'+'%02d'%m+':'+'%02d'%s return timedef mov(lst,head): #更新隊伍并輸出,代碼略 return head(4)若有患者簽到,則更新候診隊伍。請補充程序劃線處。def tc(time):#時間格式轉換,將“08:02:07”轉換成以秒為單位的時間戳127 t=int(time[0:2])*60*60+int(time[3:5])*60+int(time[6:]) t=t-8*60*60#8點開始叫號看診 return tdef insnew(lst,head,data):#將新簽到的患者插入候診隊伍中,并更新每個患者預計就診的時間 data[2]=tc(data[2]) data.append(-1) p=head;q=p;k=0 if head=-1: #無人排隊 lst.append(data) ① else: while q!=-1 and(② ): k=k+1 p=q q=lst[q][3] data[2]=lst[p][2]+180 data[3]=q lst.append(data) lst[p][3]=len(lst)-1 p=len(lst)-1 while q!=-1: lst[q][2]=lst[p][2]+180 p=q q=lst[q][3] return head參考答案1.C2.B3.D4.A5.B6.A7.C8.D9.A10.A11.B12.B13.A14.C15.C16.A17.C18.C19.B20.B21.字符串型22.923.浮點型24.IDLE F525.2 826.錯誤27.錯誤28.錯誤29.正確30.錯誤31.5 m=m+1 lst[i+1]-lst[i] st-dis32.08:09:00 D t%3600//60 head=len(lst)-1 k<3 or data[1]>lst[q][1] 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫