1.数字类型及操作
1>整数类型
可正可负,无取值限制;pow(x,y):计算x的y次幂。
四种进制表示:二进制(0b/0B),八进制(0o/0O),十六进制(0x/0X),十进制。
2>浮点数类型
带有小数点及小数的数字;取值范围和精度都有限制,but常规操作可忽略限制=基本无限制。
浮点数之间运算存在不确定尾数,不是bug;
eg: (==是等于判断符号) (round(x,d):对x四舍五入,d是小数截取位数)
0.1+0.2 = = 0.3 FALSE
round(0.1+0.2,1) = = 0.3 TRUE
科学计数法:10为基数,e/E为幂的符号,格式:a e b等价于a倍的10的b次幂
3>复数类型
j=根号下-1
z=a+bj:z.real:取实部a;z.imag:取虚部b。
4>数值运算操作符
加+,减-,乘*,除/(浮点数表示结果),整数除//
x%y:模运算,取余运算; x**y:求x的y次幂运算。
二元操作符:x op=y 等价于x=x op y。
整数->浮点数->复数,可混合运算,生成结果为最宽类型。
5>数值运算函数
abs(x):求x的绝对值。
divmod(x,y):商余,(x//y,x%y)同时输出商和余数。
pow(x,y[,z]):幂余,(x**y)%z;[]可省略。
round(x[,d]):四舍五入,d是保留小数位数,默认取0.
max(x1,x2…xn): 求最大值,n不限。
min(x1,x2…xn):求最小值,n不限。
数值类型转换函数:
int(x):将x转换为整数,舍弃小数部分,并不四舍五入,直接舍弃。
float(x):将x转换为浮点数,增加小数部分。
complex(x):将x转变为复数,增加虚部部分。
2.实例:天天向上的力量
1>Q1
#DayDayUpQ1.py
dayup=pow(1.001,365)
daydown=pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
2>Q2
#DayDayUpQ2.py
dayfactor=0.005 #引入变量,方便修改
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
3>Q3
#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>Q4
#DayDayUpQ4.py 工作日的努力
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))
5>运行结果
3.字符串类型及操作
1>字符串类型的表示
0/多个字符表示,“”,‘’括住
两类四种表示方法:单引号,双引号表示:表示单行字符;三单引号,三双引号表示:表示多行字符。
切片高级用法:Str.[M:N:K] 根据步长K对字符串切片
eg:str=“零一二三四五六七八九十”
str.[1:8:2]为“一三五七”
str.[::-1]为“是九八七六五四三二一零” — 倒序输出的巧妙用法
转义符\:\b回退,\n换行,\r回车。
2>字符串操作符
x+y:连接x和y这两个字符串。
n*x:复制n次字符串x。
x in s:若x是s的子串,则返回TRUE,否则返回FALSE。
3>字符串处理函数
4>字符串处理方法
5>字符串类型的格式化
6>例子
#WeekNamePrintV1.py 获取星期字符串
weekStr="星期一星期二星期三星期四星期五星期六星期日"
weekId=eval(input("请输入星期数字(1-7):"))
pos=(weekId-1)*3
print(weekStr[pos:pos+3])
#WeekNamePrintV2.py 获取星期字符串
weekStr="一二三四五六日"
weekId=eval(input("请输入星期数字(1-7):"))
print("星期"+weekStr[weekId-1])
#一些好玩的Unicode编码
Str="1+1=2"+chr(10004)
print(Str)
for i in range(12):
print(chr(9800+i) ,end="")
运行结果
4.time库的使用
1>time库基本介绍
2>时间获取
3>时间格式化
4>程序计时应用
5.实例:文本进度条
1>Q1
#TextProBarV1.py 文本进度条简单的开始
import time
scale=10 #文本进度条大概的宽度
print("------执行开始------")
for i in range(scale+1):
a='*'*i #*号复制i次
b='.'*(scale-i) #.复制scale-i次
c=(i/scale)*100 #输出与当前进度条进度的百分比
print("{:>3.0f}%[{}->{}]".format(c,a,b))
time.sleep(0.1)
print("------执行结束------")
2>Q2
#TextProBarV2 文本进度条的单行动态刷新
import time
for i in range(101):
print("\r{:3}%".format(i),end="")
#窗口键+R调出命令提示符,把这个文件拖进去运行
time.sleep(0.1)
3>Q3
#TextProBarV3 完整文本进度条的效果
import time
scale=50#文本进度条大概的宽度
print("执行开始".center(scale//2,"-"))
#字符串大概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='')
#窗口键+R调出命令提示符,把这个文件拖进去运行
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))
#//是整除操作,scale//2即=25
4>运行结果
6.练习
1>平方根格式化
a=eval(input())
b=a**0.5
print("{:+>30.3f}".format(b))
2>字符串分段组合
Str=input()
ss=Str.split('-')
print(ss[0]+'+'+ss[-1])
3>三次方格式化
a=eval(input())
b=pow(a,3)
print("{:-^20}".format(b))
4>星号三角形
n=eval(input())
for i in range(1,int((n+1)/2+1)):
temp='*'*(2*i-1)
print("{:^{}}".format(temp,n))
5>凯撒密码
def encryption(str, n):
cipher = []
for i in range(len(str)):
if str[i].islower():
if ord(str[i]) < 123-n:
c = chr(ord(str[i]) + n)
cipher.append(c)
else:
c = chr(ord(str[i]) + n - 26)
cipher.append(c)
elif str[i].isupper():
if ord(str[i]) < 91-n:
c = chr(ord(str[i]) + n)
cipher.append(c)
else:
c = chr(ord(str[i]) + n - 26)
cipher.append(c)
else:
c = str[i]
cipher.append(c)
cipherstr = ('').join(cipher)
return cipherstr
#获得用户输入的明文
plaintext = input()
ciphertext = encryption(plaintext, 3)
print(ciphertext)
7.总结
今天知识点太多了,还挺琐碎的,我又有点懒,直接把听课的时候随手记的草稿贴上去了(早知道记的时候好好写字了),今天就是有点懒,等我哪天再整理的时候,再把笔记整理成文字吧!