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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...