这一次,我们的实例和内容可能会有些无聊,但是我会尽量去精简每个知识点,希望各位小伙伴们可以耐心看下去:
这次我们有7个实例,但总的来说还是可以把它们分为两个部分,首先我们来看看第一个部分:
数字类型及其操作:
#DayDayUpQ1.py 这个小程序用来计算如果我们每天进步1%或者退步%1,一年可以进步或者退步多少
dayup=pow(1.001,365) #定义一个dayup变量,用来计算1.001的365次方
daydown=pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
#DayDayUpQ2.py
dayfactor=0.005
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
#小伙伴们可以想一下这里为什么要引用一个dayfactor
#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))
#这是我们在工作日进步,周末退步,一年下来的进步
#DayDayUpQ4.py
def dayUP(df): #def保留字用来定义函数
dayup=1
for i in range(365): #根据df参数计算工作日力量的函数
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: #while保留字用来检查保留字是否成立
dayfactor+=0.001
print("工作日的努力参数是:{:.3f}".format(dayfactor))
学习了前面两篇文章的知识,相信小伙伴们一定能看懂这4段代码,下面让我们一起来看看知识点:
一、整数类型:
整数类型相信大家一定很熟悉,这里我们来介绍一个函数pow(x,y),这个函数是用来计算x的y次方,想算多大就算多大
dayup=pow(1.001,365) #定义一个dayup变量,用来计算1.001的365次方
daydown=pow(0.999,365)
然后我们再来了解一下整数的4中进制表现形式:
十进制:1010,99......
二进制: 以0b/0B开头:0b010
八进制:以0o/0O开头:0o123
十六进制:以0x/0X开头:0x89
二、浮点数类型:
浮点数就是带有小数的数字,它的取值范围和小数精度都存在限制,值得注意的是:浮点数间运算存在不确定性 ,但是这不是一个bug,这是由于编码决定的,小伙伴们可以动手计算一下0.1+0.3和0.1+0.2,这里介绍一个函数:
round(x,d)这个函数的作用是对x进行四舍五入,d是截取小数位数,浮点数运算和比较我们一般使用round函数作为辅助
科学计数法表示:<a>e<b>表示a*(10的b次方)
三、复数类型:
没看错,就是复数,而且是与数学中概念一致的复数,
z=a+bj
z.real获得复数实部,z.imag获得复数虚部
四、数值运算操作符:
这里就是+、-、*、/;
//这个表示整数除,比如10/3的结果是3
+x、+y、x%y、x**y这些与C语言中作用一样
二月操作符:
二元操作符是什么呢?就是形如:+=、-=、*=、/=这样的操作符
五、数值运算函数:
abs(x):这是用来求x的绝对值
divmod(x,y):商余,(x//y,x%y),同时输出商和余数
pow(x,y[,z]):幂余,(x**y)%z,[..]表示参数可以省略
round(x[,d]):像前面说的一样,用来四舍五入的
max(x1,x2...):返回最大值
min(x1,x2,x3):返回最小值
int(x):将x转换成整数
float(x):将x转换成浮点数
complex(x):将x转换成复数,增加虚数部分
好,第一部分我们就来了解这些,下面看看第二部分:
字符串类型及操作:
#TextProBarV1.py 这里我们来实现一个简单的进度条
import time
scale=10
print("------执行开始------")
for i in range(scale+1):
a='*'*i #使用x*y这种形式可以将x复制y次
b='.'*(scale-i)
c=(i/scale)*100
print("{:^3.0f}%[{}->{}]".format(c,a,b)) #:是引导符,^是居中对齐,3.0是输出保留小数位数
time.sleep(0.1)
print("------执行结束------")
#TextProBarV2.py 这里我们实现单条动态刷新
import time
for i in range(101):
print("\r{:3}%".format(i),end="")
time.sleep(0.2)
#TextProBarV3.py
import time
scale = 50
print("执行开始".center(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='')
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))
一、字符串类型的表示
字符串的索引、切片、表示等操作我已经在第一篇文章中有所介绍,这里不在过多赘述
我们来看看那这次出现的几个特殊字符:
\b:表示回退
\n:换行,光标移动到下行首
\r:回车,光标移动到本行首
二、字符串操作符
本次出现的:
x+y:这里可不是运算符,这里是将两个字符串连接在一起,比如字符串"str"+"lop"的结果就是strlop
n*x:这里表示复制n次字符串x
x in s:如果x是s的子串,返回True,否则返回False
再来看一个获取星期的操作符:
#weeknameprint.py
weekstr="星期一星期二星期三星期四星期五星期六星期天"
weekid=eval(input("请输入星期数字(1-7):"))
pos=(weekid-1)*3
print(weekstr[pos:pos+3])
#weeknameprint.py
weekstr="一二三四五六日"
weekid=eval(input("请输入星期数字(1-7):"))
print("星期"+weekstr[weekid-1])
三、字符串处理函数
len(x):返回字符串的长度
str(x):这个函数的作用正好与eval函数相反,这个函数是用来将某个数字转换成字符串形式
hex(x):整数x的十六进制或者八进制小写形式字符串
chr(u):u为Unicode编码,返回编码对应的字符
ord(x):x为字符,返回其对应的Unicode编码
有趣的玩意:
我们可以试试输出:
for i in range(12):
print(chr(9800+i),end="")
这串字符可以输出十二星座,快来找找你的星座吧
四、字符串处理方法
方法在编程中是一个专有名词,它本身也是函数
str.lower()/str.upper():返回字符串的副本,全部字符小写或者大写
str.split(sep=None):返回一个列表,由str根据sep被分隔的部分组成
str.count(sub):返回字符串在str中出现的次数
str.replace(old,new):返回字符串str副本,所有old字符串被替换为new
str.center(width[,fillchar]):字符串根据宽度width居中,fillchar可选
str.strip(chars):从str中去掉在其左侧和右侧chars中列出的字符
str.join(iter)":在iter变量最后元素外每个元素后增加一个str","
五、字符串类型的格式化
这里我们就可以来深入研究研究<>.format(<>)
time库的介绍:
时间获取:
时间格式化:
程序计时:
程序计时指测量起止动作所经历时间的过程
测量时间:perf_counter()
产生时间:sleep()