Python基礎——while、字串、列表及操作

weixin_34050427發表於2018-05-26

Python基礎——day3
一. While迴圈
while和if的用法基本類似,區別在於,if條件成立,則執行一次;while條件成立則重複執行,直到條件不成立。
一般情況下需要重複執行的程式碼都可以用迴圈方式實現
1.while迴圈的格式:
while條件:
條件滿足時,執行事件1
條件滿足時,執行事件2
條件滿足時,執行事件3
程式碼演示:

# while迴圈格式演示
a = 1
while a <= 5:
    print(a)
    print("這是第%d次列印" % a)
    a += 1 
3105341-2fc8690fba3379ed.png
image.png

2.while迴圈的應用

(1) 計算1-100的累計和
程式碼演示:

#需求:計算1-100的累計和
num = 1
num_sum = 0
while num <= 100:
    num_sum = num_sum +num
    num += 1
print(num_sum)
3105341-d69b5374b111c009.png
image.png

(2) 計算1-100的偶數和
程式碼演示:

#需求:計算1-100的偶數和
#分析:偶數,即整數除以2,得到的結果沒有餘數,即餘數為0
num = 1
num_sum = 0
while num <= 100:
    if num % 2 == 0:
        num_sum = num_sum + num
    num += 1
print(num_sum)
3105341-72638a7ea8a22519.png
image.png

3.while迴圈巢狀
類似於if巢狀,while巢狀就是while迴圈裡還有while迴圈
While迴圈巢狀格式:
while條件1:
條件1滿足時,執行事件1
條件1滿足時,執行事件2
條件1滿足時,執行事件3
...
while條件2:
條件2滿足時,執行事件1
條件2滿足時,執行事件2
條件2滿足時,執行事件3
...
(1) while迴圈巢狀應用
列印如下格式圖形:

*
**
***
****

程式碼演示:

需求:列印如下格式圖形
*
**
***
****

a = 1
while a <= 4:
    b =1
    while b <= a:
        print("*", end="")  #因為print()列印時,有自動換行的特性,因此使用end=""來結束其換行
        b += 1
    a += 1
    print()
3105341-a6f9865fcfff042d.png
image.png

(2) while迴圈制作九九乘法表
程式碼演示:

#需求,用while迴圈列印就就乘法表
a = 1
while a <= 9:
    b = 1
    while b <= a:
        print("%d*%d=%d\t" % (b, a ,a*b),end="")
        b += 1
    a += 1
    print()
3105341-e340854a421af6c0.png
image.png

(3) while迴圈列印倒九九乘法表
程式碼演示:

i = 9
while i>=1:
    j = 1
    while j<=i:
        print("%d*%d=%d\t"%(j,i,j*i),end="")
        j+=1
    print("\n")
    i-=1
3105341-55cd6bdd29dd0f1d.png
image.png

二.break 和 continue
break和continue 是兩個只能在迴圈語句中使用到的關鍵詞,有特殊作用。
在迴圈中,遇到continue會跳過當前一次迴圈,跳到下一次迴圈的條件判斷中
在迴圈中,遇到break會直接終止當前迴圈,執行其他後續的程式碼

程式碼演示:
1.(面試題)使用迴圈生成1,2,3,4,5,7,9,10數字

# #需求:使用迴圈生成1,2,3,4,5,7,9,10
my_num = 1
while my_num <= 10:
    if my_num == 6 or my_num == 8:
        my_num += 1                   #注意,使用continue的時候,要注意改變變數,否則構成死迴圈
        continue                     #迴圈遇到continue之後,會直接跳到下一次迴圈的條件判斷中
    print( my_num )
    my_num += 1
3105341-5bd4ba020db4e3ee.png
image.png

2.修改上述需求,使用迴圈生成1-10數字,但是當數字是6時,結束迴圈

