Python語言程式設計(MOOC崇天)第三章基本資料型別學習筆記(天天向上的力量+文字進度條)
阿新 • • 發佈:2019-01-06
- 回顧:
第一章
第二章
- 本週內容:基本資料型別
- 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)