第二課 python基礎2(列表,字串,集合,字典,檔案),

來源:互聯網
上載者:User

第二課 python基礎2(列表,字串,集合,字典,檔案),

 1.列表,元祖操作

 2.字串操作

 3.字典操作

 4.集合操作

 5.檔案操作

 6.字元編碼與轉碼

 7.內建函數

 

1.列表,元祖操作

  列表操作:

  

  

COPY:

  

結果:

可以看出,copy是個淺copy,它copy的是這個列表指標指向的地址,把每一個元素看成一個地址,所以'lzx‘ 改變了以後,list;b 也跟著改變了,所以’lz’沒有改變 

   

      

結果:

這個結果表示了a 和 b 這兩個列表,其實指向的都是同一個地址,並沒有又重新複製一列表給 b ,如果要複製一份單獨的列表給 b ,就需要  import copy  ,用這個庫裡的 deepcopy() 這個函數。

 

寫一個小程式:

     1.啟動程式後,讓使用者輸入工資,然後列印商品列表

   2.允許使用者根據商品編號購買商品

  3.使用者選擇商品後,檢測餘額是否足夠,夠就直接扣款,不夠就提醒

  4.可隨時退出,退出時,列印已購買的商品和餘額

commodity = [    ('Iphone',5800),    ('Mac_Pro',9800),    ('bike',800),    ('watch',10600),    ('coffee',60),    ('kola',10),]shopping_list = []salary = input('input your salary:')if salary.isdigit():#判斷輸入的是否是一個整數    salary = int(salary)    while True:        for index,item in enumerate(commodity):            print(index,item)#列印出商品和下標        user_choice = input('please choose your commodity:')        if user_choice.isdigit():#判斷輸入的是否是一個整數            user_choice = int(user_choice)#把輸入的字串轉化成一個整數            if user_choice < len(commodity) and user_choice > -1: #判斷商品                p_item = commodity[user_choice]                if p_item[1] <= salary:#買得起                    shopping_list.append(p_item)                    salary -= p_item[1]                    print('added %s in shopping car,your current balance is\033[31;1m%s\033[0m'%(p_item,salary))                else:                    print('\033[41;1m你的餘額只剩[%s]啦,還買個毛線\033[0m'%salary)            else:                print('product code [%s] is not exist'%user_choice)        elif user_choice == 'q':            print('------shopping list------------')            for p in shopping_list:                print(p)            print('your current balance:',salary)            exit()        else:            print('invalid optiob')
購物車小程式

 


2.字串操作:
  常用的為例:

 

3.字典操作

  字典:無序的,沒有下標,可以嵌套多層,多級操作

  常用操作:

 小程式:三級菜單:

data = {    '北京':{        "昌平":{            "沙河":["oldboy","test"],            "天通苑":["鏈家地產","我愛我家"]        },        "朝陽":{            "望京":["平治","陌陌"],            "國貿":{"CICC","HP"},            "東直門":{"Advent","飛信"},        },        "海澱":{},    },    '山東':{        "德州":{},        "青島":{},        "濟南":{}    },    '廣東':{        "東莞":{},        "常熟":{},        "佛山":{},    },}enit_flag = Falsewhile not enit_flag:    for i in data:        print(i)    choice1 = input('choice1:')    if choice1 in data:        while not enit_flag:            for i2 in data[choice1]:                 print(i2)            choice2 = input('choice2')            if choice2 in data[choice1]:                while not enit_flag:                    for i3 in data[choice1][choice2]:                        print(i3)                    choice3 = input('choice3:')                    if choice3 in data[choice1][choice2]:                        while not enit_flag:                            for i4 in data[choice1][choice2][choice3]:                                print(i4)                            choice4 = input('這是最後一層,返回請按b')                            if choice4 == 'b':                                break                            elif choice4 == 'q':                                enit_flag = True                    if choice3 == 'b':                        break                    elif choice3 == 'q':                        enit_flag = True            if choice2 == 'b':                break            elif choice2 == 'q':                enit_flag = True
省 市 縣三級菜單

後面學了函數以後可以用函數將重複的代碼封裝成一個函數,然後調用,看起來就會簡潔很多了。

 4.集合(set)

  在集合中,所有的元素都是唯一的,無序的,主要操做:去重,關係測試

print(a.intersection(b))#求交集print(a & b)
求交集(intersection)
print(a.union(b))#求並集print(a | b)
求並集(union)
print(a.difference(b))#求差集,取a裡有,b裡沒有的print(a - b)
求差集(difference)
print(a.symmetric_difference(b))#對稱差集,去除兩邊共有的,剩下的元素的集合print(a ^ b)
對稱差集(symmetric_difference)
print(a.issubset(b))#a是b的子集嗎?返回t/fprint(a.issuperset(b))#a是b的父集嗎?
父集子集
c.add((10))#在c的集合裡添加一個10print(c)
添加(add)
c.update([11,12,13])#在c的集合裡添加多項print(c)
添加多項 (epdate)
c.discard(12)#在集合c裡刪除一個12,如果12沒有在C中,則返回None,不報錯print(c)
刪除(discard)
c.remove(11)#在集合c裡刪除一個11,如果11沒有在c中,則會報錯print(c)
刪除(remove)
print(len(a))#返回的a的長度
len()

 

 

1.檔案儲存體

  (1)檔案

  我們大多數人可能都有相似的經曆:在編寫代碼寫的正起勁時,系統突然藍屏崩潰,重啟電腦後發現之前寫過的代碼全部不見了,這時候就會吐槽這破系統或者後悔之前沒儲存等等。

  在你編寫代碼的時候,作業系統為了更快的做出響應,把當前所有的資料都放在記憶體中,因為記憶體和CPU的傳輸速度要比硬碟和CPU之間的傳輸速度快很多倍,但記憶體有一個天生的不足,就是一旦斷電,沒儲存的資料就沒有了,因此我們在編寫代碼時,應養成一個隨時用快速鍵Ctrl+S儲存資料。

  Windows是以副檔名來指出檔案的類型的,一般比較常見的類型有: .exe,是可執行檔;.txt 是文字檔,還有.ppt ; .jpg ; .avi 等等,這些都被稱為檔案。

 

  (2) 開啟檔案  

  Python中,用open()這個函數來開啟檔案並返迴文件對象:

  open(file , mode = 'r' , buffering = -1 , encoding = None , newline = None , closefd = True , opener = None )

  open()有很多參數,除了第一個參數,後面的都有預設值,我們現在先只看第一個和第二個參數。第一個是傳入檔案名稱,要帶路徑,若不帶路徑,那麼Python就會在當前檔案夾去開啟,第二個參數指定開啟模式:

開啟一個E盤下的 test.txt檔案:

  f = open(E: \\ test.txt )

沒有訊息說明檔案已經被開啟,可以對其進行操作,沒有註明操作,預設是以唯讀模式開啟。

執行個體:

此段代碼,就將“你好啊”寫入了E盤 測試檔案 檔案夾中的a.txt檔案中了。

檔案對象方法:

close()方法用於關閉檔案,檔案的關閉非常重要,在對檔案的操作之後定要記得關閉檔案。

 

seek(offset,from) 方法有兩個參數,表示從from(0代表檔案的起始位置,1代表當前位置,2代表檔案的末尾)位移offset位元組。

檔案的讀取和定位:

  檔案對象自身是可迭代的,可以直接用 for 迭代讀取出來。

檔案的寫入:

  如要寫入檔案,要確保檔案的開啟模式中有‘r’ 或 ‘a’ ,否則會出錯。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.