資源簡介 第四章 程序設計基礎 練習一、選擇題1.下列Python表達式的值為數值5的是( )A.int(max(["36","100","5"])) B.len([1,2,3,"IT"])C.ord("e")-ord("a") D.str(abs(-5))2.有如下Python程序段:x,y=11,6if x%2!=0:if y%3==0:s=x*yelse:s=x//yelse:s=x+y程序執行后,s的值為( )A.66 B.17 C.1 D.報錯3.某店鋪優惠活動:消費滿688后打7折,不滿額則9折。計算優惠價格的Python程序段如下:if x>=688:y=x*0.7else:y=x*0.9下列選項中與上述功能相同的是( )A. B. C. D.4.已知字典 medals={"金牌":201,"銀牌":111,"銅牌":71},其中鍵是獎牌,值是數量,則引用"金牌"數量的方法是( )A.medals ["金牌"] B.medals ("金牌") C.medals [0] D.medals (1)5.有如下Python程序段:n=int(input())to_hex=['A','B','C','D','E','F']if n<10:res=nelse:res=to_hex[n%10]輸入n的值為12,程序執行后,res的值為( )A.F B.E C.D D.C6.下列Python語句不正確的是( )A.numbers=[1,2,3,4] B.a,b=b,aC.x,y,z="AI",[5,1] D.n%=27.Python表達式3*7**2//10的值是( )A.4 B.14 C.7 D.478.有如下Python程序段:import randoma=[0]*6i=0while i<6:a[i]=random.randint(1,5)*2if a[i]==i*2:a[i]=0i+=1elif a[i]%2==i%2:a[i]=a[i]-1i+=1print(a)執行該程序后,輸出的結果可能是( )A.[11,0,3,0,0,0] B.[0,0,1,0,3,0]C.[1,0,5,0,4,0] D.[3,0,5,0,5,0]9.有如下Python程序段:a=[[1,1],[2,2],[3,3],[4,-1]]head=0cur=a[head][1]a[head][1]=-1while cur!=-1:p=a[cur][1]a[cur][1]=headhead,cur=cur,p則程序運行后,a的值為( )A.[[1,1],[2,2],[3,3],[4,-1]] B.[[1,-1],[2,0],[3,1],[4,2]]C.[[4,1],[3,2],[2,3],[1,-1]] D.[[4,-1],[3,0],[2,1],[1,2]]10.有如下Python程序:import randoma=[2,4,5,6,6,6,8,8,10,12]key=int(random.random()*5+5)i=0;j=9;s=0while i<=j:m=(i+j)//2if a[m]<=key:i=m+1else:j=m-1s+=m程序運行后,s的值不可能是( )A.10 B.14 C.19 D.2211.數組a中存儲著全校學生的學號和BMI信息,格式為 [[“0101”,19.2], [“0102”,18.5], [“0103”,20.1],……]。其中每條數據的第一項為學號,第二項為BMI值。數組a已經按學號升序排序,現要求按照BMI值進行降序排序,BMI相同的情況下仍然按照學號保持升序。則下列程序段可以實現該功能的是( )A. B.C. D.A.A B.B C.C D.D12.定義如下函數:def move(n,a,b,c):if n==1:print(a,”->”,c)returnmove(n-1,a,c,b)move(1,a,b,c)move(n-1,b,a,c)執行語句move(3,”A”, ”B”, ”C”),輸出的第一行內容是( )A.B->C B.A->C C.C->A D.A->B13.在二維數組 a 中,a[3][1]表示的是第幾行第幾列的數據( )A.第1行3列 B.第3行1列C.第4行2列 D.第2行4列14.數據類型可以分為( )A.基本數據類型和原子數據類型 B.基本數據類型和結構數據類型C.原子數據類型和編程數據類型 D.應用數據類型和結構數據類型15.有如下Python程序段:s="cbcbaabcbbc"st=s[0]for i in range(1, len(s)):if len(st)==0 or s[i]!=st[-1]:st=s[i]+stelse:st=st[0:len(st)-1]print(st)執行該段代碼后,輸出結果為( )A.cbbc B.cbc C.bc D.b16.有如下Python程序段:from random import randinta=[0]*6i=0while i<6:a[i]=randint(1,10)if a[i]%2==i%2:i=i-1elif a[i]%2==0:a[i]=a[i]+1i=i+1執行該段代碼后,列表a的值不可能為( )A.[5,3,1,11,9,3] B.[11,5,5,7,3,5] C.[1,3,9,11,1,11] D.[9,7,7,5,9,3]17.有如下Python程序段:a=[3,5,2,4,1]sum1=m=a[0]for i in range(1,len(a)):if a[i]m=a[i]suml+=m執行該程序后,sum1的值為( )A.6 B.9 C.11 D.1518.“回文串”是一個正讀和反讀都一樣的字符串。下列Python段的功能是:輸入一個字符串,判斷該字符串是否為回文串,若是則輸出“Yes”,否則輸出“No”。s=input("請輸入字符串:")i=0j=len(s)-1flag=Truewhile iif s[i]==s[j]:i+=1①else:flag=Falseif ② :print("Yes")else:print("No")則程序劃線①②③處應填入的語句為( )A.①j+=1 ②flag B.①j+=1 ②not flagC.①j-=1 ②flag D.①j-=1 ②not flag19.根據國家標準,室內空氣質量指數的正常范圍為0.5~2.5,如果空氣質量指數大于2.5,則表明空氣質量較差,空氣質量指數小于0.5,表明空氣質量較好,下列選項能正確表示這三種情況的是( )A.if zs>2.5: print("較差") elif 0.5zs>0.5: print("正常") elif zs<0.5: print("較好") else: print("較差") C.if zs>2.5: print("較差") elif not zs>0.5: print("較好") else: print("正常") D.if zs<0.5: print("較好") elif not zs>2.5: print("正常") elif zs>2.5: print("較差")A.A B.B C.C D.D20.某DataFrame對象df共包含6個數據列、30個數據行,其中第2列為“姓名”列,下列語句中能讀取df對象中“姓名”列所有數據的是( )A.df."姓名" B.df. columns[1] C.df[姓名] D.df["姓名"]二、填空題21.若輸入987421,輸出的結果是 。n = int(input("n=")) n = n % 1000 n = n // 100 print (n)22.x = 20if x = 10: value = 4*xelse: value = 5*xprint(value)本程序中分數變量,變量名稱是 ,變量的數據類型是23.閱讀如下一段程序,回答以下問題。x=20if x>=10: value=4*xelse: value=5*xprint(value)該程序采用 結構,程序輸出結果是24.把數式寫成Python語言的表達式 。25.Python表達式5<-5 or not 5<=5 and 5!=5的值是 。三、判斷題26.在Python語言中,4和"4"的數據類型是一樣的。( )27.“student id”是一個正確的變量名。( )28.Python程序 a=10;a=8;print(a)的運行結果是8。( )29.在Python中,運算符*=的優先級要高于運算符+=。( )30.實現控制循環的跳轉需要用到break和continue兩個關鍵字。其中,break是中斷循環,continue是跳出本次循環的執行。( )四、操作題31.小光和小明根據某地機動車限行提示,如下圖a所示,分別設計了根據尾號數字實現限行提醒的程序(程序A和程序B)。目前設計進度只能判斷車牌的最后一位是數字的情況,如輸入車牌號碼“滬AGU332”,輸出“星期一限行”,如下圖b所示。 圖a 圖b程序編寫如下,請回答下列問題程序A 程序B(1)請在劃線處填入合適代碼,程序A中的①②和程序B中①②填入代碼是一樣的,填一處即可:① 、② 。(2)在上述程序中,變量lic的數據類型為 (單選,填字母:A.整型/B.字符串/C.邏輯型)(3)程序A和程序B哪段程序效率高 (單選,填字母:A.程序A/B.程序B)(4)調試程序時出現1處報錯,如下圖所示如何修正程序為32.某國計劃在海岸線上安裝雷達探測海上的島嶼。假設海岸線是一條無限的直線,一邊是陸地,另一邊是海洋。為了找到覆蓋所有島嶼所需雷達裝置的最小數量,編寫程序:輸入島嶼數量n、雷達裝置的覆蓋距離d以及每個島嶼的位置(由x,y坐標值表示),若雷達能覆蓋所有島嶼,則輸出所需雷達的最小數量;否則,輸出“無法覆蓋”。如圖所示海洋中有3個島嶼,位置分別為(1,2)、(-3,1)、(2,1),雷達的覆蓋距離為2,則至少需要安裝2個雷達裝置,分別安裝在(-2,0),(1,0)位置上。(1)若上述雷達覆蓋距離修改為3,則至少需要安裝的雷達裝置數為(2)實現上述功能的Python程序如下,請在劃線處填入合適的代碼。from math import sqrtn = int(input('請輸入島嶼的數量n:'))d = int(input('請輸入雷達的半徑d:'))# qj[i][0]、qj[i][1]分別存儲可以覆蓋第i個島嶼的雷達,能安裝的最左邊和最右邊位置qj = [[0, 0] for i in range(n)]flag = Truefor i in range(n):x = int(input('島嶼坐標x:'))y = int(input('島嶼坐標y:'))if y > d:flag = Falsebreakqj[i][0] =qj[i][1] = x + sqrt(d * d - y * y)if :print('無法覆蓋')else:# 按左端點升序排序,左端點相同時按右端點升序排序for i in range(n - 1):k = ifor j in range(i + 1, n):if :k = jif k != i:qj[k], qj[i] = qj[i], qj[k]num = 1cur = qj[0][1]for i in range(1, n):if cur > qj[i][1]:cur = qj[i][1]elif :num += 1cur = qj[i][1]print('安裝的雷達數為:', num)(3)若將程序中加框處代碼修改為 (單選:填字母),不影響的正確性。A.i==n-1 B.i==n C.i < n D.y > d(4)根據代碼可知,對于n個島嶼,在進行排序時最多的交換次數為 。33.如下自定義函數實現一個加減法算式的運算,要求輸入一個只包含運算符“+”和運算符“-”的合法算式,輸出算式的運算結果。具體程序如下,請在劃線處填入合適的代碼。def fun(s):num1=i=0while iif s[i]>="0" and s[i]<= "9":num1=i+=1elif s[i]== "+" or s[i]<= "-":x=1if s[i]== "-":x=-1num2=0;j=i+1while jif s[j]>= "0" and s[j]<= "9":num2=mum2*10+int(s[j])j+=1elif s[j]== "+"or s[j]== "-":return fun(str(num1+x*num2)+ )if j==len(s):return34.在一個正整數序列中,由若干個連續的數據元素組成的序列,稱為該序列的子序列?,F輸入一個整數序列和一個整數m,尋找一個滿足下列條件的子序列:①該子序列的各元素之和不能超過m。②在所有滿足條件①的子序列中尋找長度為最大(元素個數最多)的子序列。若滿足條件的子序列有多個,則輸出最左邊的子序列。例如,整數序列為“1,5,4,2,3,1,5,8,1”,m的值為15,則元素之和不超過m的最長子序列有“[1,5,4,2,3]”和“[4,2,3,1,5]”,長度均為5,根據題目要求可知,最后輸出的最長子序列為“[1,5,4,2,3]”。讀入一個由整數組成的數據序列,輸入m,輸出符合條件的最長子序列及該子序列的長度。程序運行界面如圖所示。請回答下列問題:(1)若原序列為“3,5,4,5,2,3,1,8,3,4”,m=20,則輸出的最長子序列為 。(2)函數sumif(b)的功能是求列表b中元素的前綴和,即sumx[1]=b[0],sumx[i]=b[0]+…+b[i-1],請在程序劃線處填入合適的代碼。def sumif(b):sumx[0]=0for i in range(1,n+1):sumx[i]=return sumx(3)主程序如下,請在程序劃線處填入合適的代碼。#讀入數據,并存入列表d中,代碼略print("序列為:", d)n=len(d)m=int(input("請輸入m的值:"))sumx=[0]*(n+1)sumx=sumif(d)maxn=0maxposi=-1for i in range(0,n+1):j=iwhile :j=j+1if j-i-1>maxn:maxposi=iprint("最長子序列長度為:", maxn)print("最長子序列為:",d[maxposi:maxn+maxposi])五、簡答題35.列舉Python程序設計語言中,for循環和while循環的基本的格式。36.什么是常量,什么是變量?常量和變量的特點是什么?37.從鍵盤上輸入一個字符,當輸入的是英文字母時,輸出“輸入的是英文字母”;當輸入的是數字時,輸出“輸入的數字”;當輸入的是其他字符時,輸出“輸入的是其他字符”。參考答案1.A2.A3.D4.A5.D6.C7.B8.D9.B10.B11.D12.B13.C14.B15.D16.B17.C18.C19.D20.D21.422.value int23.分支 8024.(a+b)/(2*a)25.False26.錯誤27.錯誤28.正確29.錯誤30.正確31.lic[-1]或其他適合答案 ["5","0"] B A 將最后一個print語句采用縮進格式書寫或其他適合答案。32.1 x -sqrt(d * d - y * y) qj[k][0]>qj[j][0] or qj[k][0]==qj[j][0] and qj[k][1]>qj[j][1] cur33.num1*10+int(s[i]) s[j:] num1+num2*x34.[5,4,5,2,3,1]或5,4,5,2,3,1 或545231 sumx[i-1]+b[i-1] j<=n and sumx[j]-sumx[i]<=m (說明:不能寫為sumx[j]-sumx[i]<=m and j<=n) maxn=j-i-135.for 循環結構的基本格式:for 循環變量 in 列表:語句或語句組While循環格式:While(表達式):語句或者語句組36.常量是指在程序運行過程中其值始終不發生變化的量,通常是固定的數值或字符串。變量是指在程序運行過程中其值可以發生變化的量。常量是固定值,變量可以多次賦值。37.ch=input("請輸入一個字符:")if ch.isdigit()==True: print("輸入的是數字")elif ch.isalpha()==True: print("輸入的是英文字母")else:print("輸入的是其他字符") 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