中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

第三章 課時5 For循環語句及程序實現 教案 浙教版(2019)必修1(課件 學案 教案三份打包)

資源下載
  1. 二一教育資源

第三章 課時5 For循環語句及程序實現 教案 浙教版(2019)必修1(課件 學案 教案三份打包)

資源簡介

課時5 For循環語句及程序實現
課時目標
1.掌握for循環語句的語法格式,理解for循環的功能。2.理解range函數的功能,掌握使用range函數準確表示循環的區間及循環次數。3.理解break語句和continue語句的作用,并能簡單使用。4.熟練使用for循環語句解決實際問題。
一、for循環語句的格式
for <變量> in <序列>:
  <循環體>
for語句通過遍歷序列中的元素實現循環,并通過序列的元素數量來控制循環
次數。
循環體中的語句要向右縮進,且縮進量要一致。
二、for循環語句的功能
for循環語句的功能是將序列對象中的元素逐個賦給目標變量,對每一次賦值都執行一遍循環體語句塊,當序列被遍歷完,即每一個元素都被用過了,則結束循環,然后執行循環體后面的語句。
1.for循環語句是通過次數來控制循環的執行過程,即循環的次數可預先計算出。
2.通過遍歷任意序列的元素來建立循環結構,針對序列的每一個元素執行一次循環體。
3.列表、字符串、元組都是序列,可以利用它們來建立循環。
三、range函數
1.range函數格式
range(起始值,終值,步長值)
2.range函數功能
range函數用于產生一個序列,由三個參數(起始值、終值、步長值)來決定序列中元素的個數和范圍。range函數的參數必須為整數。若起始值缺省,則默認為0。步長值是序列中每個元素之間的差,若缺省,則默認為1。
range函數返回的是可迭代對象,range(n)等價于range(0,n),產生的連續整數序列為:0,1,2,…,n-1。
四、break語句和continue語句
break和continue語句的作用是改變控制流程。當break語句在循環結構中執行時,它會立即跳出循環結構,轉而執行循環結構后面的語句。
與break語句不同,當continue語句在循環結構中執行時,并不會退出循環結構,而是立即結束本次循環,重新進入下一輪循環,也就是說,跳過循環體中在continue語句之后的所有語句,繼續下一輪循環。
break語句用來強行退出循環,即序列還沒被完全遍歷完成或循環條件仍然為真時,用來強行退出循環。
五、for循環使用示例
1.遍歷列表建立循環
weeklist=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
for day in weeklist:
  print("week:",day)
2.遍歷字符串建立循環
for i in "Python":
  print(i)
3.通過range對象建立列表
for i in range(10):
  print(i)
例1 通過調查發現,人們普遍認為帶有數字2、6、8的車牌比較吉利,而帶有數字4的車牌則不吉利。小石想通過編寫程序來計算車牌的吉利值:其中數字2吉利值為1,數字6吉利值為2,數字8吉利值為3,數字4的吉利值為-2,其他數字吉利值為0。如車牌號“浙H94286”的吉利值為4。程序代碼如下:
dic={ "2":1,"6":2,"8":3,"4":-2 }
cp=input("請輸入車牌號(格式如“浙H94286”):")
count=0   
for i in range(2,①   ):
  x=cp[i]
  if x in ["2","4","6","8"]:
    count+=② 
print("該車牌號的吉利值為:",count)
為實現功能,劃線處代碼應為 (  )
A.①len(cp)-1  ②dic[x]
B.①len(cp) ②dic[int(x)]
C.①len(cp)-1 ②dic[int(x)]
D.①len(cp) ②dic[x]
答案 D
解析 本題考查字典和列表的應用。cp是輸入的車牌號,要遍歷車牌中每個號碼,車牌的最后一個號碼索引位置是len(cp)-1,但range結束位置是取不到的。x本身就是字符串類型,是字典dic的鍵,因此不能轉換為數值。
變式訓練1 有如下Python程序段:
ch="2nd-ucDOSy3t"
res=""
for i in range(len(ch)):
  if "a"<=ch[i]<="z":
    res=res+ch[i]
print(res)
該程序段的功能是輸出字符串ch中的 (  )
A.所有小寫字母 B.小寫字母的個數
C.所有數字之和 D.所有非數字字符
答案 A
解析 本題考查range函數的使用以及程序基本代碼的閱讀能力。根據range函數的參數,是從字符串ch中從索引0開始,依次取出下標為0、1、2……位置的字符,如果字符是小寫,將它按順序依次拼接到字符串res中。所以答案為A。
例2 完全數。如果一個正整數所有的真因子(即除了自身以外的約數)的和等于它本身,則稱該數為“完全數”。輸入一個數,判斷該數是否是完全數,如果是完全數,輸出全部的真因子。
程序代碼如下:
n=int(input("輸入一個正整數:"))
yzlist=[]
t=0
for i in range(1,n):
  if n % i==0:
    zylist.append(i) #將i的值添加到列表yzlist
    t=①     
if②      :
  print("該數是完全數!")
  for i in yzlist:
    print(i)
else:
  print("該數不是完全數!")
(1)完善程序劃線處代碼。
(2)按照上述算法,輸入28,該數    (填:是/不是)完全數。
答案 (1)①t=t+i ②t==n (2)是
解析 (1)從1至n~1之間的所有數進行遍歷,如果能整除,則進行累加,最后將累加的t和n進行比較,如果相等,則表示整數n是完全數,否則不是完全數。觀察程序可知,如果整數n是完全數,則輸出列表yzlist中的元素,因此在遍歷過程中,要將真因子i追加到列表yzlist中,并將真因子累加到變量t中,故①處代碼為t=t+i;如真因子之和t等于正整數n本身,則n是完全數,因此②處代碼為t==n。
(2)輸入28,得到28=1+2+4+7+14,因此28是完全數。
變式訓練2 水仙花數。所謂的水仙花數是指一個三位數整數,它的個位數、十位數和百位數的立方和等于該數本身。輸出所有的水仙花數,統計并輸出統計個數。
實現上述功能的程序如下,請在程序劃線處填入合適的代碼。
count=0
for i in①      :
  a=i∥100
  b=i%10
  ②     
  if a**3+b**3+c**3==i:
    ③     
    print(i)
print("total:",count)
答案 ①range(100,1000) ②c=i∥10%10 或c=i%100∥10 ③count=count+1
解析 水仙花數是一個三位數整數,因此for循環變量i的范圍為[100,999],即①處代碼為range(100,1000);變量a為三位數i的百位上的數字,b為個位上的數字,②處表示求三位數i的十位上的數字,方法有多種,可以寫為c=i∥10%10,也可以寫為c=i%100∥10等;③處表示統計水仙花數的個數,根據print()語句可知,統計結果存放在變量count中,因此③處語句為count=count+1。
例3 某條形碼共有13位數字組成,其中第13位數字表示校驗碼。校驗碼的計算方法:先計算前12位數字中偶數位數字和奇數數字之和,再把偶數位和乘以3與奇數位和相加,再對相加之和除以10求余數,再用10減去該余數得到校驗碼值。輸入條形碼,輸出結論。實現上述功能程序代碼如下所示,請回答下列問題。
txm=input("請輸入條形碼!")
p,q=0,0
if len(txm)==13:
  for i in range(0,①      ):
    if (i+1)%2==1:
     p+=int(txm[i])
    else:
     q+=int(txm[i])
  yz=10-(p+q*3)%10
  if②      :
    print("驗證成功!")
  else:
    print("驗證失敗!")
else:
  print("輸入條形碼不正確")
