python基礎(3)---流程式控制制

来源:http://www.cnblogs.com/caoj/archive/2017/11/19/7862154.html
-Advertisement-
Play Games

流程式控制制 與C語言不通的是python的流程式控制制代碼塊不是用{}花括弧表示的,而是強制縮進來控制的;而且縮進必須一致,官方推薦是使用4個空格,不建議使用tab(製表符)做縮進,一是不同的系統tab所占寬度不一致,會比較亂,二是由於python要求同級縮進必須保持一致,所以有些時候看上去是對齊l,但是 ...


  流程式控制制

  與C語言不通的是python的流程式控制制代碼塊不是用{}花括弧表示的,而是強制縮進來控制的;而且縮進必須一致,官方推薦是使用4個空格,不建議使用tab(製表符)做縮進,一是不同的系統tab所占寬度不一致,會比較亂,二是由於python要求同級縮進必須保持一致,所以有些時候看上去是對齊l,但是有的是空格有的是tab鍵,使得不容易排錯,另外條件判斷的語句不需要使用()括起來,但是條件語句後面使用:

  1.條件判斷--if語句

  條件判斷就是執行某個代碼段之前先進行判斷,如果符合再執行某個代碼塊

  比如,輸入年齡,如果年齡小於18歲,就告訴他too yong toosimple!

age = 17
if age <18;
    print('too yong too simple')    #如果判斷返回的True就執行這段代碼
View Code

  也可以在if後面添加一個else語句,告訴Python解釋器,如果不符合執行條件(返回False)的代碼段,例如,如果年齡不小於18歲,就告訴他do you marry me?

age = 19
if age < 18:
    print('too young too simple')
else:
    print('do you marry me?')    #如果判斷返回的False就執行這段代碼
View Code

  由於Python沒有case語句,所以條件分支可以通過else if這樣嵌套,為了技術那好嵌套可以使用簡寫elif,例如再加一個條件如果大於30歲,告訴他too old!

age = 33
if age < 18:
    print('too young too simple')
elif age > 32:
    print('too old!')
else:
    print('do you marry me?')
View Code

  註意:保持縮進一直,不要忘了冒號:

 

  應用示例:

  現在有這麼一個需求,設計一個猜幸運數字的小游戲,通過控制台輸入的方式讓用戶猜你的幸運數字lucky number,如果用戶輸入的比你的幸運數字大就提示再小一點,反之如果輸入的比你幸運數字小澤提示再大一點,如猜中則提示Bingo。

'''
@author:xiaocao

Description:猜lucky number
            1、如果猜的數字比lucky number大,提示小一點
            2、如果猜的數字比lucky number小,提示說大一點
            3、如果相等,提示Bingo
'''
if __name__ == '__main__':
    #定義lucky number
    lucky_num = 5
    #獲取用戶輸入的猜lucky number
    lucky_num_input = int(input("請輸入lucky number(1-10):"))
    #判斷用戶輸入的猜lucky number
    if lucky_num_input > lucky_num:
        #輸入的比lucky number大
        print("再小一點")
    elif lucky_num_input < lucky_num:
        #輸入的比lucky number小
        print("再大一點")
    else:
        #正確
        print("Bingo")
View Code

 

 

  2.while迴圈:只要符合條件(條件語句返回的是True)則迴圈執行某個代碼段

  比如我們的程式有著讓用戶輸入東西併進行處理(例如菜單程式),如果用戶輸入的q則退出程式

choose = ''
while choose != 'q':
    choose = input('請輸入你要點的菜,輸入q退出')

  迴圈中的常見關鍵字break、continue、else:

  在迴圈中關鍵字break表示退出迴圈,continue表示退出當前迴圈繼續下一輪的迴圈,continue後面的語句將不執行,else和if中的else表示條件不滿足時(也就是正常退出迴圈不是用break強制退出)執行的代碼段

  應用示例,還是剛纔那個猜幸運數字的游戲,之前只是輸入一次程式就退出了,如果繼續猜需要重新運行程式,這很不友好,我們現在讓用戶運行一次可以猜3次,如果3次猜不對再退出程式

'''
@author:xiaocao

Description:猜lucky number
            1、如果猜的數字比lucky number大,提示小一點
            2、如果猜的數字比lucky number小,提示說大一點
            3、如果相等,提示Bingo
            4、沒有猜對繼續迴圈直到猜對
            5、限制三次,如果沒有猜對提示三次沒有猜對,游戲結束
'''

if __name__ == '__main__':
    #定義luncky number
    lucky_num = 5
    #定義guess_count,計算猜的次數
    guess_count = 0
    while guess_count < 3:
        #獲取用戶輸入的猜lucky number
        lucky_num_input= int(input("請輸入lucky number:"))
        #判斷用戶輸入的猜lucky number
        if lucky_num_input > lucky_num:
            #輸入的比lucky number大
            print("再小一點")
        elif lucky_num_input < lucky_num:
            #輸入的比lucky number小
            print("再大一點")
        else:
            #輸入的和lucky number相等
            print("Bingo")
            #退出迴圈
            break
        #次數加1
        guess_count += 1
    else:
        #猜了三次迴圈正常退出
        print("三次沒有猜對,游戲結束!")
