python控制结构(二)_Python学习手册之控制结构(二)
在上一篇文章中,我們介紹了Python的一些控制結構,現在我們繼續介紹剩下的 Python 控制結構。查看上一篇文章請點擊:https://www.cnblogs.com/dustman/p/9972078.html
列表(List)
列表是一種用于保存一系列有序的集合,你可以想象你有一張購物清單,上面列出了需要購買的商品,在購物清單上你可能為每件物品都單獨列一行。
你需要把它放在方括號里并讓每一項都用逗號隔開,使用列表中的索引來訪問列表中的特定項。
List = ["Hello","world","!"]print(List[0])print(List[1])print(List[2])
運行結果:
>>>
Hello
world
!
>>>
索引的第一項為 0 不是 1,這和我們生活中實際情況有點不一樣。
下面代碼輸出是什么?
nums = [1,2,3,4,5]print(nums[1])
運行結果:
>>>
2
>>>
一個空列表是用一個空的方括號創建的。
empty_list =[]print(empty_list)
運行結果:
>>>[]>>>
大多數情況下,逗號不會出現在列表中的最后一項的后面。當然在那里防止一個逗號也是完全有效的語法。
通常列表符包括單種數據類型,但也可以包含幾種不同的數據類型,列表里也能嵌套列表。
num = 3things= ["string",0,[1,2,num],3.14]print(things[1])print(things[2])print(things[2][1])
運行結果:
>>>0
[1, 2, 3]2
>>>
內嵌列表通常用于表示一個二位數組,因為 Python 缺少在其它語言中用于這種作用的多維數組。
下面代碼是創建一個列表,并輸出其第三項。
List = [20,21,22]print(List[2])
運算結果:
>>>
22
>>>
如果你試圖讀取或者寫入一個不存在的列表元素,你會得到一個 indexError 錯誤。
一些類型比如字符串能夠被索引訪問,用索引方式字符串的行為就像字符串里包含一個字符的列表。
對于其他不能索引的類型,例如整數,對其索引訪問對導致 TypeError。
str = "Hello world!"
print(str[3])、
運行結果:
>>>l>>>
判斷下面代碼中哪一行會導致錯誤?
num = [1,2,3,[4],5]print(num[0])print(num[3][0])print(num[5])
第四行代碼出錯,導致報 IndexError 錯誤。
列表運算符
列表里的列表元素可修改
num = [1,1,1,1]
num[2] = 14
print(num)
運行結果:
>>>[1, 1, 14, 1]>>>
加號 + 運算符可以把列表拼接在一起,星號 * 運算符可以將列表重復指定的次數。
num = [1,2,3]print(num * 2)print(num + [4,5,6])
運行結果:
>>>[1, 2, 3, 1, 2, 3]
[1, 2, 3, 4, 5, 6]>>>
列表和字符串在很多方面的行為都是相似的,字符串可以看作是不能更改的字符列表。
創建一個列表給其第二個元素重新賦值并打印整個列表。
num = [14,25,45]
num[1] = 22
print(num)
運行結果:
>>>[14, 22, 45]>>>
要檢查一個元素是不是在列表里,可以使用 in 運算符。返回 True 表示該元素存在,否則返回 False。
words = ["I","Like","Python","!"]print("I" inwords)print("Python" inwords)print("Java" in words)
運行結果:
>>>True
True
False>>>
in 運算符還可以用于確定字符串是否是另一個字符串的子字符串。
要檢查一個元素不在列表里使用 not 運算符。
nums = [1,2,3]print(not 4 innums)print(4 not innums)print(not 1 innums)print(1 not in nums)
運行結果:
>>>True
True
False
False>>>
檢查'z'是否在列表中。
nums = ['a','b','z']if 'z' innums:print('Yes')
運行結果:
>>>Yes>>>
列表方法
要在列表尾部添加一個元素可以使用列表的 append 方法。
nums = [1,2,3]
nums.append(4)print(nums)
運行結果:
>>>[1, 2, 3, 4]>>>
列表后面加點再加 append 是因為它是列表類的一種方法,類方法將在后面的文章中詳細講解。
要獲取列表的長度,使用 len 函數。
nums = [1,2,3]print(len(nums))
運行結果:
>>>
3
>>>
與 append 不同,len 是一個正常函數,而不是列表類的一個方法。
要想將對象插入列表還可以使用 insert 方法。不想 append 方法,它可以分配這個對象插入到哪個索引。
words = ["Python","fun"]
index= 1words.insert(index,"is")print(words)
運行結果:
>>>['Python', 'is', 'fun']>>>
index 方法被用在發現對象在哪個索引編號,返回從左到右首次發現的索引編號。如果列表里沒有此對象做出 ValueError 錯誤。
words = ['a','b','c','d','e']print(words.index('c'))print(words.index('a'))print(words.index('z'))
運行結果:
>>>
20
ValueError:'z' is not inlist>>>
列表還有一些更有用的函數的方法:
max(list):返回列表里的最大值
min(list):返回列表里的最小值
list.count(obj):統計某個元素在列表中出現的次數
list.remove(obj):移除列表中某個值的第一個匹配項
list.reverse():反向列表中元素
list.pop():移除列表中的最后一個元素,并且返回該元素的值
list.sort([func]):對列表進行排序
添加 'z' 到列表的尾部并打印列表的長度。
List =[]
List.append('z')print(len(List))
運行結果:
>>>
1
>>>
range函數
range函數創建一個包含順序數字的對象,下面代碼創建一個從 0 到小于 10 的列表。
nums = list(range(10))print(nums)
運行結果:
>>>[0,1, 2, 3, 4, 5, 6, 7, 8, 9]>>>
上面代碼調用了 list 方法強調類型轉換。因為 range 函數本身會創建 Range 對象,如果要將其作為一個列表使用,則必須將其轉換為列表。
range 函數接收一個參數時,它創建一個從 0 到小于參數的一個有序序列。
如果它接收兩個參數,它創建一個從第一個參數開始到小于第二個參數的一個序列。
nums = list(range(1,4))print(nums)print(range(10) == range(0,10))
運行結果:
>>>[1, 2, 3]
True>>>
range 函數默認每次產生有序序列算法是對序列尾數加 1 操作,但是如果其有第三個參數,那么產生序列但加的數就是以第三個參數為準。
nums = list(range(1,24,2))print(nums)
運行結果:
>>>[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23]>>>
for 循環
遍歷一個列表中所有元素可以通過一個 while 循環和一個計數器變量來完成。
words = ["hello","world","Python","Java"]
count=0
max_index= len(words) - 1
while count <=max_index:
word=words[count]print(word + "!")
count= count + 1
運行結果:
>>>hello!
world!
Python!
Java!>>>
上面的實例遍歷列表中的所有項,使用索引編號訪問它們,并添加感嘆句打印每一個索引項。
上面的用 while 的循環來遍歷列表有點太費筆墨了。
Python 提供了一個更簡單的方法,也是最常用的辦法就是 for 循環。
words = ["hello","world","Python","Java"]for word inwords:print(word + "!")
運行結果:
>>>hello!
world!
Python!
Java!>>>
Python 里的 for 循環像其他語言的 foreach 循環。
for 循環通常用于重復某些代碼一定次數,下面是通過將 for 循環與 range 對象結合起來用。
for i in range(4):print("hello!")
運行結果:
>>>hello!
hello!
hello!
hello!>>>
在 for 循環中使用 range 對象時,不需要調用 list 函數。因為不需要索引,所以不需要將它轉換成列表。
小項目:創建一個計算器
學習玩 Python 控制結構,我們用 Python 來創建一個簡單的程序:計算器,下面是程序的大概結構,我們需要完善它。
程序運行時,先打印程序接受的輸入,然后接受用戶輸入。
輸入 add 計算兩個數字相加
輸入 subtract 計算兩個數字相減
輸入 multiply 計算兩個數字相乘
輸入 divide 計算兩個數字相除
輸入 quit 退出程序
whileTrue:print("Make a choice")print("Enter 'add' to add two nums")print("Enter 'substact' to substact two nums")print("Enter 'multiply' to multiply two nums")print("Enter 'quit' to quit two nums")
user_input= input(":")if user_input == "add":
...elif user_input == 'subtract':
...elif user_input == 'multiply':
...elif user_input == 'divide':
...elif user_input == 'quit':break
else:print("input error!")
程序用 if/elif 語句比較用戶輸入,無法匹配到選項時輸出 "input error",用戶輸入 "quit" 時用 break 語句跳出循環。
程序的下部分是獲取用戶希望使用的數字。下面的代碼為計算器的加法部分,其他部分也須編寫類似的代碼。
elif:
num1= float(input("Enter a num:"))
num2= float(input("Enter another num:"))
現在,當用戶輸入 "add" 程序提示用戶輸入兩個數字并存儲這兩個輸入到相應的變量里。
實際上如果用戶在輸入時輸入非數字,此程序就會崩潰。我們將在后面的模塊中討論這個問題。
最后,程序計算用戶輸入的值并顯示它。下面代碼顯示最終的完成部分。
elif user_input == "add":
num1= float(input("Enter a num:"))
num2= float(input("Enter another num:"))
result= str(num1 +num2)print("The answer is" + result)
現在我們有一個程序,提示用戶輸入,然后計算并打印用戶輸入的兩個數之和。
必須為其他分支編寫類似的代碼(用于減法、乘法和除法)。輸出行 print 語句可以放在 if 語句之外,避免代碼的重復。
“為著后來的回憶,小心著急地描繪你現在的圖畫!”
總結
以上是生活随笔為你收集整理的python控制结构(二)_Python学习手册之控制结构(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪质量到底怎么样 消费者真实评价及品
- 下一篇: 农行网捷贷一般额度多少