一、應用練習 1.需求練習 編寫登陸介面 要求: 讓用戶輸入用戶名密碼 認證成功後顯示歡迎信息 輸錯三次後退出程式 #!/usr/bin/env python #coding:utf-8 time=0 data={ 'zhangsan':{'ps':'zs123'}, 'lisi':{'ps':'l ...
一、應用練習
1.需求練習
編寫登陸介面
要求:
- 讓用戶輸入用戶名密碼
- 認證成功後顯示歡迎信息
- 輸錯三次後退出程式
#!/usr/bin/env python #coding:utf-8 time=0 data={ 'zhangsan':{'ps':'zs123'}, 'lisi':{'ps':'ls123'}, } while time < 3: name = input('請輸入姓名:') if not name in data: print('無此用戶') continue password = input('請輸入您的密碼:') if password == data[name]['ps']: print('Log in successfully') else: print('用戶名或密碼錯誤') time+=1 else: print('超過最大次數')代碼
升級需求
- 可以支持多個用戶登錄
- 用戶3次認證失敗後,退出程式,再次啟動程式嘗試登錄時,還是鎖定狀態
#存儲用戶 data={ 'zhangsan':{'ps':'zs123'}, 'lisi':{'ps':'ls123'} } #打開同目錄下名字為user的文件(只讀), #把讀到的內容給變數 #正查關閉文件 us1=open('user','r') name=us1.read() us1.close() time=0 while time < 3: user=input('your name >>> ') if not user:continue if user in name : print('The account!') break #輸入的名字等於在文件里讀取到的內容則告訴用戶為鎖定狀態,並推出迴圈。 elif not user in data: print('Without this user\n') continue #如果輸入的名字不等於已知的用戶名,告訴用戶後跳出本次迴圈。 else: passwod = input('password >>> ') if passwod == data[user]['ps']: print('Log in successfully') exit() #如果密碼對的話,正常登陸後退出腳本 else: print('User name or password error!\n') time+=1 #密碼輸入錯誤,告訴用戶並重新輸入用戶名密碼,紀錄次數 else: print('超過最大次數,請聯繫管理員') record=open('user','a') record.write('%s\n'%user) record.close() exit() #達到三次後告訴用戶並打開user文件追加已經輸入3次的用戶名後正常關閉文件。代碼
流程圖如下:
修改上面代碼的BUG
data={ 'zhangsan':{'ps':'zs123','count':0}, 'lisi':{'ps':'ls123','count':0} } #打開同目錄下名字為user的文件(只讀), #把讀到的內容給變數 #正查關閉文件 us1=open('user','r') name=us1.read() us1.close() time=0 while time < 6: user=input('your name >>> ') if not user: continue if user in name : print('The account!') break #輸入的名字等於在文件里讀取到的內容則告訴用戶為鎖定狀態,並推出迴圈。 elif not user in data: print('Without this user\n') continue #如果輸入的名字不等於已知的用戶名,告訴用戶後跳出本次迴圈。 else: passwod = input('your password >>> ') if passwod == data[user]['ps']: print('Log in successfully') exit() #如果密碼對的話,正常登陸後退出腳本 else: data[user]['count']+=1 print('User name or password error!\n') if data[user]['count']==3: print('超過最大次數,請聯繫管理員') record = open('user', 'a') record.write('%s\t' % user) record.close() exit() time+=1代碼
2.日常練習
簡述編譯性與解釋型語言的區別,且分別列出你知道的那些語言屬於編譯型,哪些屬於解釋型?
編譯型語言為一次行讀入所有內容,一次性執行所有內容 優點:執行速度快,等同條件下對系統要求較低 缺點:不方便代碼測試、排錯,調試不方便 編譯型語言包括:C/C++、Pascal/Object Pascal(Delphi) 解釋型語言為逐行翻譯行,一行一行執行 優點:方便代碼的調試,及時發現問題及時解決 缺點:執行速度相對編譯性語言慢 解釋型語言包括:python、Java、C#、JavaScript、VBScript、Perl、Ruby、MATLAB偏見
執行 Python 腳本的兩種方式是什麼?
shell模式運行適合腳本中某段代碼的調試;利用解釋器運行,python的功能最全,官方推薦。
Pyhton 單行註釋和多行註釋分別用什麼?
單行註釋用"#",多行註釋用三引號"'''"或四引號"''''"
布爾值分別有什麼?
True和False,真或假
聲明變數註意事項有那些?
1、變數名職能包含字母、數字和下劃線。變數名可以字母或下劃線打頭,但不能以數字打頭。例:1_agent是錯誤的方式,應該寫為 agent_1。 2、變數名不能包含空格,但可使用下劃線來分割其中的單詞。例:installed apps 這樣會引起錯誤,正確的方式為installed_apps。 3、Python關鍵字喝函數名不能用做變數,即不可以使用Python保留用於特殊用途的單詞。 4、慎用小寫字母l喝大寫字母O,可能被人錯看成數字1和0。 5、變數名應既簡短又具有描述性。註意事項
如何查看變數在記憶體中的地址?
print(id(x))
3.代碼練習
實現用戶輸入用戶名和密碼,當用戶名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗!
name='seven' ps=123 user=input('輸入用戶名: ') password=input('輸入密碼: ') #print(type(ps),type(password)) if user==name and int(password)==ps: print('登陸成功') else: print('登陸失敗')代碼
實現用戶輸入用戶名和密碼,當用戶名為 seven 且 密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重覆輸入三次。
name='seven' ps=123 time=0 while time < 3: user = input('輸入用戶名: ') password = input('輸入密碼: ') if user==name and int(password)==ps: print('登陸成功') else: print('登陸失敗') time+=1代碼
實現用戶輸入用戶名和密碼,當用戶名為 seven 或 alex 且 密碼為 123 時,顯示登陸成功,否則登陸失敗,失敗時允許重覆輸入三次。
data={ 'seven':{'ps':'123'}, 'alex':{'ps':'123'} } time=0 while time < 3: user = input('輸入用戶名: ') password= input('輸入密碼: ') if user in data and password==data[user]['ps']: print('登陸成功') else: print('登陸失敗') time+=1代碼
使用while迴圈實現輸出2-3+4-5+6...+100 的和。
i=2 n=0 while i <=100: if i%2==0: n+=i else: n-=i i+=1 print(n)代碼 while實現
使用 while 迴圈實現輸出 1,2,3,4,5, 7,8,9, 11,12;使用 while 迴圈實現輸出 1-100 內的所有奇數;使用 while 迴圈實現輸出 1-100 內的所有偶數。
#while迴圈固定數 i=1 while i<13: if i==6 or i==10: i+=1 continue print(i) i+=1 #while迴圈奇數 i=1 while i<=100: if i%2==1: print(i) i+=1 #while迴圈偶數 i=1 while i<=100: if i%2==0: print(i) i+=1代碼
現有如下兩個變數,請簡述 n1 和 n2 是什麼關係?
n1 = 123456
n2 = n1
共用一個記憶體(id號相等)的兩個變數 print(id(n1),id(n2))
二、格式化輸出練習
要求:
練習:用戶輸入姓名、年齡、工作、愛好 ,然後列印成以下格式 ------------ info of Egon ----------- Name : Egon Age : 22 Sex : male Job : Teacher ------------- end -----------------練習1
代碼:
#!/usr/bin/env python
# coding:utf-8
name=input('your name >>> ') age=input('your age >>> ') sex=input('your sex >>> ') job=input('your job >>> ') print('------------ info of Egon -----------\n' 'name\t: %s\n' 'age \t: %s\n' 'sex \t: %s\n' 'job \t: %s\n' '------------- end -----------------' % (name, age, sex, job))
效果:
三、while迴圈練習
3.1 while迴圈嵌套等練習:
#要求如下 1 迴圈驗證用戶輸入的用戶名與密碼 2 認證通過後,運行用戶重覆執行命令 3 當用戶輸入命令為quit時,則退出整個程式練習1
代碼:
#!/usr/bin/env python
# coding:utf-8
data={
'zhangsan':{'ps':'zs123'},
'lisi':{'ps':'ls123'}
}
cond=True
while cond:
name=input('your name >>> ')
if not name in data:
print('Incorrect account entry!\n')
continue
passwod=input('your password >>> ')
if passwod==data[name]['ps']:
print('Log in successfully\n')
while cond:
cmd=input('shell # ')
if not cmd:continue
if cmd=='quit':
cond=False
continue
else:
print(cmd)
else:
print('User name or password error!\n')
效果:
3.2 迴圈練習
3.2.1、使用while迴圈輸出1 2 3 4 5 6 8 9 10 。
num=1 while num < 11: if num == 7: num+=1 continue print(num) num+=1代碼
3.2.2、求1-100的所有數的和。
a=1 i=0 while a <= 100 : i+=a # i=i+a a+=1 print(i)代碼
3.2.3、輸出 1-100 內的所有奇數;輸出 1-100 內的所有偶數。
#奇數 num=0 while num < 101: if num % 2 == 1: print(num) num+=1 # 偶數 num=0 while num < 101: if num % 2 == 0: print(num) num+=1代碼
3.2.4、求1-2+3-4+5 ... 99的所有數的和。
#while迴圈 num=0 i=0 while i < 100: if i%2==0: num-=i else: num+=i i+=1 print(num) #For num=0 for i in range(100): if i % 2 == 0: num = num - i else: num = num + i print(num) ### rslt=0 for n in range(1,100): rslt += n*(-1,1)[n&1] print(rslt)代碼
3.2.5、用戶登陸(三次機會重試)。
data={ 'zhangsan':{'ps':'zs123'}, 'lisi':{'ps':'ls123'} } time=0 while time<3: name = input('your name >>> ') if not name in data: print('沒有此用戶\n') continue passwd = input('your password >>> if passwd == data[name]['ps']: print('登陸成功!') exit() else: print('用戶名或密碼錯誤!\n') time+=1 else: print('超出最大登陸次數')代碼
3.2.6、猜年齡游戲
要求:
允許用戶最多嘗試3次,3次都沒猜對的話,就直接退出,如果猜對了,列印恭喜信息並退出。
age=36 i=0 while i<3: user_age=input('Please guess the age > ') #print(type(age),type(user_age)) if user_age == str(age): print("That's right. That's good!") exit() else: print('Guess wrong!') i+=1代碼
升級版本要求:
允許用戶最多嘗試3次
每嘗試3次後,如果還沒猜對,就問用戶是否還想繼續玩,如果回答Y或y, 就繼續讓其猜3次,以此往複,如果回答N或n,就退出程式。
如何猜對了,就直接退出。
age=36 i=0 while i<3: user_age=input('Please guess the age > ') #print(type(age),type(user_age)) if user_age == str(age): print("That's right. That's good!") exit() else: print('Guess wrong!') i+=1 if i == 3: con=input('是否繼續?繼續輸入"y"') if con ==('y'or'Y'): i = 0 continue else: print('堅持才會勝利,拜~') continue代碼