登錄注冊(三次機會)
name = input('請注冊姓名:') password = input('請注冊密碼:') with open('log',mode='w',encoding='utf-8') as f: f.write('{}\n{}'.format(name,password))#格式化輸出,兩個參數寫進一行,write不允許兩個變量 print('注冊成功') lis = [] count = 3 while count > 0: count -= 1 with open('log', mode='r+', encoding='utf-8') as f1: for i in f1: lis.append(i)#讀取內容寫入到列表中 name1 = input('請輸入登錄用戶名:') if name1 == lis[0].strip():#strip()可以去除\n,\t password1 = input('請輸入登錄密碼:') if password1 == lis[1]: print('\n登錄成功!') break else: print('密碼錯誤') print('您還有%d次機會'%(count)) if count == 0: chance = input('機會已用完,是否還想繼續?Y(case-sensitive)') if chance.upper() == 'Y': count = 3 continue else: print('用戶名錯誤,請重新輸入') print('您還有%d次機會'%(count)) if count == 0: chance = input('機會已用完,是否還想繼續?Y(case-sensitive)') if chance.upper() == 'Y': count = 3 continue else: print('\n明天再來吧')

改變文件數據類型
# 1. 文件a.txt內容:每一行內容分別為商品名字,價錢,個數。 # apple 10 3 # tesla 100000 1 # mac 3000 2 # lenovo 30000 3 # chicken 10 3 # 通過代碼,將其構建成這種數據類型:[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 並計算出總價錢。

一、(問題少年)
with open('a.txt','r+',encoding='utf-8') as f: li = [] li1 = [] for line in f: li.append(line.split()) print(li) # dic = {}#問題在這里,dic只有一個地址(自己遇到的問題 1),最后字典里只有一組值,列表里添加的全都是這一組,內存指向問題 j = 0 sum = 0 while j < len(li): dic = {}#解決問題:每次循環都重新建一個新的dic dic['name'] = li[j][0] dic['price'] = li[j][1] dic['amount'] = li[j][2] print(dic) li1.append(dic)#直接添加字典,必須每次循環都要重新定義字典,另開內存地址,不然一直指向同一個地址,列表添加多少次值都是字典最后更新的數據 # li1.append({'name':li[j][0],'price':li[j][1],'amount':li[j][2]}) cost = int(li[j][1]) * int(li[j][2])#不轉成int 不能進行運算str # cost = int(dic['price']) * int(dic['amount'])#不轉成int 不能進行運算str(自己遇到的問題2) print(cost) sum += cost j = j+1 print(li1) print('總的價格為:',sum)#+加號拼接提示int 和 str不能拼接,所以用逗號。(自己遇到的問題3)

二、(新的角度)
with open('a.txt','r+',encoding='utf-8') as f: li = [] li1 = [] for line in f: li.append(line.split()) print(li) # dic = {} j = 0 sum = 0 while j < len(li): dic = {}#看到沒?放這里啦,關注點一 dic['name'] = li[j][0] dic['price'] = li[j][1] dic['amount'] = li[j][2] print(dic) # li1.append(dic) li1.append({'name':li[j][0],'price':li[j][1],'amount':li[j][2]})#從列表添加value,關注點二 # cost = int(li[j][1]) * int(li[j][2])#不轉成int 不能進行運算str cost = int(dic['price']) * int(dic['amount'])#不轉成int 不能進行運算str print(cost) sum += cost j = j+1 print(li1) print('總的價格為:',sum)#+加號拼接提示int 和 str不能拼接,所以用逗號。

修改文件內容
有如下文件:
-------
This is a message
tony是一個名副其實的iron-man。
tony其實是個男人。
誰說tony是壞人?
你們真逗,tony再厲害,也掩飾不住資深富人的氣質。
----------
將文件中所有的tony都替換成大寫的IM。
with open('file','r+',encoding='utf-8') as f1,\ open('file.bak','a',encoding='utf-8') as f2: for line in f1: if 'tony' in line: line = line.replace('tony','IM') f2.write(line) import os os.remove('file') os.rename('file.bak','file')

pass
