2018年12月24日 星期一

python - 數組練習 以及 List關鍵字應用

各個關鍵字用法


函數
說明
資料統計
max( )
最大值,可以獲取數列中的最大值
min( )
最小值,可以獲取數列中的最小值
sum( )
總和,獲取數列總和
len( )
查詢串列中有多少元素
del( )
可以刪除串列中的元素

函數
說明
字串方法
lower( )
將字串轉轉小寫
upper( )
將字串轉轉大寫
title( )
將字串第一個轉成大寫其他轉成小寫
rstrip( )
刪除字串尾端多餘的空白
lstrip( )
刪除字串前端多餘的空白
strip( )
刪除字串前、後端多餘的空白


函數
說明
增刪串列元素
append( )
在串列末端增加元素
insert( )
在串列任意位置增加元素
pop( )
可依照引所指任意刪除元素,刪除後會返回刪除的值,
如沒有指定就刪除最末端元素
remove( )
可刪除指定的元素


函數
說明
串列排序
reverse( )
可將串列內容顛倒排序
sort( )
可由小到大進行排序,
加上”reverse = True” 即可使用大到小的排序方式

 
函數
說明
進階操作
index( )
查詢特定元素內容第一次出現的索引值
count( )
可查詢元素出現在串列內的次數
list( )
將字串轉為串列
split( )
可根據符號或是空格,將字串拆開,變成一個串列
startswith( )
檢查字串的起始文字是不是特定字串
endswith( )
檢查字串的末端文字是不是特定字串
replace(1?,2?)
將1?的內容替代為2?
join
將兩個元素進行連結,成為一個字串
in
檢查元素是不是在串列內,如果在返回一個True
not in
檢查元素是不是在串列內,如果不在返回一個True


  • 列表中可以再放入列表
1.列出球員數據

d = [['ledron James','SF','12/30/84'],23,9,90,13,220]
#定義d字串g = len(d)
k = max(d[1:g])
i = d.index(k)
name = d[0][0]
position = d[0][1]
birthday = d[0][2]
print ("名子",name)
print ('球隊位置',position)
print ('球員生日',birthday)
print ("在第%d 得到最高分 %d"%(i,k))

執行結果:

名子 ledron James
球隊位置 SF
球員生日 12/30/84
在第5 得到最高分 220

  • 二維串列的運用


2.用二為串列的成績系統總分計算。

Classmate =[['王大明',90,39,34,23,11],            ['陳小寶',44,12,88,46,10]
            ]
print(Classmate[0][4])
print(Classmate[1][4])
Classmate[0][4] = sum(Classmate[0][1:4])
Classmate[1][4] = sum(Classmate[1][1:4])
print(Classmate[0])
print(Classmate[1])

執行結果:

23
46
['王大明', 90, 39, 34, 163, 11]
['陳小寶', 44, 12, 88, 144, 10]



  • 串列賦值

#可以使用賦值來修改字串
#將兩個盒子內的顯示更改為相同,將盒子二更改成盒子一
box_one = ["cake",'water']        #第一個盒子內有蛋糕跟水box_two = ["chocolate",'juice']   #第二個盒子內有巧克力跟果汁print(box_one)       #檢查盒子內容print(box_two)       #檢查盒子內容replace = box_one
print("盒子1的內容物: ",box_one)
print("盒子2的內容物: ",replace)

執行結果:

['cake', 'water']
['chocolate', 'juice']
盒子1的內容物:  ['cake', 'water']
盒子2的內容物:  ['cake', 'water']


  • 字串切片  可定義切片位置,可用來讀取或是修改
string =  'Happy every day'print("列印string 第1 - 3元素 = ",string[0:3])
print("列印string 第2 - 4元素 = ",string[1:4])
print("列印string 第2,4,6元素 = ",string[1:6:2])  #1到六的範圍,每兩個打印一次,6是空白print("列印string 第1到最後元素 = ",string[0:])
print("列印string 最後3個元素 = ",string[-3:])
print("列印string 從後往前元素 = ",string[:-1])
執行結果:
列印string 第1 - 3元素 =  Hap
列印string 第2 - 4元素 =  app
列印string 第2,4,6元素 =  ap 
列印string 第1到最後元素 =  Happy every day
列印string 最後3個元素 =  day
列印string 最後3個元素 =  Happy every da
  • 函數或是方法 
 
