051 文件和數據格式化小結

1、數字類型及操做

  • 整數類型的無限範圍及4種進製表示
  • 浮點數類型的近似無限範圍、小尾數及科學計數法
  • +、-、*、/、//、%、**、二元加強賦值操做符
  • abs()、divmod()、pow()、round()、max()、min()
  • int()、float()、complex()
# DayDayUpQ3.py

dayup = 1.0
dayfactor = 0.01
for i in range(365):
    if i % 7 in [6, 0]:
        dayup = dayup * (1 - dayfactor)
    else:
        dayup = dayup * (1 + dayfactor)
print("工做日的力量:{:.2f} ".format(dayup))  # 工做日的力量:4.63
工做日的力量:4.63
def dayUP(df):
    dayup = 1
    for i in range(365):
        if i % 7 in [6, 0]:
            dayup = dayup * (1 - 0.01)
        else:
            dayup = dayup * (1 + df)
    return dayup


dayfactor = 0.01
while dayUP(dayfactor) < 37.78:
    dayfactor += 0.001
print("工做日的努力參數是:{:.3f} ".format(dayfactor))  # 工做日的努力參數是:0.019
工做日的努力參數是:0.019

2、字符串類型及操做

  • 正向遞增序號、反向遞減序號、 <字符串> [M:N:K]
  • +、*、len()、str()、hex()、oct()、ord()、chr()
  • .lower()、.upper()、.split()、.count()、.replace()
  • .center()、.strip()、.join()、.format()格式化
# TextProBarV1.py

import time

scale = 10
print("執行開始".center(scale // 2, "-"))
start = time.perf_counter()
for i in range(scale + 1):
    a = '*' * i
    b = '.' * (scale - i)
    c = (i / scale) * 100
    dur = time.perf_counter() - start
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, dur), end='')
    time.sleep(0.1)
print("\n" + "執行結束".center(scale // 2, '-'))
-執行開始
100%[**********->]1.02s
-執行結束

3、程序的分支結構

  • 單分支 if 二分支 if-else 及緊湊形式
  • 多分支 if-elif-else 及條件之間關係
  • not and or > >= == <= < !=
  • 異常處理 try-except-else-finally
# CalBMIv3.py

height, weight = eval(input("請輸入身高(米)和體重\(公斤)[逗號隔開]: "))
bmi = weight / pow(height, 2)
print("BMI 數值爲:{:.2f}".format(bmi))
who, nat = "", ""
if bmi < 18.5:
    who, nat = "偏瘦", "偏瘦"
elif 18.5 <= bmi < 24:
    who, nat = "正常", "正常"
elif 24 <= bmi < 25:
    who, nat = "正常", "偏胖"
elif 25 <= bmi < 28:
    who, nat = "偏胖", "偏胖"
elif 28 <= bmi < 30:
    who, nat = "偏胖", "肥胖"
else:
    who, nat = "肥胖", "肥胖"
print("BMI 指標爲:國際'{0}', 國內'{1}'".format(who, nat))
請輸入身高(米)和體重\(公斤)[逗號隔開]: 1.8,70
BMI 數值爲:21.60
BMI 指標爲:國際'正常', 國內'正常'

4、程序的循環結構

  • for…in 遍歷循環:計數、字符串、列表、文件…
  • while無限循環
  • continuebreak保留字:退出當前循環層次
  • 循環else的高級用法:與break有關
# CalPiV2.py

from random import random
from time import perf_counter

DARTS = 1000 * 1000
hits = 0.0
start = perf_counter()

for i in range(1, DARTS + 1):
    x, y = random(), random()
    dist = pow(x**2 + y**2, 0.5)
    if dist <= 1.0:
        hits = hits + 1
        
pi = 4 * (hits / DARTS)
print("圓周率值是: {}".format(pi))
print("運行時間是: {:.5f}s".format(perf_counter() - start))
圓周率值是: 3.141364
運行時間是: 0.71023s

5、代碼複用與函數遞歸

  • 模塊化設計:鬆耦合、緊耦合
  • 函數遞歸的2個特徵:基例和鏈條
  • 函數遞歸的實現:函數 + 分支結構

6、集合類型及操做

  • 集合使用{}和set()函數建立
  • 集合間操做:交(&)、並(|)、差(-)、補(^)、比較(>=<)
  • 集合類型方法:.add()、.discard()、.pop()等
  • 集合類型主要應用於:包含關係比較、數據去重

7、序列類型及操做

  • 序列是基類類型,擴展類型包括:字符串、元組和列表
  • 元組用()和tuple()建立,列表用[]和set()建立
  • 元組操做與序列操做基本相同
  • 列表操做在序列操做基礎上,增長了更多的靈活性

8、字典類型及操做

  • 映射關係採用鍵值對錶達
  • 字典類型使用{}和dict()建立,鍵值對之間用:分隔
  • d[key] 方式既能夠索引,也能夠賦值
  • 字典類型有一批操做方法和函數,最重要的是.get()

8.1 文件的使用

  • 文件的使用方式:打開-操做-關閉
  • 文本文件&二進制文件,open( , )和.close()
  • 文件內容的讀取:.read() .readline() .readlines()
  • 數據的文件寫入:.write() .writelines() .seek()

8.2 一維數據的格式化和處理

  • 數據的維度:一維、二維、多維、高維
  • 一維數據的表示:列表類型(有序)和集合類型(無序)
  • 一維數據的存儲:空格分隔、逗號分隔、特殊符號分隔
  • 一維數據的處理:字符串方法 .split() 和 .join()

8.3 二維數據的格式化和處理

  • 二維數據的表示:列表類型,其中每一個元素也是一個列表
  • CSV格式:逗號分隔表示一維,按行分隔表示二維
  • 二維數據的處理:for循環+.split()和.join()
相關文章
相關標籤/搜索