1. 程式人生 > >python3基礎05

python3基礎05

day05

for語句:
  作用:
    用來遍歷可迭代的物件的資料元素
      遍歷是指依次經歷物件,並且只經歷一次
      可迭代物件是指能依次獲取資料元素的物件
     (字串/range()/列表)
  可迭代物件包括:
    字串 str
    ---以下後面會講-----
    列表   list
    元組   tuple
    ....

for語句語法:
   for 變數列表 in 可迭代物件:
      語句塊1
   else:     (當迭代結束時才被執行)
       語句塊2
示例:
  for.py

練習一:
  1.任意輸入一段字串
  1)計算出輸入字元'a'的個數,並打印出個數
  2)計算出空格的個數,並打印出個數
     (要求用for語句,不允許用str,count語句)
  思考:
   用while語句能否實現上述功能

for語句說明:
   else子句部分可以省略
   當在迴圈內部用break終止迴圈時,else子句部分不會執行

示例:
  見for1.py


range函式:
  range(stop) 用來生成0-stop區間內的整數直到stop為止(不包含stop)
  range(start,stop[,step])
         起始  終止   步長
  用來生成start~stop區間內的整數,直到stop為止(不包含stop)
  每次生成整數後移動step
格式詳見:
   >>>help(range)
 作用:
   用來建立一個生成一系列整數的可迭代物件(也叫整數序列生成器 )
 說明:
   range返回的物件可以有for語句來進行依次迭代訪問取出其中的整數
 示例:
   range(4)        #生成0,1,2,3
   range(3,6)      #生成3,4,5
   range(1,10,2)   #生成1,3,5,7,9
   range(5,0,-2)   #生成5,3,1
   range(4,0)      #空   

練習二:
  1.用for語句列印1~20的整數,列印在一行內:
     1 2 3 4 5....20
  2.計算1+3+5+7+9+....+99
   分別用for和while實現


for語句變數可能不被建立的問題:
  for x in range(4,0):
      print(x)
  print('x繫結',x)
  示例:
   for2.py

for注意問題:
   示例:
    for3.py

for語句的巢狀:
  for x in "ABC":
      for y in "123":
          print(x+y)
   #列印九次

思考下列程式的列印次數:
 for x in range(5):
     for y in range(10):
         print("hello")
 #請問列印多少個hello?

 練習三:
 1.求:100以內有哪些數與自身+1的乘積再對11求餘等於8?
   x*(x+1)%11==8

 2.輸入一個數,列印如下正方形(用for實現)
  請輸入:5
  列印:
   12345
   12345
   12345
   12345
   12345

 3.請輸入一個數,列印如下正方形(用for實現)
  請輸入:5
  列印:
    12345
    23456
    34567
    45678
    56789

 4.用程式生成如下字串:
  1)"ABCDEFG.....XYZ"
   2)"AaBbCcDd........XxYyZz"
   提示:
    可以用ord和char函式

 5.列印全世界所有的文字


continue語句:
   作用:
     用於迴圈語句(while,for中),不再執行本次迴圈continue之後的語句,重新開始新一次的迴圈
   語法:
    continue
   說明:
    1.在while語句中執行continue,將會直接跳轉到while語句的真值表達式處重新判斷迴圈條件
    2.在for語句中執行continue語句,將會從可迭代物件中取下一個元素,繫結變數後再次進行迴圈
   

 fo中使用continue語句的示例:
     continue.py
     continue1.py


 練習四:
  1.求1-100之間所有不能被2,3,5,7整除的數的和


while中使用continue語句的示例:
   while_continue.py

迴圈小結:
  四條語句:
   while語句
   for語句
   break語句      # 協助迴圈
   continue語句   # 協助迴圈
  可迭代物件:
    str字串
    range() 函式返回的物件
  


列表list
  問題:
    如何將計算機運算的資料臨時儲存在一個地方,同時又方便新增,刪除和修改等操作
  容器
    
列表的定義:
  列表是一種容器
  列表是可以改變的序列
  列表是由一系列特定元素組成的,元素與元素之間可能沒有任何的關聯關係,但他們之間有先後順序關係