函數
說明
len( )
計算字串長度
max( )
最大值
min( )
最小值



string =  'Happy every day'
length = len(string)
print('字串長度',length)

big_numeral = max(string)
print('最大的unicode碼值和字元',ord(big_numeral),"哪個字:",big_numeral)

small_numeral = min(string)
print('最小的unicode碼值和字元',ord(small_numeral),"哪個字:",small_numeral) #32 代表空白
# ord 方法可以轉譯成 Unicode 數值
執行結果:
字串長度 15
最大的unicode碼值和字元 121 哪個字: y
最小的unicode碼值和字元 32 哪個字:  

  • list 可以將字串轉成串列
change = list("Happy every day")
print(change)
執行結果:
['H', 'a', 'p', 'p', 'y', ' ', 'e', 'v', 'e', 'r', 'y', ' ', 'd', 'a', 'y']


  • split( )處理字串  可以將指定的符號拆開變成一個字串
str1 = "Happy every day"str2 = "Work***hard***to***learn***to***grow"
result_1 = str1.split()   #字串轉成串列result_2 = str2.split('***')

print(str1,'串列的內容是',result_1)
print(str1,'串列的字數是',len(result_1))

print(str2,'串列的內容是',result_2)
print(str2,'串列的字數是',len(result_2))
執行結果:
Happy every day 串列的內容是 ['Happy', 'every', 'day']
Happy every day 串列的字數是 3
Work***hard***to***learn***to***grow 串列的內容是 ['Work', 'hard', 'to', 'learn', 'to', 'grow']
Work***hard***to***learn***to***grow 串列的字數是 6



  •  startswith(  ),endswith(  ),replace(  ),join(  )

函數
說明
startswith( )
列出字串起始文字是否是特定子字串
endswith( )
列出字串末端文字是否是特定子字串
replace( 1? , 2?)
將1?字串由2?取代
count( )
查詢出現的次數
join( )
將字串內的元素以特定字元連接,成為一個字串

content = "Practice makes perfect"print("檢查開頭是不是Practice返回對錯:",content.startswith('Practice'))
print("檢查末端是不是Practice返回對錯:",content.endswith('Practice'))
print("makes 出現的次數:",content.count("makes"))
replace = content.replace('Practice','P********')
print('把開頭的Practice換成P********:    ',replace)
print('把開頭的Practice換成P********:    ',content.replace("Practice",'P********'))

str1 = "**"str2 = "123"print("str1加上str2的結果:",str1.join(str2))
執行結果:
檢查開頭是不是Practice返回對錯: True
檢查末端是不是Practice返回對錯: False
makes 出現的次數: 1
把開頭的Practice換成P********:     P******** makes perfect
把開頭的Practice換成P********:     P******** makes perfect
str1加上str2的結果: 1**2**3


練習:  將文件列表中.py  文件記錄下來
file = ['ok1','ok2.py','ok3.py','ok4']

py = []
for os in file :
    if os.endswith('.py'):
        py.append(os)
print(py)

執行結果:
['ok2.py', 'ok3.py']

  • in 以及 not in 運算式  可以檢查元素是否在內
#密碼驗證
password  = 'victory'pa = input('請輸入密碼')
print('in運算式')
if pa in password :
    print('在密碼中:回傳 True')
else:
    print('不再密碼中:回傳 False')

print('not in 運算式')
if pa not in password :
    print('不在密碼中:回傳 True')
else:
    print('再密碼中:回傳 False')
輸入: victory
執行結果:
in運算式
在密碼中:回傳 True
not in 運算式
再密碼中:回傳 False



總練習:
練習一
#需求:輸入一個字串判定是否是不是正確網址,並把它開啟(需要為http://及https://)
import os
while True:

    str1 = input("輸入一個網址要符合格式 :")

    if str1.startswith('http://') :

        print('正確,正在開啟')
        os.system('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" str1')
        break
    elif str1.startswith('https://') :
        print('正確,正在開啟')
        os.system('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" str1')
        break
    else:
        print('不正確從再次輸入')
