浮点数间运算存在不确定尾数,不是bug
>>>0.1 + 0.2
0.300......4
使用round
函数计算浮点数,小数点后取一位
round(0.1+0.2,1) == 0.3
带有小数点及小数的数字
浮点数取值范围和小数精度都存在限制,但常规计算可忽略
取值范围约-10的308到10的308次方,精度数量级10的-16次方
使用字符e或E作为幂的符号,以10为基数,格式如下:
e
a*10的b次方
与数学中复数一致
加减乘除整数除
+、-、*、/、//
# x本身
+x
# y的负值
-y
# 取余数
x % y
# 幂运算,次方
x**y
# 二元操作符
x op= y
三种类型存在一种逐渐“扩展”或“变宽”的关系
整数——》浮点数——》复数
abs(x)
x的绝对值,例:abs(-10.1),结果为10.1divmod(x,y)
,例:divmod(10,3),值为(3,1)一年365天,每天进步1‰,累计进步多少呢?
每天退步1‰,累计剩下的还有多少?
dayup =pow(1.001, 365)
daydown =pow(0.999, 365)print("向上:{:.2f}, 向下:{:.2f}".format(dayup, daydown))向上:1.44, 向下:0.69
# 千分之一
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
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
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("工作日的努力参数是:{:.3f} ".format(dayfactor))工作日的努力参数是:0.019
字符串有两类共4种表达方式:
”请输入密码:“
‘python’
''' 人生苦短我用python'''
字符串的序号:
字符串的使用:
"请输入带有符号温度值:"[0]
或
TempStr[-1]
"请输入带有符号温度值:"[1:3]
或
TempStr[0:-1]
字符串切片高级用法:
”零一二三四五六七八九十“[:3] 结果为零一二
# 步长为2进行取值
”零一二三四五六七八九十“[1:8:2] 结果为一三五七# 逆序
”零一二三四五六七八九十“[::-1] 结果为十九八七六五四三二一零
字符串的特殊字符:
\
表示特定字符的本意\":表示"本身的含义
\b:回退
\n:换行
\r:回车,光标移动到本行首
x + y:连接两个字符串x和y
n * x 或 x * n:复制n次字符串x
x in s:如果x是s的子串,返回True,否则返回false
例:
weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7):"))
print("星期" + weekStr[weekId-1])请输入星期数字(1-7):1
星期一
一些以函数形式提供的字符串处理功能
len(x)
:返回字符串的长度str(x)
:将结果转换为字符串形式hex(x)/cot(x)
:转换成x的十六进制形式或八进制形式字符串chr(u)
:u为unicode编码,返回对应的字符ord(x)
:x为字符,返回对应的unicode编码Unicode编码:python字符串的编码形式
示例:输出12星座的字符串形式
for i in range(12):print(chr(9800 + i), end="")♈♉♊♋♌♍♎♏♐♑♒♓
方法在 编程中是一个专有名词
- “方法”特指.()风格中的函数()
- 方法本身也是函数,但与有关,.()风格使用
- 字符串及变量也是,存在一些方法
一些以方法形式提供的字符串处理功能
- str.lower()或str.supper():返回字符串的副本,全部字符小写或大写
print("aBBNvfN".lower())
abbnvfn- str.split(sep=None):返回一个列表,由str根据sep被分隔的部分组成
print("a,B,B".split(","))
['a,B,B']- str.count(sub):返回子串sub在str中出现的次数
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根据宽度width居中,fillchar可选
print("python".center(20, "="))
=======python=======- str.strip(chars):从str中去掉左侧和右侧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
time库是python中处理时间的标准库
time库包括三类函数
获取当前时间戳的三种方式及结果:
import timeprint(time.time())print(time.ctime())print(time.gmtime())# 输出结果
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))# 输出结果
2023-03-09 13:16:08
import time
scale = 10
print("------执行开始------")
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("------执行结束------")# 输出结果
------执行开始------0 %[->..........]
10 %[*->.........]
20 %[**->........]
30 %[***->.......]
40 %[****->......]
50 %[*****->.....]
60 %[******->....]
70 %[*******->...]
80 %[********->..]
90 %[*********->.]
100%[**********->]
------执行结束------
文本进度条单行动态刷新:
import time
for i in range(101):print("\r{:3}%".format(i), end="")time.sleep(0.1)
完整代码:
import time
scale = 50
print("执行开始".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"+"执行结束".center(scale//2,'-'))