#修改需求:使用迴圈生成1-10數字,但是當數字是6時,結束迴圈
my_num = 1
while my_num <= 10:
    if my_num == 6:
        break        #迴圈中遇到break,會終止迴圈,執行迴圈以後的程式碼
    print(my_num)
    my_num += 1
3105341-f84b901032a324ba.png
image.png

二. 字串
1.字串,就是文字,就是由多個字元組成的資料型別
定義字串:
Str = “hello,python”
字串就是用來顯示給使用者看的資料,不需要進行復雜的數學運算(+,-,*,/),但是允許字串進行加法運算,表示拼接。
字串拼接演示演示:

# 字串拼接
my_str1 = "hello"
my_str2 = "python"
my_str3 = my_str1 + "\t" + my_str2
print(my_str3)
3105341-820773edd6eedda2.png
image.png

字串也可以和整數進行乘法運算,表示重複字串多遍
演示:

#字串和整數相乘
my_str1 = "hello,python \t"
print( my_str1*5 )
3105341-7bb9647665b684af.png
image.png

在python中,字串一共有四種定義方法:
(1) 使用單引號定義:

(2) 使用雙引號定義:

(3) 使用三個單引號定義:

(4) 使用三個雙引號定義:

# python中定義字串的四種方法:
# 1.使用單引號定義
str1 = 'Hello,Python'
print(str1)
# 2.使用雙引號定義
str2 = "Hello,World"
print(str2)
# 3.使用三個單引號定義
str3 = '''Hello,China'''
print(str3)
# 4.使用三個雙引號定義
str4 = """Hello,Deutchland"""
print(str4)
3105341-be74fb0ca39a8a75.png
image.png

由於三個引號已經被多行註釋使用,因此定義字串時,一般不使用三個引號

2.字串的相關操作
問題:什麼時候使用單引號定義字串,什麼時候使用雙引號定義字串?
回答:如果字串的內容出現英文的單引號時,使用雙引號定義字串,如果字 符串內容出現英文雙引號時,使用單引號定義字串。
程式碼演示:

# 如果定義字串的內容中含有英文單引號,則使用雙引號進行定義
my_str1 = "I'm from China"
print(my_str1)
# 如果定義字串的內容中含有英文雙引號,則使用單引號進行定義
my_str2 = 'He said:"I am form England"'
print(my_str2)
3105341-8836428105fa4a84.png
image.png

字串中,會有一些特殊用途的字元:

  1. 佔位符:%
  2. 轉義字元:在字串左邊帶著反斜槓的,\n表示換行,\t表示縮排一個tab
    演示:
# 佔位符
my_str1 = 5
print("小紅上街買了%d個蘋果" % my_str1)

#轉義字元:\t  \n
my_str2 = "hello\npython"
print(my_str2)
my_str3 = "hello\tpython"
print(my_str3)
3105341-797d70d17e67cba6.png
image.png

\’和 \”,因為引號本身在字串中表示字元的開始和結束,那麼\’和\”表示,只是輸出一個文字的引號。
演示:

# \' 和 \"
my_str1 = 'I\'m from China'
print(my_str1)
my_str2 = "He said :\" hello,python\""
print(my_str2)
3105341-efae351e40c314a5.png
image.png

三. 列表
Python中除了支援數字型別(整數,浮點數,布林值)以外,還有非數字型(字串、列表、元組、字典)
非數字型別,在開發中也叫“高階變數型別”
1.列表(list):是一個由多個成員構成的資料型別
如果我們希望儲存一個班級同學的姓名:

#需求儲存一個班級同學的姓名:
al_class_student_name = ["小明", "小黑", "小白", "小紅"]
print(al_class_student_name)
print(type(al_class_student_name))
3105341-872999cb7a250150.png
image.png

列表中的資料,可以是字串,也可以是數字等其他的資料型別

  1. 列表的下標
    列表的下標指揮從0開始逐個遞增
#列表的下標
my_list = ["a", "b", "c", "d", "e"]
print(my_list[2])
3105341-a9e6b4e9c8deedbf.png
image.png

