Python day1_17-9-3

来源:http://www.cnblogs.com/tiancc/archive/2017/09/09/7489749.html
-Advertisement-
Play Games

一、應用練習 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                                 
                                                     
代碼

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一:翻頁 ctrl+u向上翻半頁 ctrl+f向上翻一頁 ctrl+d 向下翻半頁 ctrl+b 向下翻一頁 二:移動游標指令 0: 游標移至當前行首 $: 游標移至當前行尾 三:常用插入、刪除指令 i:在當前游標前插入,游標後文本向後移 dd: 刪除游標所在的行 yy:複製當前行正行內容到剪切板 ...
  • 前言:轉載 陳浩一個從事安全運維向的前輩文章。寫的很好。人非常nice,遇到了問題,qq上很快就回覆了我。 大道三千 入門最難,凡事入了行,也就什麼都好說了,好的自然不斷努力奮鬥修行,不好的自然很快就被淘汰。恭謹勤勉,時不我待~ it自動化運維就是要很方便的運用各種工具進行管理維護,有效的實施伺服器 ...
  • 蘋果筆記本的確高大上,外觀設計,系統優化好,封閉系統,幾乎沒有病毒風險。尤其看愛奇藝什麼的還沒廣告。咳咳,跑題了 然而對絕大多數用戶來說還是有裝雙系統的需求的,不習慣mac os系統也好,工作需要使用win下的軟體也好, 打游戲需要也好。 進入正題,在給最近版的蘋果筆記本裝Windows系統的時候可 ...
  • 【Windows 10周年更新正式版】 2016年8月2日發佈,開發代號Redstone 1(RS1),系統版本號Version 1607,編譯版本號Build 14393。 自己裝系統需要下載win10 iso鏡像,版本號1607,由於新款蘋果macbook pro系統的要求或者個人執念要找最新版 ...
  • 1.1 第1題 創建一個目錄 /data [root@oldboyedu-40 ~]# mkdir /data [root@oldboyedu-40 ~]# mkdir /data 查看 [root@oldboyedu-40 ~]# #查看目錄裡面的內容 [root@oldboyedu-40 ~]# ...
  • 前言:網路路由不管是平常在家裡,還是在公司中,都是必需配置的,所以還是非常重要的,今天小編就給大家做個配置網路路由配置的小實驗,僅供大家參考。 一、首先,來簡單介紹一下網路路由。 1. 網路路由:將網路連接起來並將網路信息導向其他網路上,通常網路信息全自動尋找多個路由器,並選擇效率最高的路由。 網路 ...
  • Linux基礎知識與基礎命令 系統目錄 Linux只有一個根目錄,沒有盤符的概念,文件目錄是一個倒立的樹形結構。 常用的目錄功能 bin 與程式相關的文件 boot 與系統啟動相關 cdrom 與Linux的外設如光碟相關 dev 與設備相關 etc 與相關幾乎所有伺服器以及軟體的配置相關文件 li ...
  • 第一部分Mem行: total 記憶體總數: 1002M used 已經使用的記憶體數: 769M free 空閑的記憶體數: 232M shared 當前已經廢棄不用,總是0 buffers Buffer 緩存記憶體數: 62M cached Page 緩存記憶體數:421M 關係:total(1002M) ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...