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...