列表的下標除了可以使用正數以外,還可以使用負數,
正數下標從0開始,從左往右排列
負數下標從-1開始,從右往左排列

#提取列表中倒數第一個資料
my_list =["a", "b", "c", "d", "e", "f"]
print(my_list[-1])
3105341-d899ef79759e2f6a.png
image.png

列表中雖然可以放不同資料型別的成員,但是一般在開發過程中,我們通常把同一種資料型別的資料,放在同一個列表中,也就是說列表中的資料,要麼都是字串,要麼都是數字,原因主要是,列表往往和迴圈一起出現,使用迴圈對列表進行統一的操作。

注意:其實,除了列表有下標以外,其他的非數字型別的資料都會有下表,比如字串。

四. for迴圈
1.for迴圈一般就是用來完成提取列表和字串、元組的所有成員
for類似while,也是一種迴圈
演示:

class_student_list = ["小白", "小黑", "小灰", "小紅", "小藍"]
# 需求:希望把所有學生姓名全部輸出出來
# 如果不使用迴圈來輸出則如下:
print(class_student_list[0])
print(class_student_list[1])
print(class_student_list[2])
print(class_student_list[3])
print(class_student_list[4])
print()

#先使用while來完成:
a = 1
while a <= 4:
    print(class_student_list[a])
    a += 1
print()

#使用for迴圈實現:
for name in class_student_list:
    print(name)
3105341-765c583681c0ff2f.png
image.png

遍歷:從第一個到最後一個,每一個都進行操作、檢視。
迴圈:就是重複執行

2.for迴圈生成數字
需求:生成1-10之間的整數
程式碼演示:

# 需求:生成1-10之間的整數
# 先使用while迴圈實現:
a = 1
while a <= 10:
    print(a, end="")  #使用end="",讓print()列印不換行
    a += 1
print()

# 使用for迴圈實現:
# range(開始位置,結束位置) 可以生成指定範圍的整數[不包含結束位置]
for i in range(1,11):
    print(i, end="")
3105341-8aafdf69cb71e3fd.png
image.png
  1. for語句也可以有else語句
    演示:
# for迴圈中的else用法:
my_list1 = ["小明", "小黑", "小白", "小紅", "小藍", "小灰", "小小黑"]
for name in my_list1:
    if name == "小黑" :
        print("找到你了,小黑")
        break
else:
    print("沒找到你")    # for後面else語句中的程式碼會在執行所有迴圈後,才會執行,
                         # 遇到break,else就不會執行了
3105341-6962f567c8224e4c.png
image.png

五. 列表的更多操作
(1) 列表也支援加法運算和乘法運算
兩個列表進行加法運算,表示拼接兩個列表
列表和整數可以進行乘法運算,表示重複當前列表中的成員指定次數遍
程式碼演示:

#列表的加法運算,兩個列表相加表示兩個列表的拼接
list1 = [1,2,3]
list2 = ["a", "b", "c"]
list3 = list1 + list2
print(list3)

#列表的乘法運算,列表和整數相乘,表示按指定次數重複當前列表的成員
list4 = list1 * 4
print(list4)
3105341-a43886a4fb176b6f.png
image.png

(2) in 判斷一個成員是否在列表中
in 是一個運算子,其結果只會是True和False。
程式碼演示:

# in 來判斷成員是否在列表中
my_list = ["a", "b", "c", "d"]
print("a" in my_list)
3105341-1872b98f3949e215.png
image.png

True即表示該成員在列表中
(3) not in 判斷一個成員是否不在列表中
程式碼演示:

# not in 判斷一個成員是否不在這個列表中
my_list = ["a", "b", "c", "d"]
print("a" not in my_list)
3105341-b1a4d89b163d6c04.png
image.png

在開發過程中,一般in 是用在if條件中:
程式碼演示:

# in 在開發中一般和if判斷連用
my_list = ["a", "b", "c", "d"]
my_name = "a"
if my_name in my_list:
    print("%s在列表中" % my_name)