執行結果:
輸入一個網址要符合格式 :http://ffff
正確,正在開啟

練習二:
需求:  獲取資料夾位置,然後把副檔名 zip 跟 msi  打印出來

from os import listdir
mypath = "D:\dow"files = listdir(mypath)
collect = []
filexe = []
for execution in files:
    if execution.endswith('.zip'):
        collect.append(execution)
    elif execution.endswith('.msi'):
        filexe.append(execution)
print('這是zip的檔案:  ',collect)
print('這是exe的檔案:  ',filexe)
執行結果:
這是zip的檔案:   ['2016 First Updates.zip', 'scrapy-master.zip', 'wordpress-https.3.4.0.zip']
這是exe的檔案:   ['python-2.7.9.msi', 'python-2.7.msi']

練習三:
需求: 算出歌詞 字數,然後打印內容以及輸入某個詞句查詢出現次數
lyrics = '''You broke my heart 'cause I couldn't dance,You didn't even want me aroundAnd now I'm back to let you know I can really shake 'em downDo you love me? (I can really move)Do you love me? (I'm in the groove)Now do you love me?(Do you love me now that I can dance?)Watch me, now(Work, work) ah, work it out baby(Work, work) well, I'm gonna drive you crazy(Work, work) ah, just a little bit of soul, now?(Work)Now I can mash potatoes (I can mash potatoes)I can do the twist (I can do the twist)Tell me, baby, do you like it like this?Tell me (tell me) tell meDo you love me?Do you love me, baby?Now do you love me?(Do you love me now that I can dance?)Watch me, now(Work, work) ah, work it out baby(Work, work) well, I'm gonna drive you crazy(Work, work)…'''
adaptation =  list(lyrics)
count = len(adaptation)
print('Do You Love Me這首歌共有%d 個字'%(count))
print('本首歌的歌詞為:',  lyrics.split(" "))
Inquire = input('輸入歌詞詞句可以查詢在歌曲中出現幾次')
print('%s共出現過%d次' % (Inquire, lyrics.count(Inquire)))
執行結果:
Do You Love Me這首歌共有773 個字
本首歌的歌詞為: ['You', 'broke', 'my', 'heart', "'cause", 'I', "couldn't", 'dance,\nYou', "didn't", 'even', 'want', 'me', 'around\nAnd', 'now', "I'm", 'back', 'to', 'let', 'you', 'know', 'I', 'can', 'really', 'shake', "'em", 'down\nDo', 'you', 'love', 'me?', '(I', 'can', 'really', 'move)\nDo', 'you', 'love', 'me?', "(I'm", 'in', 'the', 'groove)\nNow', 'do', 'you', 'love', 'me?\n(Do', 'you', 'love', 'me', 'now', 'that', 'I', 'can', 'dance?)\nWatch', 'me,', 'now\n(Work,', 'work)', 'ah,', 'work', 'it', 'out', 'baby\n(Work,', 'work)', 'well,', "I'm", 'gonna', 'drive', 'you', 'crazy\n(Work,', 'work)', 'ah,', 'just', 'a', 'little', 'bit', 'of', 'soul,', 'now?\n(Work)\nNow', 'I', 'can', 'mash', 'potatoes', '(I', 'can', 'mash', 'potatoes)\nI', 'can', 'do', 'the', 'twist', '(I', 'can', 'do', 'the', 'twist)\nTell', 'me,', 'baby,', 'do', 'you', 'like', 'it', 'like', 'this?\nTell', 'me', '(tell', 'me)', 'tell', 'me\nDo', 'you', 'love', 'me?\nDo', 'you', 'love', 'me,', 'baby?\nNow', 'do', 'you', 'love', 'me?\n(Do', 'you', 'love', 'me', 'now', 'that', 'I', 'can', 'dance?)\nWatch', 'me,', 'now\n(Work,', 'work)', 'ah,', 'work', 'it', 'out', 'baby\n(Work,', 'work)', 'well,', "I'm", 'gonna', 'drive', 'you', 'crazy\n(Work,', 'work)…\n']
輸入歌詞詞句可以查詢在歌曲中出現幾次You
You共出現過2次



沒有留言:

張貼留言