西南大學校園網(wǎng)站建設往年考試卷產(chǎn)品網(wǎng)站推廣
目錄
- 1.數(shù)字類型與操作:
- 整數(shù):
- 浮點數(shù):
- 復數(shù)
- 數(shù)值運算操作符
- 數(shù)字之間關(guān)系
- 數(shù)值運算函數(shù)
- 2.案例:天天向上的力量
- 第一問:1‰的力量
- 第二問:5‰和1%的力量
- 第三問:工作日的力量
- 第四問:工作日的努力
- 3.字符串類型及操作
- 字符串類型表示
- 字符串操作符
- 字符串處理函數(shù)
- 字符串處理方法
- 字符串類型的格式化
- 4.time庫使用
- 時間獲取:
- 時間格式化
- 程序計時應用
- 5.案例:文本進度條
- 文本進度條:
- 如何獲得文本進度條的變化時間:
- 案例代碼:
- 代碼講解:
1.數(shù)字類型與操作:
整數(shù):
- 可正可負,沒有取值范圍限制
- pow(x,y):計算x的y次方,沒有限制
- 四種進制表示形式:
- 十進制
- 二進制
- 八進制
- 十六進制
浮點數(shù):
浮點數(shù)間運算存在不確定尾數(shù),不是bug
>>>0.1 + 0.2
0.300......4
使用round
函數(shù)計算浮點數(shù),小數(shù)點后取一位
round(0.1+0.2,1) == 0.3
-
帶有小數(shù)點及小數(shù)的數(shù)字
-
浮點數(shù)取值范圍和小數(shù)精度都存在限制,但常規(guī)計算可忽略
-
取值范圍約-10的308到10的308次方,精度數(shù)量級10的-16次方
-
使用字符e或E作為冪的符號,以10為基數(shù),格式如下:
<a>e<b>
a*10的b次方
復數(shù)
與數(shù)學中復數(shù)一致
數(shù)值運算操作符
加減乘除整數(shù)除
+、-、*、/、//
# x本身
+x
# y的負值
-y
# 取余數(shù)
x % y
# 冪運算,次方
x**y
# 二元操作符
x op= y
數(shù)字之間關(guān)系
三種類型存在一種逐漸“擴展”或“變寬”的關(guān)系
整數(shù)——》浮點數(shù)——》復數(shù)
數(shù)值運算函數(shù)
- 絕對值:
abs(x)
x的絕對值,例:abs(-10.1),結(jié)果為10.1 - 商余:
divmod(x,y)
,例:divmod(10,3),值為(3,1) - 冪余:pow(x,y[,z]):例:pow(3,pow(3,99),10000)值為4587
- 最大值:max(x1,x2,x3),例:max(1,3,5),值為5
- 最小值:min(x1,x2,x3),例:min(1,3,5),值為1
- int(x):將x變成整數(shù),舍棄小數(shù)部分
- float(x):將x變成浮點數(shù),增加小數(shù)部分
- complex(x):將x變成復數(shù),增加虛數(shù)部分
2.案例:天天向上的力量
第一問:1‰的力量
-
一年365天,每天進步1‰,累計進步多少呢?
-
每天退步1‰,累計剩下的還有多少?
dayup =pow(1.001, 365)
daydown =pow(0.999, 365)print("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))向上:1.44, 向下:0.69
第二問:5‰和1%的力量
- 一年365天,每天進步5‰或1%,累計進步多少呢?
- 每天退步5‰或1%,又剩下多少呢?
# 千分之一
dayfactor = 0.005
dayup = pow(1+dayfactor, 365)
daydown = pow(1-dayfactor, 365)print("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))向上:6.17, 向下:0.16# 百分之一
dayfactor = 0.01
dayup = pow(1+dayfactor, 365)
daydown = pow(1-dayfactor, 365)print("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))向上:37.78, 向下:0.03
第三問:工作日的力量
- 一年365天,一周五個工作日,每天進步1%
- 雙休日每天退步1%
dayup = 1.0
dayfactor = 0.01for 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
第四問:工作日的努力
- 工作日需要努力到什么程度,才能與每天努力1%一樣
- A:每天進步1%,365天不停歇
- B:工作日進步5天,雙休日每天下降1%,要多努力?
def dayUP(df):dayup = 1for 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("工作日的努力參數(shù)是:{:.3f} ".format(dayfactor))工作日的努力參數(shù)是:0.019
3.字符串類型及操作
字符串類型表示
字符串有兩類共4種表達方式:
- 由一對單引號或雙引號表示單行字符串
”請輸入密碼:“
‘python’
- 由一堆三單引號或雙引號表示多行字符串
''' 人生苦短我用python'''
字符串的序號:
- 正向遞增序號 和 反向遞減序號
- 正向從0開始,反向從-1開始
字符串的使用:
- 使用[]獲取字符串中一個或多個字符
- 索引:返回字符串中單個字符
"請輸入帶有符號溫度值:"[0]
或
TempStr[-1]
- 切片:返回字符串中的一段子串
"請輸入帶有符號溫度值:"[1:3]
或
TempStr[0:-1]
字符串切片高級用法:
- 使用[M:N:K]根據(jù)步長對字符串切片
- <字符串>[M:N]:M缺失表示至開頭,N缺失表示至結(jié)尾
”零一二三四五六七八九十“[:3] 結(jié)果為零一二
- <字符串>[M:N]:根據(jù)步長K對字符串進行切片
# 步長為2進行取值
”零一二三四五六七八九十“[1:8:2] 結(jié)果為一三五七# 逆序
”零一二三四五六七八九十“[::-1] 結(jié)果為十九八七六五四三二一零
字符串的特殊字符:
- 轉(zhuǎn)義符:
\
表示特定字符的本意
\":表示"本身的含義
\b:回退
\n:換行
\r:回車,光標移動到本行首
字符串操作符
x + y:連接兩個字符串x和y
n * x 或 x * n:復制n次字符串x
x in s:如果x是s的子串,返回True,否則返回false
例:
weekStr = "一二三四五六日"
weekId = eval(input("請輸入星期數(shù)字(1-7):"))
print("星期" + weekStr[weekId-1])請輸入星期數(shù)字(1-7):1
星期一
字符串處理函數(shù)
一些以函數(shù)形式提供的字符串處理功能
len(x)
:返回字符串的長度str(x)
:將結(jié)果轉(zhuǎn)換為字符串形式hex(x)/cot(x)
:轉(zhuǎn)換成x的十六進制形式或八進制形式字符串chr(u)
:u為unicode編碼,返回對應的字符ord(x)
:x為字符,返回對應的unicode編碼
Unicode編碼:python字符串的編碼形式
- 統(tǒng)一字符編碼,即覆蓋幾乎所有字符的編碼形式
- 從0到1114111空間,每個編碼對應一個字符
示例:輸出12星座的字符串形式
for i in range(12):print(chr(9800 + i), end="")????????????
字符串處理方法
方法在 編程中是一個專有名詞
- “方法”特指<a>.<b>()風格中的函數(shù)<b>()
- 方法本身也是函數(shù),但與<a>有關(guān),<a>.<b>()風格使用
- 字符串及變量也是<a>,存在一些方法
一些以方法形式提供的字符串處理功能
- str.lower()或str.supper():返回字符串的副本,全部字符小寫或大寫
print("aBBNvfN".lower())
abbnvfn- str.split(sep=None):返回一個列表,由str根據(jù)sep被分隔的部分組成
print("a,B,B".split(","))
['a,B,B']- str.count(sub):返回子串sub在str中出現(xiàn)的次數(shù)
print("asd ad da waaa as".count("a"))
7- str.replace(ord, new):返回字符串副本,所有old子串替換成new
print("python".replace("n", "n123"))
python123- str.center(width[,fillchar]):字符串str根據(jù)寬度width居中,fillchar可選
print("python".center(20, "="))
=======python=======- str.strip(chars):從str中去掉左側(cè)和右側(cè)chars中列出的字符
print("= - s python ==".strip("= -s"))
python- str.join(iter):在iter變量除最后元素外的每個元素后增加一個str
print("。".join("python"))
p。y。t。h。o。n
字符串類型的格式化
格式化是對字符串進行格式表達的方式
- 字符串格式化使用
.format()
方法
print("{0:=^20}".format("python"))
=======python=======print("{0:,.2f}".format(1234.3233))
1,234.32
4.time庫使用
time庫是python中處理時間的標準庫
- 計算機時間表達
- 提供獲取系統(tǒng)時間并格式化輸出功能
- 提供系統(tǒng)級精確計時功能,用于程序性能分析
time庫包括三類函數(shù)
- 時間獲取:time()、ctime()、gmtime()
- 時間格式化:strftime()、strptime()
- 程序計時:sleep(), pref_counter()
時間獲取:
獲取當前時間戳的三種方式及結(jié)果:
import timeprint(time.time())print(time.ctime())print(time.gmtime())# 輸出結(jié)果
1678366911.6781032
Thu Mar 9 21:01:51 2023
time.struct_time(tm_year=2023, tm_mon=3, tm_mday=9, tm_hour=13, tm_min=1, tm_sec=51, tm_wday=3, tm_yday=68, tm_isdst=0)
時間格式化
將時間以合理的方式展示出來
- 格式化:類似字符串格式化,需要有展示模板
- 展示模板由特定的格式化控制符組成
格式化字符串:
%Y:年份:0000~9999
%m:月份;01~12
%B:月份名稱;January~December
%b:月份縮寫;Jan~Dec
%A:星期;Monday~Sunday
%a:星期縮寫;Mon~Sun
%H:小時(24小時制);00~23
%I:小時(12小時制);01~12
%p:上下午;AM,PM
%M:分鐘;00~59
%S:秒;00~59
import timet = time.gmtime()print(time.strftime("%Y-%m-%d %H:%M:%S", t))# 輸出結(jié)果
2023-03-09 13:16:08
程序計時應用
- 程序計時指測量起止動作所經(jīng)歷時間的過程
- 測量時間:perf_counter()
- 產(chǎn)生時間:sleep(),休眠
5.案例:文本進度條
文本進度條:
- 采用字符串方式打印可以動態(tài)變化的文本進度條
- 進度條需要能在一行中逐漸變化
如何獲得文本進度條的變化時間:
- 采用sleep()模擬一個持續(xù)的時間
案例代碼:
import time
scale = 10
print("------執(zhí)行開始------")
for i in range(scale+1):a = '*' * ib = '.' * (scale - i)c = (i/scale)*100print("{:^3.0f}%[{}->{}]".format(c,a,b))time.sleep(0.1)
print("------執(zhí)行結(jié)束------")# 輸出結(jié)果
------執(zhí)行開始------0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
------執(zhí)行結(jié)束------
代碼講解:
- 第一行:引入time庫
- 第三、十行:開始結(jié)束標簽
- 第二行:文本進度條寬度
- 第四行:定義一個for循環(huán)
文本進度條單行動態(tài)刷新:
import time
for i in range(101):print("\r{:3}%".format(i), end="")time.sleep(0.1)
完整代碼:
import time
scale = 50
print("執(zhí)行開始".center(scale//2, "-"))
start = time.perf_counter()
for i in range(scale+1):a = '*' * ib = '.' * (scale - i)c = (i/scale)*100dur = time.perf_counter() - startprint("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')time.sleep(0.1)
print("\n"+"執(zhí)行結(jié)束".center(scale//2,'-'))