else:
    print("%s不在列表中" % my_name)
3105341-c99831fb55550b4e.png
image.png

(4) 列表的增、刪、改、查
在開發中,列表中存放的成員就是資料,那麼我們可以對列表裡面的成員進行,增加、刪除、修改、檢視
常規操作:增、刪、改、查、排序
程式碼演示:

# 列表增加成員
# 1.在列表末尾追加成員
# 列表.append(資料)
my_list1 = ["a", "b", "c", "d"]
my_list1.append("e")
print(my_list1)

# 2.insert 指定下標左邊位置插入資料
# 列表.insert(下標, 資料)
my_list2 = ["az", "bz", "cz", "dz"]
my_list2.insert(2, "fz")
print(my_list2)
# 在列表操作中,insert的下標如果不存在,則表示追加

# 3. extend 合併一個新的列表
my_list3 = ["ax", "bx", "cx", "dx"]
my_list4 = ["ex", "fx", "gx"]
my_list3.extend(my_list4)
print(my_list3)

# 列表刪除成員操作
# 1.使用del通過指定下標可以刪除成員
my_list5 = ["aa", "bb", "cc", "dd"]
del my_list5[-1]
print(my_list5)

# 2.使用remove刪除成員
# 列表.remove(要刪除的資料)
# 使用remove刪除資料時,如果資料不存在會報錯
my_list6 = ["aaa", "bbb", "ccc"]
my_list6.remove("aaa")
print(my_list6)

# 3.使用pop刪除最後一個成員,也可以刪除指定下標對應的資料
# 設定的下標必須存在,否則報錯
my_list7 = ["aaaa","bbbb", "cccc", "dddd"]
my_list7.pop(-1)
print(my_list7)

# 4.清空列表
# 列表.clear()
my_list8 = ["q", "w", "e", "r"]
my_list8.clear()
print(my_list8)

# 列表修改成員的值
# 直接通過下標進行值的修改,如果下標不存在,則直接報錯
my_list9 = ["t", "y", "u", "i"]
my_list9[-1] = "o"
print(my_list9)

# 列表查詢成員
# 1.直接通過下標index查詢成員,如果下標不存在,則報錯
my_list10 = ["1", "2", "3", "4"]
print(my_list10[3])

# 2.通過值來查詢成員下標,如果不存在,則報錯
my_list11 = ["11", "22", "33", "44"]
res1 = my_list11.index("11")
print(res1)

# 3.在指定下標範圍內查詢資料,找不到則報錯
my_list12 = ["z", "x", "c", "v"]
res2 = my_list12.index("x", 0, 2)   #查詢的時候不包含結束位置
print(res2)

# 4.count 統計成員在列表中出現的次數,如果沒有,則為0次
my_list13 = ["a", "s", "d", "a", "a", "f"]
res3 = my_list13.count("a")
print(res3)

# 5.len 統計列表成員的個數
my_list14 = ["qq", "ww", "ee", "rr"]
res4 = len(my_list14)
print(res4)

# 列表排序
# 讓列表中的成員進行升序排序
my_list15 = [8, 2, 6, 7, 3, 1]
my_list15.sort()
print(my_list15)

# 可以通過key=str,來設定排序的時候,全部當成字串來進行排序
my_list16 = ["a", 2, "f", 8, "s", "p", 3]
my_list16.sort(key=str)
print(my_list16)

# 可以通過key=len,來設定排序的時候,通過字串長短來排序
# sort()預設讓列表成員進行升序排列,還可以設定降序
my_list17 = [6, 4, 8, 0, 3, 5]
my_list17.sort(reverse=True)  #讓列表中的成員降序排序
print(my_list17)

# reverse()可以將列表中成員進行逆序排列
my_list18 = ["小明", "小白", "小蘭", "小黑"]
my_list18.reverse()
print(my_list18)
3105341-ef6be1c50cd2e23b.png
image.png

個人獨立部落格: www.limiao.tech


相關文章