View Code

  3.for迴圈

  Python中的for迴圈常常使用in序列化對象(如列表、元組等)進行遍歷,這裡我們還沒講到列表元組等,我們可以用字元串(字元串也是序列化對象,可以遍歷每個元素,也就是組成字元串的每一個字元),假設我們有個一個字元串‘ABC’我們要把字元串中的每一個字元分別輸出,可以這樣做:

for i in 'ABC':
    print(i)

  如果我們需要像C語言for(i=1;i<3;i++),可以藉助內置方法range(n),就是生成一個(0,1,2...n-1)的序列,例如我們要指定迴圈多少遍(列印0-9的數字)可以這麼做:

for i in range(10):
    print(i)

  Python的for迴圈也可以使用break、continue和else,使用方法和while迴圈一樣

  應用示例,我們把猜幸運數字的游戲改成for迴圈實現

'''
@author:xiaocao
for迴圈實現
Description:猜lucky number
            1、如果猜的數字比lucky number大,提示小一點
            2、如果猜的數字比lucky number小,提示說大一點
            3、如果相等,提示Bingo
            4、沒有猜對繼續迴圈直到猜對
            5、限制三次,如果沒有猜對提示三次沒有猜對,游戲結束
'''
if __name__ == '__main__':
    #定義lucky number
    lucky_num = 5
    for guess_count in range(3):
        #獲取用戶輸入的lucky number
        lucky_num_input = int(input("請輸入lucky number:"))
        #判斷用戶輸入的猜lucky number
        if lucky_num_input > lucky_num:
            #輸入的比lucky number大
            print("再小一點")
        elif lucky_num_input < lucky_num:
            #輸入的比lucky number小
            print("再大一點")
        else:
            #輸入的和lucky number相等
            print("Binge")
            #退出迴圈
            break
    else:
        #猜了三次迴圈正常退出
        print("三次沒有猜對,游戲結束!")
View Code

 

  總結:while和for迴圈雖然都可以實現迴圈,但是他們各自有各自的特點,根據實際需要選擇,例如不限定迴圈的次數只要符合條件就退出迴圈使用while迴圈就比較方便,如果限定迴圈次數或者要遍歷序列對象使用for迴圈就比較方便

 


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

-Advertisement-
Play Games
更多相關文章
  • [TOC] PS: 本地預覽目錄OK,但是博客園貌似不支持,那就只能這樣了。 前言(可以不看) 最開始只是想寫一篇博文,準備使用markdown,感覺很流行(github、簡書……很多都支持),而且渲染出來很好看,一直很想學,沒有合適的機會,結果拖到了現在。比起什麼python、C之類的編程語言,m ...
  • 發佈-訂閱消息模式 一、訂閱雜誌 我們很多人都訂過雜誌,其過程很簡單。只要告訴郵局我們所要訂的雜誌名、投遞的地址,付了錢就OK。出版社定期會將出版的雜誌交給郵局,郵局會根據訂閱的列表,將雜誌送達消費者手中。這樣我們就可以看到每一期精彩的雜誌了。 發佈-訂閱消息模式 一、訂閱雜誌 我們很多人都訂過雜誌 ...
  • 1. 學習了一下 AI 五子棋,順手改作 19 路的棋盤,便於圍棋通用。render.py 主要修改如下: 2. 發現 pygame 還不錯,便從網上搜索到《Beginning Game Development With Python And Pygame》,其中螞蟻游戲的 AI 表現甚好,主要代碼 ...
  • 前言 本篇將結合JDK1.6的TreeMap源碼,來一起探索紅-黑樹的奧秘。紅黑樹是解決二叉搜索樹的非平衡問題。 當插入(或者刪除)一個新節點時,為了使樹保持平衡,必須遵循一定的規則,這個規則就是紅-黑規則: 1) 每個節點不是紅色的就是黑色的 2) 根總是黑色的 3) 如果節點是紅色的,則它的子節 ...
  • 本文主要給大家分享使用matlab編寫代碼,完成課程設計、畢業設計或者研究項目時,matlab調試程式的技巧和方法。 快速完成一個項目,最簡單的方法就是利用前人的開源代碼,然後根據自己項目的具體需求和參數,對已有代碼進行調試,並增加或刪減部分功能,最終實現自己項目的全部功能。所謂“站在前人的肩膀上... ...
  • Joinpoint 連接點 Pointcut 切入點 Advice 通知/增強 舉例: Aspact 切麵 比如給add()增加日誌功能的過程即稱為切麵 還有幾個術語知道就可以,不常用 Introduction (引入)使用動態的方法在原有屬性基礎上 添加新屬性的操作 ...
  • 前言: 之前寫Java服務端處理POST請求時遇到了請求體轉換成字元流所用編碼來源的疑惑,在doPost方法里通過request.getReader()獲取的BufferedReader對象內部的 Reader用的是什麼編碼將位元組流轉換成字元流的呢?又是在哪裡設置呢和什麼時候生效的呢?通過查找資料, ...
  • 作者:NiceCui 本文謝絕轉載,如需轉載需徵得作者本人同意,謝謝。 本文鏈接:http://www.cnblogs.com/NiceCui/p/7862377.html 郵箱:[email protected] 日期:2017-11-19 Python學習二:詞典基礎詳解 (學習不要求多,小計劃 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...