iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0
自我挑戰組

用Line聊天機器人串起多媒體系統系列 第 19

Day 19 : 【RE : 從零開始的異世界Python】- 2

這篇整理 Python 的格式化輸出、輸入及流程控制的做法,依樣有 Colab 的支援讓您可以實際練習,我們就繼續介紹吧!

格式化輸出

認識print()函式

  • print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
    • *objects: 接受輸出的內容,多筆資料以逗號隔開。
    • sep: 間隔,預設一個空白。
    • end: 預設為\n即換行。
    • file: 預設為螢幕輸出。
    • flush: 預設為布清除資料緩衝區。
  • 各參數不指定修改即為預設值。
  • 未來各種函數詳細內容可參閱文檔,或使用help(print)?print查詢。

以類似C語言的printf語法輸出

  • 格式碼

    語法 說明

    %s|輸出文字
    %f|輸出浮點數
    %d|輸出十進位整數
    %e、%E|以科學記號輸出數值
    %o|以八進位整數方式輸出數值
    %x、%X|以十六進位整數方式輸出數值
    %c|以字元方式輸出
    %r|以 repr() 函數輸出文字
    %%|輸出 % 百分比符號

  • 新八戰鬥力只比一般人高2昆布

    fp = {"新八":362, "一般人":360}
    fp1 = fp["新八"] - fp["一般人"]
    fp2 = (fp["新八"] -fp["一般人"]) / fp["一般人"] *100
    print("志村新八比一般人強%d個昆布,戰鬥力比一般人高%.2f%%個昆布" % (fp1, fp2))
    
  • 空間與對齊

    • 控制輸出排版結果,以及控制小數點顯示位數
    • %s%s中間加入格式語法表示
    目的 表示

    以m格輸出|"%ms" % _|
    數值空白前補0|"%0md" % _|
    以m格靠左對齊|"%-ms" % _|
    限制輸出字串長度上限|"%.ms" % _|
    浮點數設定總寬度m及小數位數n|"%m.nf" % _|
    強迫顯示正負號|"%+d" % _|
    負號顯示、正數留空|"% d" % _|

format 語法輸出

  • format會自動處理各種類型的資料。

  • 如有2個以上的格式化輸出內容:

    print("志村新八比一般人強{}個昆布,戰鬥力比一般人高{:.2}%個昆布".format(fp1,fp2))
    
  • 空間與對齊

    目的 表示

    以m格輸出|"{:m}".format()|
    數值空白前補0|"{:0m}".format()|
    靠右對齊|"{:>m}".format()|
    靠左對齊|"{:<m}".format()|
    置中對齊|"{:^m}".format()|
    限制輸出字串長度上限|"{:.m}".format()|
    浮點數設定總寬度m及小數位數n|"{:m.nf}".format()|
    強迫顯示正負號|"{:+m}".format()|
    負號顯示、正數留空|"{: m}".format()|

  • 輸出至檔案

    • print()預設輸出為螢幕sys.stdout,可以導向輸出為檔案。
    • 開啟檔案open(file,mode="r")

目前最常用的-加上格式碼 f

  • Python 的格式化輸出自3.6版本起支援以 f 作為字串開頭的格式化代碼,更為簡潔易用。
  • 如有2個以上的格式化輸出內容:
    print(f"志村新八比一般人強{ fp1 }個昆布,戰鬥力比一般人高{ fp2 }%個昆布")
    
  • 3種輸出口味一次比較:
    name = "巧虎"
    age = 3
    
    print("大家好我是%s,我今年%s歲!"% (name, age))
    print("大家好我是{},我今年{}歲!".format(name, age))
    print(f"大家好我是{name},我今年{age}歲!")
    print(f"{name}好乖,叔叔帶你喝養樂多!")
    

輸入資料 input()

  • a = input("prompt:")
    • 輸入結果儲存於變數a,型別為字串 str
    • prompt為輸入提示
    email = '我的email帳號:'+input("請輸入您的email: ")
    print(email)
    
  • 來個BMI計算練習:
    • BMI = 體重(公斤) / 身高平方(平方公尺),你會發現身高單位是公尺不是我們熟悉的30公分,然後 input() 的結果是 str,透過 float() 轉型才能計算喔。
    #BMI = w/h**2
    h = input("您的身高(cm): ")
    w = input("您的體重(kg): ")
    BMI = float(w)/(float(h)/100)**2
    print(f"您的輸入的身高{h}cm,體重為{w}公斤,BMI為{BMI}。")
    

控制描述

條件判斷 if, elif, else

  • 用1個 if 表示:
    if True:
      print("YES")
    
  • if else 表示:
    鐵人幫第n日 = 19
    鐵人幫文章篇數 = 19 
    if 鐵人幫文章篇數 - 鐵人幫文章篇數 <= 0:
        print("斷炊趕稿")
    else: 
        print("不用趕稿我就讚!")   
    
  • if elif else 表示:
    鐵人幫第n日 = 19
    鐵人幫文章篇數 = 19 
    if 鐵人幫文章篇數 - 鐵人幫文章篇數 == 0:
        print("快趕稿,別富奸阿!!!!")
    elif 鐵人幫文章篇數 - 鐵人幫文章篇數 < 0:
        print("斷更! 挑戰失敗")
    else: 
        print("持續更新我就讚!")
    

迴圈

  • for 迴圈:
    for x in range(10):
      print (x, "is less than 10")
    
  • while迴圈
    x=0                           #設定初始值
    while x < 10:                  #while True條件判斷
      print (x, "is less than 10") #執行陳述
      x += 1                      #初值增減
    
  • continuebreak :
    for x in range(10):
      if x==3:
        continue # 直接開始執行下個迴圈
      if x==8:    
        break # 直接跳出迴圈
      print (x)
    #輸出 0 1 2 4 5 6 7
    

例外陳述

  • 例外處理 (exception handling) 是利用 try 、 except 、 finally 及 else
  • 所謂例外 (exception) 是指已知有可能發生的錯誤 (error) ,像是開啟檔案,檔案卻不存在,或除數為 0 等等的情況。
  • try: 所有可能發生例外的程式碼都要放在try來嘗試是否有錯誤。
  • except: 後空一格接例外類別 (class) ,底下程式區塊做相對應的例外處理。
  • else: 假設沒有例外發生的處理。
  • finally 是例外處理結束後,無論如何都會執行的部分(可有可無)。
    • 請參考以下兩個程式,一個是try結果不成立,執行except:finally:,不執行else::
    • try 結果成立,執行 else:finally:,不執行 except:

小結

我們將 Python 基本語法的整理告一段落,其實挺燒腦的,希望對您有更多的認識與幫助,記得按讚訂閱開啟小鈴鐺,我們下篇見!


上一篇
Day 18 : 【RE : 從零開始的異世界Python】- 1
下一篇
Day 20 : 熟悉你的開發工作 - Python 函數 / 模組建立
系列文
用Line聊天機器人串起多媒體系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言