1. 程式人生 > >Python語言程式設計(MOOC崇天)第三章基本資料型別學習筆記(天天向上的力量+文字進度條)

Python語言程式設計(MOOC崇天)第三章基本資料型別學習筆記(天天向上的力量+文字進度條)

  • 回顧:

第一章

第二章

  • 本週內容:基本資料型別

 

 

  • 3.1數字型別及操作

整數型別:

浮點數

浮點數計算存在不確定尾數的原因.......

 

 

浮點數可以採用科學計數法表示

 

複數型別:

 

傅立葉變換用的多.....這裡沒有提到了。

 數值運算操作符

 

 

 

數值運算函式

 

 

  •  天天向上的力量
#daydayup
dayup = pow(1.001, 365)
daydown = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))

百分之1的力量

#daydayup
# 變數的好處
dayfactor = 0.005
dayup = pow(1+ dayfactor, 365)
daydown = pow(1- dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))

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))

餘數為0和6是週六和周天,可以這樣算來得到。。。工作日的力量 

def dayup():
    dayfactor = 0.01
    day = pow(1+dayfactor, 365)
    return round(day, 2)
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
#
da = 0.01
c = dayup()
while dayUp(da) < c:
    da += 0.001
print("工作日的努力引數是:{:.3f}".format(da))

  •  字串型別及操作

字串表示

 字串序號

字串的使用

字串切片的高階用法

字串轉義符的操作

 字串操作符

 練習:

#WeekNamePrintV1

weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input("請輸入星期數字(1-7):"))
pos = (weekId - 1)*3
print(weekStr[pos:pos+3])

#WeekNamePrintV2

weekStr = "一二三四五六七"
weekId = eval(input("請輸入星期數字(1-7):"))
print("星期"+weekStr[weekId-1])

  •  字串處理函式

       這兩個函式有什麼用呢?內部運算是採用二進位制完成,01構成,讀取不方便,用十六、八進值來表示計算機內部的運算形式。通過這兩個函式可以將計算機運算操作通過字串打印出來,尤其是程式設計師關心的系統性程式非常有幫助。

     

知識點:1、這裡的print有新知識:關於end=“ ”,為空則不換行、

              2、chr(x)後得到是字元故可以直接+“ 還是”

              3、ord(x)後得到是編碼(是int)故不可以直接+“還是”,需要用eval()函式的對應功能的函式str()

字串處理方法:

 方法必須要用.的方法執行

  •  字串型別的格式化:

 

 

應該要去練習才行呀....... 

  • 模組二: time庫

#字串格式
import time as  t

print(t.time())

 

import time as  t

# print(t.time())

print(t.ctime())

import time as  t

# print(t.time())

# print(t.ctime())

print(t.gmtime())

 

  • 時間格式化

 

 

T = t.gmtime()
print(t.strftime("%Y-%m-%d %H:%M:%S", T))

 

  •  程式計時

 

  • 文字進度條

#TextProBarv1

import time as T
scale = 10
print("{0:*^20}".format("執行開始"))
for i in range(scale+1):
    a = '*'*i
    b = '.'*(scale -i)
    c = (i/scale)*100
    print("{:^3.0f}%[{}->{}]".format(c, a, b))
    T.sleep(0.1)
print("{0:*^20}".format("執行結束"))

import time as T
scale = 10
print("{0:*^20}".format("執行開始"))
for i in range(scale+1):
    a = '*'*i
    b = '.'*(scale -i)
    c = (i/scale)*100
    print("\r{:^3.0f}%[{}->{}]".format(c, a, b), end="")
    T.sleep(0.1)
#print預設是換行
print("")
print("{0:*^20}".format("執行結束"))

知識點:1.覆蓋,print的end=“ ”

               2、游標自動到首行,用\r

 文字精度條單行動態重新整理

#TextProBarv3
import time as T

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

雖然我可以用pycharm看到很好的效果,但是老師貌似說用IDE不太好,用控制檯去看結果

 文字進度條舉一反三:

作業題目:

 

x = input()
a = eval(x)
for i in range((a+1)//2):
    b = '*'*(i*2+1)
    # print(b.center(a)) 預設填充的是空格
    print((' '*((a-len(b))//2))+('*'*len(b))+(' '*((a-len(b))//2)))

u = input()
a = pow(eval(u), 3)
print("{0:-^20}".format(a))

 

#凱撒密碼加密演算法

s = input()
t =""
for c in s:
    if 'a' <= c <= 'z':
        t += chr(ord('a')+((ord(c)-ord('a'))+3) % 26)
    elif 'A' <= c <= 'Z':
        t +=  chr(ord('A')+((ord(c)-ord('A'))+3)% 26)
    else:
        t += c
print(t)