python3中的五種序列型別:
  字串str
  列表  list
  元組 tuple
  位元組串  bytes
  位元組陣列 bytearray

 
建立空列表的字面值表示式
  []   #建立一個空列表
 l=[]     變數l繫結一個新建立的一個空列表 
建立飛空的列表的字面值:
  l={1,2,3,4}         變數l繫結一個新建立且含有四個元素的列表
  l=['beijing','shanghai','shenzhen']
  l=[1,'Two',3.14,'四']
  l=[1,2,[3.1,3.2,3.2]]

列表的建構函式list:
  list() 生成一個空列表,等同於[]
  list(iterable) 用可迭代物件建立一個列表

示例:
 l=list()          #l=[]
 l=list("hello")   #l=['h','e','l','l','o']
 l=list(range(5))  #l=[0,1,2,3,4]

 列表的運算:
   算術運算:
   +  +=  *   *=   (運算規則與字串的運算規則相同)
  
   +  用於拼接列表,生成新的列表
   x=[1,2,3]
   y=[4,5.6]
   z=x+y   #z=[1,2,3,4,5,6]

   +=  用原列表與右側可迭代物件追加來修改原列表
   語法:
     列表變數 += 可迭代物件
   示例:
     x = [1,2,3]
     y = [4,5,6]
     x += y  #x=[1,2,3,4,5,6]
     x += 'ABC'   #x=[1,2,3,'A','B','C']
     x = [1,2,3]
     x += range(4,6) #x=[1,2,3,4,5]

     # +=是改變原來的列表物件,並不會建立新的列表
     x = [1,2,3]
     print(id(x))
     x += [4,5,6]
     print(id(x))
     示例:
      list_add.py


     注:列表是可變的物件,+=是修改原來的物件
        字串是不可變物件 +=是建立新的物件

   * 生成重複的列表
     x=[1,2]*3    #x=[1,2,1,2,1,2]

   *= 生成重複的列表,並改變對變數的繫結
     x=[1,2,3]
     x*=4   #x=[1,2,3,1,2,3,1,2,3,1,2,3]

列表的比較運算:
   運算子:
     <   <=  >  >=  ==  !=
     比較規則與字串的比較規則相同

   示例:
    [1,2,3]<[1,2,4]    #True
    [1,2,3]<[3,2,1]    #True
    [1,2,3]==[3,2,1]   #False
    [2,3]>=[1,2,3]     #True

    [1,'2']>['2',1]    #報錯
    ['ABC',1,2,3]<['123',3,2]    #False

列表是可迭代物件
  l=[1,3,5,7]
  for x in l:
      print(x)   #1 3 5 7

練習五:
1.輸入三行文字,將這三行文字儲存在列表L中,並列印
 如:
  請輸入:abc<回車>
  請輸入:1234<回車>
  請輸入:你好<回車>
 生成如下列表L=['abc','1234','你好']
print(L)
2.輸入任意行文字,存於列表L中,當不輸入內容直接回車後結束輸入:
 1)列印列表L的內容
 2)打印出您剛才輸入了幾行文字資訊
 3)打印出您剛才輸入了多少個字元資料

課後練習:
1.寫一個程式,任意輸入一個數,判斷這個數是否是素數(prime)
 素數(也叫質數),是隻能被1和自身整除的正整數
  如:2 3 5 7 11  13  17 19....
提示:
  用排除法:判斷x是否為素數時.只要讓x分別除以2,3,4,5...,x-1
  只要能整除則x不是素數,否則x時素數
2.輸入一個正整數(代表樹幹的高度)
  列印如下一棵聖誕樹
  如:
   輸入:2
  列印:
   *
   ***
    *
    *
   輸入:3
  列印:
    *
   ***
  *****
    *
    *
    *

 3.算出100~999之間的水仙花數(Narcissistic Number)
 水仙花數是指百位的3次方+十位的3次方+個位的3次方等於原數的整數
 例如:
   153=1**3+5**3+3**3
 答案:
   153  370...