(1)在程序劃線處填入合適的代碼。
(2)按照上述算法,輸入條形碼為“2900101074031”,則輸出的提示信息是    。
答案 (1)①len(txm)-1 ②yz==int(txm[12])或yz==int(txm[len(txm)-1] (2)驗證成功!
解析 用For循環遍歷整個字符串的前12位,注意區間的終值。當i是偶數時,把其中的奇數位相加到q中,最后把奇數位和與偶數位和的3倍相加除10取余,用10減去余數作為驗證碼。輸入2900101074031,奇數位數字之和為2+0+1+1+7+0=11,偶數位數字之和為9+0+0+0+4+3=16,校驗碼yz=10-(11+16*3)%10=1,與條形碼中第13位數字相等,因此驗證成功。
變式訓練3 某Python程序如下:
 p ="Tel-114"
 c=" "
 for ch in p:
   if ch>= "0" and ch<= "9":
     c+=str(9-int(ch))
   elif ch>= "a" and ch<= "z":
     c+= chr(ord(ch)- ord("a")+
ord("A"))
   else:
     c+=ch
print(c)
程序運行后,輸出的結果是 (  )
A.tEL-885 B.tEL-114
C.TEL-114 D.TEL-885
答案 D
解析 本題考查循環結構和多分支選擇結構。若ch是數字,則轉換成9減去該數。若是小寫字母,轉換成大寫字母,其余不變。
                
1.有如下Python程序段:
dic={"apple":5,"cake":10,"computer":3000}
lis=[[1,2,3],"apple","computer",[8,0,9]]
ans=0
for i in lis:
  if len(i)<=3:
    ans+=i[-1]
  elif i in dic:
    ans+=dic[i]
print(ans)
執行該程序段后,輸出結果是 (  )
A.3005 B.12 C.3014 D.3017
答案 D
2.下列Python程序段功能為:列表a中存放的是無重復的非負整數,找出其中的最大值max1和次大值max2。
max1 = max2 = 0
for i in range(len(a)):
  if a[i] > max1:
    (1)   
    (2)   
  elif a[i] > max2:
    (3)   
print("最大值為:"+str(max1)+"次大值:"+str(max2))
上述程序段中方框處可選語句為:①max1=a[i] ②max2=a[i] ③max2=max1 ④max1=max2
則(1)、(2)、(3)處語句依次可為 (  )
A.①④② B.①③② C.③①② D.①②④
答案 C
3.有如下Python程序段:
list=[2, 1, 3, 4, 5, 7, 12, 14, 26, 37, 63]
c=0
for i in range(2, 11, 2) :
  if list[i-2]+list[i-1]==list[i]:
    c+=1
print(c)
該程序段運行結果為 (  )
A.2 B.4 C.6 D.8
答案 B
4.有如下Python程序段:
import turtle
n=int(input("輸入 n:"))
for i in range(n*3):
  turtle.forward(100)
  turtle.left(360∥n+2)
turtle.hideturtle()
若輸入 n 的值為 4,則繪制的圖形為以下哪一項 (  )
答案 C
5.有如下Python程序段:
m=int(input("請輸入一個正整數: "))
s=0
for i in range(1 ,m):
  if i% 2 == 0 :
    s=s+i
  elif i% 3 == 0 :
    i=i+1
  s=s+1
print(s)
若輸入m的值為6,執行該程序段后,輸出的結果是 (  )
A.7 B.11 C.13 D.18
答案 B
6.有如下Python程序段:
s='wenzhou';s1='';n=len(s)
for i in range(n∥2,0,-1):
  if s[i-1]    s1=s1+s[i-1]
  else:
    s1=s1+s[n-i]
print(s1)
運行程序后,輸出的內容是 (  )
A.hew B.now C.heu D.neu
答案 C
7.有如下Python程序段:
s=input('請輸入數據:')
t=s[0]
maxt=0
for i in range(len(s)):
  if s[i]>s[i-1]:
    t+=s[i]
    if len(t)>maxt:
      maxt=len(t)
      ans=t
    else:
      t=s[i]
print(ans)
執行該程序段后,輸入“12123234561”,輸出的內容是 (  )
A.23456 B.12123 C.34561 D.1212323
答案 A
8.查找素數能夠很好地體現出計算機解決某些數學問題的速度優勢,除了計算機性能以外,設計更加簡單的算法也能夠提高計算機解決某些問題的速度。某種素數算法就是通過“開關”的思想,例如求100以內的所有素數,采用列表來表示[1,1,1,1,……,1,1,1],列表的索引值表示0-99中的每個數,1表示“開”即為素數(先假設都為素數),從2(0和1不是素數)開始,因為索引2號對應的值為1,則2是素數,再將后面能夠被2整除的索引對應的值都改為0,依次類推……以下程序就是采用這種思路編寫的輸出1000以內的所有素數的程序:
lst1=[] #存放每個數的開關
lst2=[] #存放找到的素數
lst1=[1]*1000 #初始化開關列表
for i in range(2,1000):
  if lst1[i]==1:
   lst2.append(i)
      
     lst1[j]=0
print(lst2) #輸出所有1000以內的素數
上述程序橫線處的合適代碼為 (  )
A.if lst1[j]%i==0:
B.if lst1[i]%i==0:
C.for j in range(i,1000,i):
D.for j in range(i+1,1000,i):
答案 C
9.下列表格中有①②③④共4段Python代碼,
①實現的功能是( ) ②實現的功能是( )
for i in range(6):  t.circle(100) #畫半徑為100圓  t.left(60) x=50for i in range(6):  x=x+10 #x在原來基礎上增加10  t.circle(x) #畫半徑為x圓
③實現的功能是( ) ④實現的功能是( )
x=50for i in range(12):  x=x+10  t.forward(x)  t.left(90) for i in range(6):  for j in range(3):    t.forward(100)    t.left(120)  t.left(60)
實現畫出下表所示的圖形,將ABCD分別填入上表的括號中。
答案 ①D ②A ③B ④C
10.在傳遞信息的過程中,通常會將一些敏感信息進行加密,以下是對數據進行加密的Python程序段,若輸入數據為“my789”,則輸出的內容為 (  )
s=input("輸入明文:")
t=""
for ch in s:
  if "0"<=ch<="9":
    x=int(ch)+3
    if x>=10:
      x=x%10
    ch=str(x)
  t=t+ch
print (t)
A.my123 B.my012 C.pa012 D.pa123
答案 B
解析 本題考查讀取Python程序的能力。逐個訪問字符串將其中的數字加3,如果該數大于等于10,對結果進行除10取余。
11.有如下 Python 程序段:
s = input("請輸入一串字符串:")
f = True
for i in range(len(s)//2):
  if s[i] != s[len(s)-i-1]:
    f = False
    break
print(f)
若執行該程序后, 輸出的結果是“True”,則輸入的字符串可能是
A."onion" B."hello" C."278" D."111"
答案 D
12.有如下Python程序段:
s='nftisa';a=[2,3,1,4];ans=''
for i in range(len(s)):
  t=i%4
  ans=ans+s[a[t]]
print(ans)
程序運行結束后,ans的值為 (  )
A.itsfit B.tifsti C.nisisa D.tisias
答案 B
13.某Python程序代碼如下:
list1=[2,3,4,5,6]
m1=1;m2=2
for n in list1:
  if n%3==0:
    m1*=n
print(m1-m2)
程序運行后,輸出的結果為   
答案 16
14.現有一程序模擬競猜某商品價格,總共有五次競猜機會。請在劃線處填入合適的代碼。
import random
a=random.randint(0, 100)
chance=5
print("共%d 次機會" % (chance))
for i in ①     :
  b=int(input("請輸入一個整數:"))
  if a    print("大啦!!!還剩%d 次機會"%(chance-i))
  elif a>b:
    print("小啦!!!還剩%d 次機會"%(chance-i))
  else:
    print("恭喜您,答對啦!!!數字是%d,共用次數%d"%(a,i))
    ②     #結束循環
答案 ①range(1,chance+1,1)或range(1,chance+1)或range(1,6)或range(1,6,1) ②break
                
一、基礎鞏固
1.有Python程序如下:
lst=[1,6,2,9,3,5,2]
k,s=1,0
m=len(lst)∥2
for i in range(m):
  s+=lst[m+k]-lst[m-k]
  k+=1
print(s)
運行該程序,輸出結果是 (  )
A.1 B.-1 C.14 D.-14
答案 A
解析 本題考查列表的遍歷。m=len(lst)∥2,是中間位置3。m+k和m-k表示中間兩側對稱的索引號。循環3次,依次是3-2,5-6,2-1,把這些差值進行累加。
2.有下列Python程序代碼:
word=["my","Label","Name","nose","nice"]
n=0
for ch in word:
  if ch[0]=="n":
    n=n+1
print(n)
執行上述代碼后,輸出的內容是 (  )
A.2 B.-2 C.1 D.-1
答案 A
解析 程序遍歷列表中的內容,并查找以n開頭的字母個數,但字母區分大小寫。
3.有如下Python程序段:
a[7]=49;a[6]=28
sum=1
for i in range(5,1,-1):
  a[i]=a[i+2]-a[i+1]
  if a[i] % 3==0:
    sum=sum+a[i]
print (a)
執行該程序段后,變量a的值為 (  )
A.22
B.43
C.[0,0,-7,14,7,21,28,49]
D.[-7,14,7,21,28,49]
答案 C
4.求列表lis第 3 項至第 7 項元素的和
lis=[6,3,-2,5,19,21,-9,22,14,25]
he=[0]*10
he[0]=lis[0]
for i in range(1,len(lis)):
  he[i]= he[i-1]+lis[i]
print(     )
劃線處正確的 Python 表達式是 (  )
A. he[7]-he[3] B. he[6]-he[2]
C. he[7]-he[2] D. he[6]-he[1]
答案 D
5.利用海龜作圖繪制一個正n邊形,
import turtle
n=int(input("請輸入正多邊形的邊數n: "))
a=int( input("請輸入邊長a:"))
d=(n-2)*180/n  #正多邊形內角計算公式
t=turtle.Pen()
for i in range(n):   #①
  t.forward(a)   #②
  t.left(d)     #③
turtle.done()     #④
已知有一行代碼有錯,位置是 (  )
A.① B.② C.③ D.④
答案 C
6.有如下Python程序段:
s=0
for i in range(10):
  if i%3==0:
    s+=1
  else:
    continue
else:
  s+=1
print(s)
執行該程序段后,輸出的結果是 (  )
A.3 B.4 C.5 D.6
答案 C
7.有Python代碼如下:
a=[6,3,7,5]
b=[0,1,2,3]
for i in range(3,0,-1):
  if a[b[i]]>a[b[i-1]]:
    b[i],b[i-1]=b[i-1],b[i]
print(b)
則運行結果是 (  )
A.[3,2,1,0] B.[1,3,0,2]
C.[2,0,3,1] D.[2,0,1,3]
答案 D
8.某Python程序如下:
s="san xian lian meng."
dic={}
for i in s:
  if i in dic:
    dic[i]+=1
  else:
    dic[i]=1
在輸出的字典 dic 中,dic["n"]的值為 (  )
A.1 B.2 C.3 D.4
答案 D
解析 字典的訪問和修改只能通過"鍵”來訪問,字典沒有索引。
9.有如下Python程序段:
s="Python"
dic={"t":1,"y":2,"o":3,"P":4,"p":5,"h":6,"n":7}
list=[3,7,1,6,3,9,2,6]
sum=0
for ch in s:
  sum+=list[dic[ch]]
print (sum)
執行該程序段后,變量sum的值為 (  )
A.23 B.25 C.31 D.37
答案 B
10.有如下python程序:
s = ["able","ability","accept","above","agree","ache","club"]
dic = {}
for i in s:
  if i[:2] not in dic:
    dic[i[:2]] = 1
  else:
    dic[i[:2]] += 1
執行該程序段后,dic["ab"]的值為 (  )
A.0 B.1 C.2 D.3
答案 D
11.有如下 Python 程序:
dic={"2":"ABC","3":"DEF","4":"GHI","5":"JKL","6":"MNO","7":"PQRS","8":"TUV","9":"WXYZ"}
s=input()
m=""
t=1
for i in range(1,len(s)):
  if s[i]==s[i-1]:
    t+=1
  elif s[i]=="#":
    m=m+dic[s[i-1]][t-1]
    t=1
print(m)
執行該程序后輸出“EAT”,則輸入的內容可能是 (  )
A.23#32#8# B.233#2#8#
C.33#22#8# D.32#2#8#
答案 B
12.有如下Python程序段:
a=[9,1,7,3,8,4]
key=5
pmin=a[0]
for i in range(1,len (a)):
  if key    pmin=a[i]
print(pmin)
執行該程序段后,輸出的結果是 (  )
A.1 B.4 C.7 D.9
答案 C
13.某數據加密算法的Python程序段如下:
s=input("請輸入明文:")
t=""
for ch in s:
  if "a"<=ch<="z":
    ch=chr(ord(ch)-ord("a")+ord("A"))
  elif "0"<=ch<="9":
    ch=str((int(ch)+7)%10)
  t=ch+t
print(t)
程序運行時,輸入明文"pyT638“,輸出的結果是 (  )
A.305 B.503
C.PYT305 D.503TYP
答案 D
14.判斷身份證中是否包含數字6或8代碼如下:
s=input("請輸入身份證號:")
y=False
if len(s)==18:
  for k in s:
    if k=="6" or k=="8":
      y=True
print(y)
下列說法正確的是 (  )
A.若輸入的身份證號小于18位,執行該程序段無輸出
B.僅將“for k in s:”改為“for k in range(len(s)):”,程序功能不變
C.該代碼段中變量k的數據類型為整數型
D.該程序段無法統計6和8的個數
答案 D
15.有如下Python程序段,
s=['pears','apples','bananas','grapes']
n=len(s[0])
for i in s:
  if len(i)>n:
    n=len(i)
    ans=i
print(ans)
執行該程序后輸出的結果是 (  )
A.pears B.apples
C.bananas D.grapes
答案 C
16.有如下Python程序段:
x="";k=0;y=""
s="394-5-222-60-809"
for i in range (len(s)):
  if "0"<=s[i]<="9":
    k+=1
  else:
    x=s[i-k:i]
    if y      y=x
    k=0
print(y)
執行該段程序后,輸出的結果是 (  )
A.394 B.809 C.60 D.5
答案 C
17.有如下Python程序段:
s="Python"
ans=""
for i in range (len(s)):
  ch=s[i]
  if "a"<=ch<="z":
    if i%2==0:
      ch=chr((ord(ch)-ord("a")+i)%26+ord("a"))
    else:
      ch=ch.upper()#x.upper()將字符串x中的小寫字母轉換成大寫字母
  ans+=ch
print(ans)
執行該段程序后,輸出的內容是 (  )
A.PYTHON B.pgTroz
C.PgrTZO D. PYvHsN
答案 D
18.有如下Python程序段
s=input('請輸入由小寫字母組成的字符串:')
for i in range(len(s)) :
  n=ord(s[i])+2 #字符“a”的ASCII 碼為97
  h=""
  for j in range(8):
    h=str(abs (n%2-1))+h
    n=n∥2
  print(h, end=' ')
若輸入小寫字母“bd”得到的結果是 (  )
A.00100110 01100110
B.10011011 10011001
C.01100100 01100110
D.11011001 10011001
答案 B
19.十八位身份證號由六位數字地址碼、八位數字出生日期碼、三位數字順序碼和一位校驗碼組成, 其中倒數第二位是性別代碼,男單女雙。以下Python程序的功能為識別身份證中的出生日期和性別信息。則加框①②處的代碼依次為 (  )
s=input("輸入身份證號")
xb=['女','男']
print('出生日期為:',s[6:10]+'年'+  ①  +'月'+s[12:14]+'日')
print('性別為:',  ②  )
A.s[10:11]   xb[int(s[-2])%2]
B.s[10:12]   xb[int(s[17])%2]
C.s[-8:12]   xb[int(s[16])%2]
D.s[-8:-6]   xb[(int(s[-2])+1)%2]
答案 C
20.有如下Python程序段:
a=[5,3,8,9,7,3,11]
n=len(a)-1
cnt=0
for i in range(1,n):
  if a[i]==a[i+1]-a[i-1]:
    cnt+=1
  elif a[i]>a[i+1]-a[i-1]:
    cnt+=2  
  else:
    cnt+=3
print(cnt)
執行該程序段后,變量cnt的值為 (  )
A.9 B.10 C.11 D.12
答案 B
21.有如下Python程序段:
c,m=0,0
for i in range(2,len(a)):
  if a[i-2]+a[i-1]==a[i]:
    c+=1
    if c>m:
      m=c
  else:
    c=0
若列表a=[2,1,3,4,5,9,14,23],執行該程序段后,變量m的值是 (  )
A.0 B.1 C. 2 D. 3
答案 D
解析 從第3個位置開始遍歷,若該位置上值是前兩個位置上數之和,統計連續符合這些條件的數據個數c,并找出c的最大值m。數據3,4符合條件,共連續2個數。數據9,14,23符合條件,共連續3個數。
二、能力提升
22.某壓縮算法如下:用兩個數據表示一段連續相同的字符,第一個數據記錄指定字符重復的次數,第二個數據記錄具體字符的值。例如:字符串RRRRGGBBB,用該壓縮算法壓縮后可用4R2G3B表示。
s=input("輸入一個字符")
n=1
ss=""
for i in range(①      ,len(s)):
  if s[i]==s[i-1]:
   n+=1
 else:
   ss=ss+str(n)+s[i-1]
   ②     
ss=ss+str(n)+s[len(s)-1] #③
print(ss)
(1)在程序劃線①②處填入合適的代碼。
(2)若刪除③處語句,輸入字符串RRRRGGBBB,輸出的內容是    。
答案 (1)①1 ②n=1 (2)4R2G
解析 從第2個字符開始,與前面的字符比較,如果相等,進行計數,如果不等,表示該段結束,下段的個數為1。若刪除③處語句,則少了最后一個字符的情況。
23.有如下 Python 程序段:
a = [12,8,9,18,2,19,28,6]
for i in range(len(a)-1):
  if a[i] < a[i+1]:
    a[i],a[i+1] = a[i+1],a[i]
p = len(a)-1
for i in range(len(a)-2,0,-1):
  if a[i] > a[p]:
    p = i
tmp = a[p];a[p] = a[0];a[0]=tmp
執行該程序段后,a列表的值為 (  )
A.[28,9,18,8,19,12,6,2]
B.[12,9,18,8,19,28,6,2]
C.[28,9,18,19,8,12,6,2]
D.[2,9,12,8,18,19,6,28]
答案 A
24.有如下 Python 程序段:
s = "1010/1100/1111"
ans,t = 0,0
for i in s:
  if "0" <= i <= "1":
    t = t * 2 + int(i)
  else:
    ans += t
    t = 0
print(ans)
運行該程序段,輸出結果是 (  )
A.12 B.15 C.22 D.37
答案 C
25.在由數字組成的字符串中,找出同一數字的相鄰最大間距, 如字符串 “1231212323455”,數字“3”第一次與第二次分別出現在位置3和8,相距5,間隔距離最大。編寫Python代碼實現上述功能,Python程序段如下所示:
s=input('請輸入數字字符串:')
list1=[-1]*10
maxn=0
for i in range(len(s)):
  ①   
  if list1[num]!=-1 and i-list1[num]>maxn:
    ②    
  ③   
print(maxn)
則程序中劃線處的代碼分別為 (  )
A.①list1[num]=i   ②maxn=i-num
③num=int(s[i])
B.①num=int(s[i])   ②maxn=i-list1[num]
③list1[num]=i
C.①num=int(s[i])   ②maxn=i-num
③num=i
D.①list1[num]=i   ②maxn=i-list1[num]
③num=int(s[i])
答案 B
26.有如下 Python 程序段:
a=[1,5,9,2,6,8,3,4,7]
n=0 ;flag=True
for i in range(len(a)-1):
  if a[i]    n+=1;flag=False
  elif a[i]>a[i+1] and flag==False:
    n-=1;flag=True
print(n)
執行上述程序段后,輸出的值為 (  )
A.2 B.0 C.-1 D.1
答案 D
27.有如下Python程序段:
s1=input("請輸入字符串:")
a=[0]*128
for item in s1:
  ch=ord(item)
  a[ch]=a[ch]+1
s2=""
for i in range(len(a)):
  for j in range(a[i]):
    s2=s2+chr(i)
print(s2)
列表a各元素的初始值都為0,s1中輸入的內容為"abs54int"。執行該程序后,程序輸出的結果中第5個字符為 (  )
A.n B.s C.4 D.i
答案 D(共90張PPT)
課時5 For循環語句及程序實現
第三章 算法的程序實現
1.掌握for循環語句的語法格式,理解for循環的功能。
2.理解range函數的功能,掌握使用range函數準確表示循環的區間及循環次數。
3.理解break語句和continue語句的作用,并能簡單使用。
4.熟練使用for循環語句解決實際問題。
目 錄
CONTENTS
知識梳理
01
例題精析
02
隨堂檢測
03
鞏固與提升
04
知識梳理
1
一、for循環語句的格式
for <變量> ________________:
  <循環體>
for語句通過遍歷序列中的元素實現循環,并通過序列的元素數量來控制循環次數。
in <序列>
循環體中的語句要向右縮進,且縮進量要一致。
二、for循環語句的功能
for循環語句的功能是將序列對象中的元素逐個賦給目標變量,對每一次賦值都執行一遍循環體語句塊,當序列被遍歷完,即每一個元素都被用過了,則結束循環,然后執行循環體后面的語句。
1.for循環語句是通過次數來控制循環的執行過程,即循環的次數可預先計算出。
2.通過遍歷任意序列的元素來建立循環結構,針對序列的每一個元素執行一次循環體。
3.列表、字符串、元組都是序列,可以利用它們來建立循環。
三、range函數
1.range函數格式
range(______________________)
2.range函數功能
range函數用于產生一個序列,由三個參數(起始值、終值、步長值)來決定序列中元素的個數和范圍。range函數的參數必須為整數。若起始值缺省,則默認為____。步長值是序列中每個元素之間的差,若缺省,則默認為____。
起始值,終值,步長值
0
1
range函數返回的是可迭代對象,range(n)等價于range(0,n),產生的連續整數序列為:0,1,2,…,n-1。
四、break語句和continue語句
break和continue語句的作用是改變控制流程。當break語句在循環結構中執行時,它會立即跳出循環結構,轉而執行循環結構后面的語句。
與break語句不同,當continue語句在循環結構中執行時,并不會退出循環結構,而是立即結束本次循環,重新進入下一輪循環,也就是說,跳過循環體中在continue語句之后的所有語句,繼續下一輪循環。
break語句用來強行退出循環,即序列還沒被完全遍歷完成或循環條件仍然為真時,用來強行退出循環。
五、for循環使用示例
1.遍歷列表建立循環
weeklist=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
for day in weeklist:
  print("week:",day)
2.遍歷字符串建立循環
for i in "Python":
  print(i)
3.通過range對象建立列表
for i in range(10):
  print(i)
例題精析
2
例1 通過調查發現,人們普遍認為帶有數字2、6、8的車牌比較吉利,而帶有數字4的車牌則不吉利。小石想通過編寫程序來計算車牌的吉利值:其中數字2吉利值為1,數字6吉利值為2,數字8吉利值為3,數字4的吉利值為-2,其他數字吉利值為0。如車牌號“浙H94286”的吉利值為4。程序代碼如下:
dic={ "2":1,"6":2,"8":3,"4":-2 }
cp=input("請輸入車牌號(格式如“浙H94286”):")
count=0   
for i in range(2,①   ):
  x=cp[i]
  if x in ["2","4","6","8"]:
    count+=② 
print("該車牌號的吉利值為:",count)
為實現功能,劃線處代碼應為(  )
A.①len(cp)-1  ②dic[x]
B.①len(cp) ②dic[int(x)]
C.①len(cp)-1 ②dic[int(x)]
D.①len(cp) ②dic[x]
解析 本題考查字典和列表的應用。cp是輸入的車牌號,要遍歷車牌中每個號碼,車牌的最后一個號碼索引位置是len(cp)-1,但range結束位置是取不到的。x本身就是字符串類型,是字典dic的鍵,因此不能轉換為數值。
D
變式訓練1 有如下Python程序段:
ch="2nd-ucDOSy3t"
res=""
for i in range(len(ch)):
  if "a"<=ch[i]<="z":
    res=res+ch[i]
print(res)
該程序段的功能是輸出字符串ch中的(  )
A.所有小寫字母 B.小寫字母的個數
C.所有數字之和 D.所有非數字字符
A
解析 本題考查range函數的使用以及程序基本代碼的閱讀能力。根據range函數的參數,是從字符串ch中從索引0開始,依次取出下標為0、1、2……位置的字符,如果字符是小寫,將它按順序依次拼接到字符串res中。所以答案為A。
例2 完全數。如果一個正整數所有的真因子(即除了自身以外的約數)的和等于它本身,則稱該數為“完全數”。輸入一個數,判斷該數是否是完全數,如果是完全數,輸出全部的真因子。
程序代碼如下:
n=int(input("輸入一個正整數:"))
yzlist=[]
t=0
for i in range(1,n):
  if n % i==0:
    zylist.append(i) #將i的值添加到列表yzlist
    t=①     
if②      :
  print("該數是完全數!")
  for i in yzlist:
    print(i)
else:
  print("該數不是完全數!")
(1)完善程序劃線處代碼。
(2)按照上述算法,輸入28,該數    (填:是/不是)完全數。
答案 (1)①t=t+i ②t==n (2)是
解析 (1)從1至n~1之間的所有數進行遍歷,如果能整除,則進行累加,最后將累加的t和n進行比較,如果相等,則表示整數n是完全數,否則不是完全數。觀察程序可知,如果整數n是完全數,則輸出列表yzlist中的元素,因此在遍歷過程中,要將真因子i追加到列表yzlist中,并將真因子累加到變量t中,故①處代碼為t=t+i;如真因子之和t等于正整數n本身,則n是完全數,因此②處代碼為t==n。
(2)輸入28,得到28=1+2+4+7+14,因此28是完全數。
變式訓練2 水仙花數。所謂的水仙花數是指一個三位數整數,它的個位數、十位數和百位數的立方和等于該數本身。輸出所有的水仙花數,統計并輸出統計個數。
實現上述功能的程序如下,請在程序劃線處填入合適的代碼。
count=0
for i in①      :
  a=i∥100
  b=i%10
  ②     
 if a**3+b**3+c**3==i:
    ③     
    print(i)
print("total:",count)
答案 ①range(100,1000) ②c=i∥10%10 或c=i%100∥10 ③count=count+1
解析 水仙花數是一個三位數整數,因此for循環變量i的范圍為[100,999],即①處代碼為range(100,1000);變量a為三位數i的百位上的數字,b為個位上的數字,②處表示求三位數i的十位上的數字,方法有多種,可以寫為c=i∥10%10,也可以寫為c=i%100∥10等;③處表示統計水仙花數的個數,根據print()語句可知,統計結果存放在變量count中,因此③處語句為count=count+1。
例3 某條形碼共有13位數字組成,其中第13位數字表示校驗碼。校驗碼的計算方法:先計算前12位數字中偶數位數字和奇數數字之和,再把偶數位和乘以3與奇數位和相加,再對相加之和除以10求余數,再用10減去該余數得到校驗碼值。輸入條形碼,輸出結論。實現上述功能程序代碼如下所示,請回答下列問題。
txm=input("請輸入條形碼!")
p,q=0,0
if len(txm)==13:
  for i in range(0,①      ):
    if (i+1)%2==1:
     p+=int(txm[i])
    else:
     q+=int(txm[i])
  yz=10-(p+q*3)%10
  if②      :
    print("驗證成功!")
  else:
    print("驗證失敗!")
else:
  print("輸入條形碼不正確")
(1)在程序劃線處填入合適的代碼。
(2)按照上述算法,輸入條形碼為“2900101074031”,則輸出的提示信息是    。
答案 (1)①len(txm)-1 ②yz==int(txm[12])或yz==int(txm[len(txm)-1] (2)驗證成功!
解析 用For循環遍歷整個字符串的前12位,注意區間的終值。當i是偶數時,把其中的奇數位相加到q中,最后把奇數位和與偶數位和的3倍相加除10取余,用10減去余數作為驗證碼。輸入2900101074031,奇數位數字之和為2+0+1+1+7+0=11,偶數位數字之和為9+0+0+0+4+3=16,校驗碼yz=10-(11+16*3)%10=1,與條形碼中第13位數字相等,因此驗證成功。
變式訓練3 某Python程序如下:
 p ="Tel-114"
 c=" "
 for ch in p:
   if ch>= "0" and ch<= "9":
     c+=str(9-int(ch))
   elif ch>= "a" and ch<= "z":
     c+= chr(ord(ch)- ord("a")+
ord("A"))
   else:
     c+=ch
print(c)
程序運行后,輸出的結果是(  )
A.tEL-885 B.tEL-114
C.TEL-114 D.TEL-885
解析 本題考查循環結構和多分支選擇結構。若ch是數字,則轉換成9減去該數。若是小寫字母,轉換成大寫字母,其余不變。
D
隨堂檢測
3
1.有如下Python程序段:
dic={"apple":5,"cake":10,"computer":3000}
lis=[[1,2,3],"apple","computer",[8,0,9]]
ans=0
for i in lis:
  if len(i)<=3:
    ans+=i[-1]
  elif i in dic:
    ans+=dic[i]
print(ans)
執行該程序段后,輸出結果是(  )
A.3005 B.12 C.3014 D.3017
D
2.下列Python程序段功能為:列表a中存放的是無重復的非負整數,找出其中的最大值max1和次大值max2。
max1 = max2 = 0
for i in range(len(a)):
  if a[i] > max1:
    (1)   
    (2)   
  elif a[i] > max2:
    (3)   
print("最大值為:"+str(max1)+"次大值:"+str(max2))
C
上述程序段中方框處可選語句為:①max1=a[i] ②max2=a[i] ③max2=max1 ④max1=max2
則(1)、(2)、(3)處語句依次可為(  )
A.①④② B.①③② C.③①② D.①②④
3.有如下Python程序段:
list=[2, 1, 3, 4, 5, 7, 12, 14, 26, 37, 63]
c=0
for i in range(2, 11, 2) :
  if list[i-2]+list[i-1]==list[i]:
    c+=1
print(c)
該程序段運行結果為(  )
A.2 B.4 C.6 D.8
B
4.有如下Python程序段:
import turtle
n=int(input("輸入 n:"))
for i in range(n*3):
  turtle.forward(100)
  turtle.left(360∥n+2)
turtle.hideturtle()
若輸入 n 的值為 4,則繪制的圖形為以下哪一項(  )
C
5.有如下Python程序段:
m=int(input("請輸入一個正整數: "))
s=0
for i in range(1 ,m):
  if i% 2 == 0 :
    s=s+i
  elif i% 3 == 0 :
    i=i+1
  s=s+1
print(s)
若輸入m的值為6,執行該程序段后,輸出的結果是(  )
A.7 B.11 C.13 D.18
B
6.有如下Python程序段:
s='wenzhou';s1='';n=len(s)
for i in range(n∥2,0,-1):
  if s[i-1]    s1=s1+s[i-1]
  else:
    s1=s1+s[n-i]
print(s1)
運行程序后,輸出的內容是(  )
A.hew B.now C.heu D.neu
C
7.有如下Python程序段:
s=input('請輸入數據:')
t=s[0]
maxt=0
for i in range(len(s)):
  if s[i]>s[i-1]:
    t+=s[i]
    if len(t)>maxt:
      maxt=len(t)
      ans=t
A
    else:
      t=s[i]
print(ans)
執行該程序段后,輸入“12123234561”,輸出的內容是(  )
A.23456 B.12123 C.34561 D.1212323
8.查找素數能夠很好地體現出計算機解決某些數學問題的速度優勢,除了計算機性能以外,設計更加簡單的算法也能夠提高計算機解決某些問題的速度。某種素數算法就是通過“開關”的思想,例如求100以內的所有素數,采用列表來表示[1,1,1,1,……,1,1,1],列表的索引值表示0-99中的每個數,1表示“開”即為素數(先假設都為素數),從2(0和1不是素數)開始,因為索引2號對應的值為1,則2是素數,再將后面能夠被2整除的索引對應的值都改為0,依次類推……以下程序就是采用這種思路編寫的輸出1000以內的所有素數的程序:
lst1=[] #存放每個數的開關
lst2=[] #存放找到的素數
lst1=[1]*1000 #初始化開關列表
for i in range(2,1000):
  if lst1[i]==1:
   lst2.append(i)
      
     lst1[j]=0
print(lst2) #輸出所有1000以內的素數
上述程序橫線處的合適代碼為(  )
A.if lst1[j]%i==0:
B.if lst1[i]%i==0:
C.for j in range(i,1000,i):
D.for j in range(i+1,1000,i):
C
9.下列表格中有①②③④共4段Python代碼,
①實現的功能是( ) ②實現的功能是( )
for i in range(6):   t.circle(100) #畫半徑為100圓   t.left(60) x=50
for i in range(6):
  x=x+10 #x在原來基礎上增加10
  t.circle(x) #畫半徑為x圓
③實現的功能是( ) ④實現的功能是( )
x=50 for i in range(12):   x=x+10   t.forward(x)   t.left(90) for i in range(6):
  for j in range(3):
    t.forward(100)
    t.left(120)
  t.left(60)
實現畫出下表所示的圖形,將ABCD分別填入上表的括號中。
答案 ①D ②A ③B ④C
10.在傳遞信息的過程中,通常會將一些敏感信息進行加密,以下是對數據進行加密的Python程序段,若輸入數據為“my789”,則輸出的內容為 (  )
s=input("輸入明文:")
t=""
for ch in s:
  if "0"<=ch<="9":
    x=int(ch)+3
    if x>=10:
      x=x%10
B
    ch=str(x)
  t=t+ch
print (t)
A.my123 B.my012 C.pa012 D.pa123
解析 本題考查讀取Python程序的能力。逐個訪問字符串將其中的數字加3,如果該數大于等于10,對結果進行除10取余。
11.有如下 Python 程序段:
s = input("請輸入一串字符串:")
f = True
for i in range(len(s)//2):
  if s[i] != s[len(s)-i-1]:
    f = False
    break
print(f)
若執行該程序后, 輸出的結果是“True”,則輸入的字符串可能是( )
A."onion" B."hello" C."278" D."111"
D
12.有如下Python程序段:
s='nftisa';a=[2,3,1,4];ans=''
for i in range(len(s)):
  t=i%4
  ans=ans+s[a[t]]
print(ans)
程序運行結束后,ans的值為(  )
A.itsfit B.tifsti C.nisisa D.tisias
B
13.某Python程序代碼如下:
list1=[2,3,4,5,6]
m1=1;m2=2
for n in list1:
  if n%3==0:
    m1*=n
print(m1-m2)
程序運行后,輸出的結果為    。
答案 16
14.現有一程序模擬競猜某商品價格,總共有五次競猜機會。請在劃線處填入合適的代碼。
import random
a=random.randint(0, 100)
chance=5
print("共%d 次機會" % (chance))
for i in ①     :
  b=int(input("請輸入一個整數:"))
  if a    print("大啦!!!還剩%d 次機會"%(chance-i))
  elif a>b:
    print("小啦!!!還剩%d 次機會"%(chance-i))
  else:
    print("恭喜您,答對啦!!!數字是%d,共用次數%d"%(a,i))
    ②     #結束循環
答案 ①range(1,chance+1,1)或range(1,chance+1)或range(1,6)或range(1,6,1) ②break
4
鞏固與提升
基礎鞏固
能力提升
1.有Python程序如下:
lst=[1,6,2,9,3,5,2]
k,s=1,0
m=len(lst)∥2
for i in range(m):
  s+=lst[m+k]-lst[m-k]
  k+=1
print(s)
A
運行該程序,輸出結果是 (  )
A.1 B.-1 C.14 D.-14
解析 本題考查列表的遍歷。m=len(lst)∥2,是中間位置3。m+k和m-k表示中間兩側對稱的索引號。循環3次,依次是3-2,5-6,2-1,把這些差值進行累加。
2.有下列Python程序代碼:
word=["my","Label","Name","nose","nice"]
n=0
for ch in word:
  if ch[0]=="n":
    n=n+1
print(n)
執行上述代碼后,輸出的內容是(  )
A.2 B.-2 C.1 D.-1
A
解析 程序遍歷列表中的內容,并查找以n開頭的字母個數,但字母區分大小寫。
3.有如下Python程序段:
a[7]=49;a[6]=28
sum=1
for i in range(5,1,-1):
  a[i]=a[i+2]-a[i+1]
  if a[i] % 3==0:
    sum=sum+a[i]
print (a)
執行該程序段后,變量a的值為 (  )
A.22
B.43
C.[0,0,-7,14,7,21,28,49]
D.[-7,14,7,21,28,49]
C
4.求列表lis第 3 項至第 7 項元素的和
lis=[6,3,-2,5,19,21,-9,22,14,25]
he=[0]*10
he[0]=lis[0]
for i in range(1,len(lis)):
  he[i]= he[i-1]+lis[i]
print(     )
劃線處正確的 Python 表達式是(  )
A. he[7]-he[3] B. he[6]-he[2]
C. he[7]-he[2] D. he[6]-he[1]
D
5.利用海龜作圖繪制一個正n邊形,
import turtle
n=int(input("請輸入正多邊形的邊數n: "))
a=int( input("請輸入邊長a:"))
d=(n-2)*180/n  #正多邊形內角計算公式
t=turtle.Pen()
for i in range(n):   #①
  t.forward(a)   #②
  t.left(d)     #③
turtle.done()     #④
已知有一行代碼有錯,位置是(  )
A.① B.② C.③ D.④
C
6.有如下Python程序段:
s=0
for i in range(10):
  if i%3==0:
    s+=1
  else:
    continue
else:
  s+=1
print(s)
執行該程序段后,輸出的結果是(  )
A.3 B.4 C.5 D.6
C
7.有Python代碼如下:
a=[6,3,7,5]
b=[0,1,2,3]
for i in range(3,0,-1):
  if a[b[i]]>a[b[i-1]]:
    b[i],b[i-1]=b[i-1],b[i]
print(b)
則運行結果是(  )
A.[3,2,1,0] B.[1,3,0,2]
C.[2,0,3,1] D.[2,0,1,3]
D
8.某Python程序如下:
s="san xian lian meng."
dic={}
for i in s:
  if i in dic:
    dic[i]+=1
  else:
    dic[i]=1
在輸出的字典 dic 中,dic["n"]的值為(  )
A.1 B.2 C.3 D.4
解析 字典的訪問和修改只能通過"鍵”來訪問,字典沒有索引。
D
9.有如下Python程序段:
s="Python"
dic={"t":1,"y":2,"o":3,"P":4,"p":5,"h":6,"n":7}
list=[3,7,1,6,3,9,2,6]
sum=0
for ch in s:
  sum+=list[dic[ch]]
print (sum)
執行該程序段后,變量sum的值為(  )
A.23 B.25 C.31 D.37
B
10.有如下python程序:
s = ["able","ability","accept","above","agree","ache","club"]
dic = {}
for i in s:
  if i[:2] not in dic:
    dic[i[:2]] = 1
  else:
    dic[i[:2]] += 1
執行該程序段后,dic["ab"]的值為(  )
A.0 B.1 C.2 D.3
D
11.有如下 Python 程序:
dic={"2":"ABC","3":"DEF","4":"GHI","5":"JKL","6":"MNO","7":"PQRS","8":"TUV","9":"WXYZ"}
s=input()
m=""
t=1
for i in range(1,len(s)):
  if s[i]==s[i-1]:
    t+=1
B
  elif s[i]=="#":
    m=m+dic[s[i-1]][t-1]
    t=1
print(m)
執行該程序后輸出“EAT”,則輸入的內容可能是(  )
A.23#32#8# B.233#2#8#
C.33#22#8# D.32#2#8#
12.有如下Python程序段:
a=[9,1,7,3,8,4]
key=5
pmin=a[0]
for i in range(1,len (a)):
  if key    pmin=a[i]
print(pmin)
執行該程序段后,輸出的結果是(  )
A.1 B.4 C.7 D.9
C
D
13.某數據加密算法的Python程序段如下:
s=input("請輸入明文:")
t=""
for ch in s:
  if "a"<=ch<="z":
    ch=chr(ord(ch)-ord("a")+ord("A"))
  elif "0"<=ch<="9":
    ch=str((int(ch)+7)%10)
  t=ch+t
print(t)
程序運行時,輸入明文"pyT638“,輸出的結果是(  )
A.305 B.503 C.PYT305 D.503TYP
14.判斷身份證中是否包含數字6或8代碼如下:
s=input("請輸入身份證號:")
y=False
if len(s)==18:
  for k in s:
    if k=="6" or k=="8":
      y=True
print(y)
下列說法正確的是 (  )
A.若輸入的身份證號小于18位,執行該程序段無輸出
B.僅將“for k in s:”改為“for k in range(len(s)):”,程序功能不變
C.該代碼段中變量k的數據類型為整數型
D.該程序段無法統計6和8的個數
D
15.有如下Python程序段,
s=['pears','apples','bananas','grapes']
n=len(s[0])
for i in s:
  if len(i)>n:
    n=len(i)
    ans=i
print(ans)
執行該程序后輸出的結果是(  )
A.pears B.apples
C.bananas D.grapes
C
16.有如下Python程序段:
x="";k=0;y=""
s="394-5-222-60-809"
for i in range (len(s)):
  if "0"<=s[i]<="9":
    k+=1
  else:
    x=s[i-k:i]
C
    if y      y=x
    k=0
print(y)
執行該段程序后,輸出的結果是(  )
A.394 B.809 C.60 D.5
17.有如下Python程序段:
s="Python"
ans=""
for i in range (len(s)):
  ch=s[i]
  if "a"<=ch<="z":
    if i%2==0:
      ch=chr((ord(ch)-ord("a")+i)%26+ord("a"))
    else:
      ch=ch.upper()#x.upper()將字符串x中的小寫字母轉換成大寫字母
D
  ans+=ch
print(ans)
執行該段程序后,輸出的內容是(  )
A.PYTHON B.pgTroz
C.PgrTZO D. PYvHsN
18.有如下Python程序段
s=input('請輸入由小寫字母組成的字符串:')
for i in range(len(s)) :
  n=ord(s[i])+2 #字符“a”的ASCII 碼為97
  h=""
  for j in range(8):
    h=str(abs (n%2-1))+h
    n=n∥2
  print(h, end=' ')
B
若輸入小寫字母“bd”得到的結果是 (  )
A.00100110 01100110
B.10011011 10011001
C.01100100 01100110
D.11011001 10011001
C
19.十八位身份證號由六位數字地址碼、八位數字出生日期碼、三位數字順序碼和一位校驗碼組成, 其中倒數第二位是性別代碼,男單女雙。以下Python程序的功能為識別身份證中的出生日期和性別信息。則加框①②處的代碼依次為 (  )
s=input("輸入身份證號")
xb=['女','男']
A.s[10:11]   xb[int(s[-2])%2] B.s[10:12]   xb[int(s[17])%2]
C.s[-8:12]   xb[int(s[16])%2] D.s[-8:-6]   xb[(int(s[-2])+1)%2]
20.有如下Python程序段:
a=[5,3,8,9,7,3,11]
n=len(a)-1
cnt=0
for i in range(1,n):
  if a[i]==a[i+1]-a[i-1]:
    cnt+=1
  elif a[i]>a[i+1]-a[i-1]:
    cnt+=2  
B
  else:
    cnt+=3
print(cnt)
執行該程序段后,變量cnt的值為(  )
A.9 B.10 C.11 D.12
21.有如下Python程序段:
c,m=0,0
for i in range(2,len(a)):
  if a[i-2]+a[i-1]==a[i]:
    c+=1
    if c>m:
      m=c
  else:
    c=0
D
若列表a=[2,1,3,4,5,9,14,23],執行該程序段后,變量m的值是 (  )
A.0 B.1 C. 2 D. 3
解析 從第3個位置開始遍歷,若該位置上值是前兩個位置上數之和,統計連續符合這些條件的數據個數c,并找出c的最大值m。數據3,4符合條件,共連續2個數。數據9,14,23符合條件,共連續3個數。
22.某壓縮算法如下:用兩個數據表示一段連續相同的字符,第一個數據記錄指定字符重復的次數,第二個數據記錄具體字符的值。例如:字符串RRRRGGBBB,用該壓縮算法壓縮后可用4R2G3B表示。
s=input("輸入一個字符")
n=1
ss=""
for i in range(①      ,len(s)):
  if s[i]==s[i-1]:
   n+=1
 else:
   ss=ss+str(n)+s[i-1]
   ②     
ss=ss+str(n)+s[len(s)-1] #③
print(ss)
(1)在程序劃線①②處填入合適的代碼。
(2)若刪除③處語句,輸入字符串RRRRGGBBB,輸出的內容是    。
答案 (1)①1 ②n=1 (2)4R2G
解析 從第2個字符開始,與前面的字符比較,如果相等,進行計數,如果不等,表示該段結束,下段的個數為1。若刪除③處語句,則少了最后一個字符的情況。
23.有如下 Python 程序段:
a = [12,8,9,18,2,19,28,6]
for i in range(len(a)-1):
  if a[i] < a[i+1]:
    a[i],a[i+1] = a[i+1],a[i]
p = len(a)-1
for i in range(len(a)-2,0,-1):
  if a[i] > a[p]:
    p = i
tmp = a[p];a[p] = a[0];a[0]=tmp
A
執行該程序段后,a列表的值為 (  )
A.[28,9,18,8,19,12,6,2]
B.[12,9,18,8,19,28,6,2]
C.[28,9,18,19,8,12,6,2]
D.[2,9,12,8,18,19,6,28]
C
24.有如下 Python 程序段:
s = "1010/1100/1111"
ans,t = 0,0
for i in s:
  if "0" <= i <= "1":
    t = t * 2 + int(i)
  else:
    ans += t
    t = 0
print(ans)
運行該程序段,輸出結果是(  )
A.12 B.15 C.22 D.37
25.在由數字組成的字符串中,找出同一數字的相鄰最大間距, 如字符串 “1231212323455”,數字“3”第一次與第二次分別出現在位置3和8,相距5,間隔距離最大。編寫Python代碼實現上述功能,Python程序段如下所示:
s=input('請輸入數字字符串:')
list1=[-1]*10
maxn=0
for i in range(len(s)):
  ①   
  if list1[num]!=-1 and i-list1[num]>maxn:
    ②    
  ③   
print(maxn)
B
則程序中劃線處的代碼分別為 (  )
A.①list1[num]=i   ②maxn=i-num
③num=int(s[i])
B.①num=int(s[i])   ②maxn=i-list1[num]
③list1[num]=i
C.①num=int(s[i])   ②maxn=i-num
③num=i
D.①list1[num]=i   ②maxn=i-list1[num]
③num=int(s[i])
D
26.有如下 Python 程序段:
a=[1,5,9,2,6,8,3,4,7]
n=0 ;flag=True
for i in range(len(a)-1):
  if a[i]    n+=1;flag=False
  elif a[i]>a[i+1] and flag==False:
    n-=1;flag=True
print(n)
執行上述程序段后,輸出的值為(  )
A.2 B.0 C.-1 D.1
27.有如下Python程序段:
s1=input("請輸入字符串:")
a=[0]*128
for item in s1:
  ch=ord(item)
  a[ch]=a[ch]+1
s2=""
for i in range(len(a)):
  for j in range(a[i]):
    s2=s2+chr(i)
print(s2)
D
列表a各元素的初始值都為0,s1中輸入的內容為"abs54int"。執行該程序后,程序輸出的結果中第5個字符為 (  )
A.n B.s C.4 D.i課時5 For循環語句及程序實現
課時目標
1.掌握for循環語句的語法格式,理解for循環的功能。2.理解range函數的功能,掌握使用range函數準確表示循環的區間及循環次數。3.理解break語句和continue語句的作用,并能簡單使用。4.熟練使用for循環語句解決實際問題。
一、for循環語句的格式
for <變量> ____________:
  <循環體>
for語句通過遍歷序列中的元素實現循環,并通過序列的元素數量來控制循環
次數。
循環體中的語句要向右縮進,且縮進量要一致。
二、for循環語句的功能
for循環語句的功能是將序列對象中的元素逐個賦給目標變量,對每一次賦值都執行一遍循環體語句塊,當序列被遍歷完,即每一個元素都被用過了,則結束循環,然后執行循環體后面的語句。
1.for循環語句是通過次數來控制循環的執行過程,即循環的次數可預先計算出。
2.通過遍歷任意序列的元素來建立循環結構,針對序列的每一個元素執行一次循環體。
3.列表、字符串、元組都是序列,可以利用它們來建立循環。
三、range函數
1.range函數格式
range(________________________)
2.range函數功能
range函數用于產生一個序列,由三個參數(起始值、終值、步長值)來決定序列中元素的個數和范圍。range函數的參數必須為整數。若起始值缺省,則默認為________。步長值是序列中每個元素之間的差,若缺省,則默認為________。
range函數返回的是可迭代對象,range(n)等價于range(0,n),產生的連續整數序列為:0,1,2,…,n-1。
四、break語句和continue語句
break和continue語句的作用是改變控制流程。當break語句在循環結構中執行時,它會立即跳出循環結構,轉而執行循環結構后面的語句。
與break語句不同,當continue語句在循環結構中執行時,并不會退出循環結構,而是立即結束本次循環,重新進入下一輪循環,也就是說,跳過循環體中在continue語句之后的所有語句,繼續下一輪循環。
break語句用來強行退出循環,即序列還沒被完全遍歷完成或循環條件仍然為真時,用來強行退出循環。
五、for循環使用示例
1.遍歷列表建立循環
weeklist=[″Monday″,″Tuesday″,″Wednesday″,″Thursday″,″Friday″,″Saturday″,″Sunday″]
for day in weeklist:
 print(″week:″,day)
2.遍歷字符串建立循環
for i in ″Python″:
 print(i)
3.通過range對象建立列表
for i in range(10):
 print(i)
例1 通過調查發現,人們普遍認為帶有數字2、6、8的車牌比較吉利,而帶有數字4的車牌則不吉利。小石想通過編寫程序來計算車牌的吉利值:其中數字2吉利值為1,數字6吉利值為2,數字8吉利值為3,數字4的吉利值為-2,其他數字吉利值為0。如車牌號“浙H94286”的吉利值為4。程序代碼如下:
dic={ "2":1,"6":2,"8":3,"4":-2 }
cp=input("請輸入車牌號(格式如“浙H94286”):")
count=0   
for i in range(2,①   ):
  x=cp[i]
  if x in ["2","4","6","8"]:
    count+=② 
print("該車牌號的吉利值為:",count)
為實現功能,劃線處代碼應為 (  )
A.①len(cp)-1  ②dic[x]
B.①len(cp) ②dic[int(x)]
C.①len(cp)-1 ②dic[int(x)]
D.①len(cp) ②dic[x]
聽課筆記:                                    
                                    
                                    
變式訓練1 有如下Python程序段:
ch=″2nd-ucDOSy3t″
res=″″
for i in range(len(ch)):
  if ″a″<=ch[i]<=″z″:
    res=res+ch[i]
print(res)
該程序段的功能是輸出字符串ch中的(  )
A.所有小寫字母 B.小寫字母的個數
C.所有數字之和 D.所有非數字字符
例2 完全數。如果一個正整數所有的真因子(即除了自身以外的約數)的和等于它本身,則稱該數為“完全數”。輸入一個數,判斷該數是否是完全數,如果是完全數,輸出全部的真因子。
程序代碼如下:
n=int(input(″輸入一個正整數:″))
yzlist=[]
t=0
for i in range(1,n):
  if n % i==0:
    zylist.append(i) #將i的值添加到列表yzlist
    t=①____________
if②____________:
  print(″該數是完全數!″)
  for i in yzlist:
   print(i)
else:
print(″該數不是完全數!″)
(1)完善程序劃線處代碼。
(2)按照上述算法,輸入28,該數________(填:是/不是)完全數。
聽課筆記:                                    
                                    
                                    
變式訓練2 水仙花數。所謂的水仙花數是指一個三位數整數,它的個位數、十位數和百位數的立方和等于該數本身。輸出所有的水仙花數,統計并輸出統計個數。
實現上述功能的程序如下,請在程序劃線處填入合適的代碼。
count=0
for i in①____________:
  a=i∥100
  b=i%10
  ②____________
  if a**3+b**3+c**3==i:
    ③____________
    print(i)
print(″total:″,count)
例3 某條形碼共有13位數字組成,其中第13位數字表示校驗碼。校驗碼的計算方法:先計算前12位數字中偶數位數字和奇數數字之和,再把偶數位和乘以3與奇數位和相加,再對相加之和除以10求余數,再用10減去該余數得到校驗碼值。輸入條形碼,輸出結論。實現上述功能程序代碼如下所示,請回答下列問題。
txm=input("請輸入條形碼!")
p,q=0,0
if len(txm)==13:
  for i in range(0,①      ):
    if (i+1)%2==1:
     p+=int(txm[i])
    else:
     q+=int(txm[i])
  yz=10-(p+q*3)%10
  if②      :
    print("驗證成功!")
  else:
    print("驗證失敗!")
else:
  print("輸入條形碼不正確")
(1)在程序劃線處填入合適的代碼。
(2)按照上述算法,輸入條形碼為“2900101074031”,則輸出的提示信息是    。
聽課筆記:                                    
                                    
                                    
變式訓練3 某Python程序如下:
 p ="Tel-114"
 c=" "
 for ch in p:
   if ch>= "0" and ch<= "9":
     c+=str(9-int(ch))
   elif ch>= "a" and ch<= "z":
     c+= chr(ord(ch)- ord("a")+
ord("A"))
   else:
     c+=ch
print(c)
程序運行后,輸出的結果是 (  )
A.tEL-885 B.tEL-114
C.TEL-114 D.TEL-885
                
1.有如下Python程序段:
dic={"apple":5,"cake":10,"computer":3000}
lis=[[1,2,3],"apple","computer",[8,0,9]]
ans=0
for i in lis:
  if len(i)<=3:
    ans+=i[-1]
  elif i in dic:
    ans+=dic[i]
print(ans)
執行該程序段后,輸出結果是 (  )
A.3005 B.12 C.3014 D.3017
2.下列Python程序段功能為:列表a中存放的是無重復的非負整數,找出其中的最大值max1和次大值max2。
max1 = max2 = 0
for i in range(len(a)):
  if a[i] > max1:
    (1)   
    (2)   
  elif a[i] > max2:
    (3)   
print("最大值為:"+str(max1)+"次大值:"+str(max2))
上述程序段中方框處可選語句為:①max1=a[i] ②max2=a[i] ③max2=max1 ④max1=max2
則(1)、(2)、(3)處語句依次可為 (  )
A.①④② B.①③② C.③①② D.①②④
3.有如下Python程序段:
list=[2, 1, 3, 4, 5, 7, 12, 14, 26, 37, 63]
c=0
for i in range(2, 11, 2) :
  if list[i-2]+list[i-1]==list[i]:
    c+=1
print(c)
該程序段運行結果為 (  )
A.2 B.4 C.6 D.8
4.有如下Python程序段:
import turtle
n=int(input("輸入 n:"))
for i in range(n*3):
  turtle.forward(100)
  turtle.left(360∥n+2)
turtle.hideturtle()
若輸入 n 的值為 4,則繪制的圖形為以下哪一項 (  )
5.有如下Python程序段:
m=int(input("請輸入一個正整數: "))
s=0
for i in range(1 ,m):
  if i% 2 == 0 :
    s=s+i
  elif i% 3 == 0 :
    i=i+1
  s=s+1
print(s)
若輸入m的值為6,執行該程序段后,輸出的結果是 (  )
A.7 B.11 C.13 D.18
6.有如下Python程序段:
s='wenzhou';s1='';n=len(s)
for i in range(n∥2,0,-1):
  if s[i-1]    s1=s1+s[i-1]
  else:
    s1=s1+s[n-i]
print(s1)
運行程序后,輸出的內容是 (  )
A.hew B.now C.heu D.neu
7.有如下Python程序段:
s=input('請輸入數據:')
t=s[0]
maxt=0
for i in range(len(s)):
  if s[i]>s[i-1]:
    t+=s[i]
    if len(t)>maxt:
      maxt=len(t)
      ans=t
    else:
      t=s[i]
print(ans)
執行該程序段后,輸入“12123234561”,輸出的內容是 (  )
A.23456 B.12123 C.34561 D.1212323
8.查找素數能夠很好地體現出計算機解決某些數學問題的速度優勢,除了計算機性能以外,設計更加簡單的算法也能夠提高計算機解決某些問題的速度。某種素數算法就是通過“開關”的思想,例如求100以內的所有素數,采用列表來表示[1,1,1,1,……,1,1,1],列表的索引值表示0-99中的每個數,1表示“開”即為素數(先假設都為素數),從2(0和1不是素數)開始,因為索引2號對應的值為1,則2是素數,再將后面能夠被2整除的索引對應的值都改為0,依次類推……以下程序就是采用這種思路編寫的輸出1000以內的所有素數的程序:
lst1=[] #存放每個數的開關
lst2=[] #存放找到的素數
lst1=[1]*1000 #初始化開關列表
for i in range(2,1000):
  if lst1[i]==1:
   lst2.append(i)
      
     lst1[j]=0
print(lst2) #輸出所有1000以內的素數
上述程序橫線處的合適代碼為 (  )
A.if lst1[j]%i==0:
B.if lst1[i]%i==0:
C.for j in range(i,1000,i):
D.for j in range(i+1,1000,i):
9.下列表格中有①②③④共4段Python代碼,
①實現的功能是( ) ②實現的功能是( )
for i in range(6):  t.circle(100) #畫半徑為100圓  t.left(60) x=50for i in range(6):  x=x+10 #x在原來基礎上增加10  t.circle(x) #畫半徑為x圓
③實現的功能是( ) ④實現的功能是( )
x=50for i in range(12):  x=x+10  t.forward(x)  t.left(90) for i in range(6):  for j in range(3):    t.forward(100)    t.left(120)  t.left(60)
實現畫出下表所示的圖形,將ABCD分別填入上表的括號中。
10.在傳遞信息的過程中,通常會將一些敏感信息進行加密,以下是對數據進行加密的Python程序段,若輸入數據為“my789”,則輸出的內容為 (  )
s=input("輸入明文:")
t=""
for ch in s:
  if "0"<=ch<="9":
    x=int(ch)+3
    if x>=10:
      x=x%10
    ch=str(x)
  t=t+ch
print (t)
A.my123 B.my012 C.pa012 D.pa123
11.有如下 Python 程序段:
s = input("請輸入一串字符串:")
f = True
for i in range(len(s)//2):
  if s[i] != s[len(s)-i-1]:
    f = False
    break
print(f)
若執行該程序后, 輸出的結果是“True”,則輸入的字符串可能是 (  )
A."onion" B."hello" C."278" D."111"
12.有如下Python程序段:
s='nftisa';a=[2,3,1,4];ans=''
for i in range(len(s)):
  t=i%4
  ans=ans+s[a[t]]
print(ans)
程序運行結束后,ans的值為 (  )
A.itsfit B.tifsti C.nisisa D.tisias
13.某Python程序代碼如下:
list1=[2,3,4,5,6]
m1=1;m2=2
for n in list1:
  if n%3==0:
    m1*=n
print(m1-m2)
程序運行后,輸出的結果為   
14.現有一程序模擬競猜某商品價格,總共有五次競猜機會。請在劃線處填入合適的代碼。
import random
a=random.randint(0, 100)
chance=5
print("共%d 次機會" % (chance))
for i in ①     :
  b=int(input("請輸入一個整數:"))
  if a    print("大啦!!!還剩%d 次機會"%(chance-i))
  elif a>b:
    print("小啦!!!還剩%d 次機會"%(chance-i))
  else:
    print("恭喜您,答對啦!!!數字是%d,共用次數%d"%(a,i))
    ②     #結束循環

展開更多......

收起↑

資源列表

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 普定县| 临城县| 霍林郭勒市| 玉林市| 广东省| 浮梁县| 浪卡子县| 赫章县| 泸西县| 贵州省| 伊川县| 灌南县| 合水县| 景洪市| 四平市| 色达县| 绍兴市| 鄂托克旗| 白河县| 碌曲县| 鹤岗市| 贞丰县| 中阳县| 宁化县| 章丘市| 武陟县| 原阳县| 将乐县| 舒兰市| 综艺| 开江县| 连城县| 疏附县| 中山市| 富裕县| 湖南省| 威远县| 曲松县| 黑河市| 临海市| 海盐县|