零基礎開始學習,最近周邊的同窗們都在學習,我也來試試,嘿嘿,都寫下來,下次不記得了還能來看看~~app
Python做業第一課
1)登錄,三次輸入鎖定,下次不容許登錄
2)設計一個三級菜單,菜單內容可自行定義,任意一級輸入q則退出程序,若是輸入b則返回上一級學習
--以上兩個題目涉及幾個知識點:文檔的讀取,文檔的寫入,列表的操做,循環的使用,字符串的一些操做
首先回顧一下這幾個知識點
a)文檔的讀取,幾個經常使用的
f = open("test.log","w")
這個w是參數,可換成別的參數
w 以寫方式打開,
a 以追加模式打開 (從 EOF 開始, 必要時建立新文件)
r+ 以讀寫模式打開
w+ 以讀寫模式打開 (參見 w )
a+ 以讀寫模式打開 (參見 a )
b)關閉文件
f.close()
c)文件內容操做
f.read()一次性讀取所有全部內容,可調整爲f.read([size]),讀取size個字節的內容
f.readline()讀一行數據
f.readlines()一次性讀取全部內容按行返回
f.truncate(n)從文件開頭截取n個字符,超出的刪除
f.seek(n)跳到指定位置n,f.seek(0)是返回文件開始
e.g.
h = open("menu2.log","r")
for line in h.readlines():
if "2" in line:
print(line)
h.close()
f.write(str)寫文件
e.g. 是全新建立了一個文件,以前的內容會被清空
h = open("menu2.log","w")
h.write("this is the test line")
h.close()
e.g. 在以前的文件後面追加
h = open("menu2.log","a")
h.write("this is the add line")
h.close()
d)列表的操做(list)
name_list = ["a","b","c","d"]
******************************這裏穿插一點東西
咱們能夠經過dir(name_list)查找可執行的命令[注意先後帶_線的沒什麼用,不須要看]
type(name_list)可返回這個變量的類型
************************************************************
切片:(從0開始,負數是從右邊開始,-1是最右邊的值)
name_list[1] > b
name_list[-1] > d
name_list[0:2] > a,b 0:2是指的是01兩個值並不包括2
name_list[0:3:2] > a,c 0:3:2前面是取abc後面那個2則是指隔2個再切
name_list.append("e") > a,b,c,d,e 向列表最後面增長一個元素
name_list.pop() 刪除列表最後的一個元素
name_list.remove("c") 刪除叫c的元素
name_list[1] = "ff" 將第二個元素改成ff
name_list.insert(1,"test") 插入一下新元素,索引爲1
name_list.count("ff") ff的個數
list2 = ["ee","gg"]
name_list.extend(list2) 把list2合併到name_list
name_list.sort() 將列表排序
e)元組的操做(tuple)
元組跟列表很相似,不一樣的是一旦初始化後就不能再調整,沒有append,insert這樣的方法,切片什麼的是同樣取
f)字符串的格式化操做
name = input("name: ").strip() 輸入名字並去除左右的空
print(name) 輸出名字
print(name, + "-" + name )
print("Name:%s:\nAge:%s\nJob:%s" %(name,age,job))
g)循環
for i in range(3): 從0-2this
while a ==0:
while true: -- 無限循環spa
break 跳出循環
continue 繼續
h)條件判斷
if a==0:
elif a==1:
else:設計
基本的知識點就是這些了,如今進入正題了code
1)登錄,三次輸入鎖定,下次不容許登錄
首先準備了兩個文件,一個是用戶及密碼的,一個是存放寫入被鎖的用戶的,名字分別爲:user.log和lockuser.log
user.log中的內容是我事先本身編好放進去的,以下
autumn,autumn123
summer,summer123
angle,angle123
tiffany,tiffany123
fay,fay123
lockuser.log最開始是空的
若是輸入用戶名正確,密碼輸入三次錯誤則寫入到lockuser.log,下次再用此用戶登錄則會提示該用戶被鎖blog
代碼以下:排序
input_name = input("The name is: ").strip() f = open("lockuser.log","r") count = 0 #標識賬戶是否被鎖定 count1 = 0 #標識是否輸對賬戶 #查看文件,看輸入的帳戶是否被鎖定,鎖定則退出程序 for line in f.readlines(): if line.strip() == input_name: print("The account has locked!") count = 1 break f.close() #賬戶未被鎖定的狀況 if count == 0: f1 = open("user.log","r") for line in f1.readlines(): lineword = line.split(',',2) if lineword[0] == input_name: count1 = 1 #賬戶輸入正確,進入三次輸入密碼的機會進行輸入 for i in range(3): input_password = input("The password is: ").strip() if input_password == lineword[1].strip(): print("Welcome to here, have a good nice trip!") break if i == 2: f2 = open("lockuser.log","a") f2.write("\n") f2.write(lineword[0]) f2.close() print("Three times,the account has locked!") if count1 == 0: print("The user account is not exits!")
2)設計一個三級菜單,菜單內容可自行定義,任意一級輸入q則退出程序,若是輸入b則返回上一級
首先一級菜單我是用常量寫SHI在代碼裏的,二級菜單和三級菜單分別放在了兩個文件中,名字分別爲:menu2.log和menu3.log,固然其實一級菜單也能夠寫到文件裏,去讀文件來實現
這段代碼的重點實際上是在幾層循環裏都代入了一個記數的變量來跳出最外層的循環(輸入q時)索引
全部輸入正常的時候程序最後會輸出你選擇過的三個選項如:北京-朝陽-三里屯街道
代碼以下:ip
count1 = 0 count2 = 0 count3 = 0 input_name1 = "" input_name2 = "" input_name3 = "" value1 = "" value2 = "" value3 = "" print("Choose the favorite place!") while count1 == 0: #選擇第一級的菜單 print("**************************************************") print("1 北京 ") print("2 上海 ") print("3 廣州 ") print("4 深圳 ") print("**************************************************") input_name = input("Please chose the fire level: ").strip() if input_name == "1": value1 = "北京" elif input_name == "2": value1 = "上海" elif input_name == "3": value1 = "廣州" elif input_name == "4": value1 = "深圳" #根據第一級菜單的選擇項讀取文件展現第二級菜單,存在則展現二級菜單,提示選擇二級菜單 if input_name in ('1','2','3','4'): f = open("menu2.log","r",encoding= 'utf-8') for line in f.readlines(): if input_name in line: lineword = line.split(',',4) for i in range(len(lineword)): if i > 0 : print(str(i) + " " + lineword[i]) f.close() print("**************************************************") #print(value1) input_name2 = input("Please chose the second level:").strip() input_name1 = input_name + input_name2 #若是輸入b則返回上一級菜單 elif input_name == "b": continue #若是畭q則退出整個程序 elif input_name == "q": print("See you next time!") break #輸入其它字符也退出同時提示無效的輸入 else: print("Valid input! Please try again !") continue while count2 == 0: #根據第一二級菜單展現第三級菜單 #若是輸入的菜單在有效範圍內去讀取第三級的菜單 if input_name2 in ('1','2','3'): value2 = lineword[int(input_name2)] #print(value2) g = open("menu3.log","r",encoding="utf-8") for line in g.readlines(): if input_name1 in line: lineword = line.split(',',4) for i in range(len(lineword)): if i > 0: print(str(i) + " " + lineword[i]) g.close() print("**************************************************") input_name3 = input("Please chose the third level:").strip() #若是輸入b退出這次循環,返回上一級菜單 elif input_name2 == "b": break #若是輸入q則退出整個循環 elif input_name2 == "q": count1 = 1 print("See you next time!") break #輸入其它字符也退出同時提示無效的輸入 else: print("Valid input! Please try again!") break #第三次輸入的判斷 while count3 == 0: if input_name3 == "q": count1 = 1 count2 = 1 print("See you next time!") break elif input_name3 == "b": break elif input_name3 in ('1','2','3'): value3 = lineword[int(input_name3)] print("Your favorite place is :" + value1 + "-" + value2 + "-" + value3 ) count1 = 1 count2 = 1 break else: print("Valid input! Please try again!") break
流程圖沒有畫,下次我會畫一下流程圖,大概就是這麼多東西,明天接着繼續學習,加涅個油啊!!!