本篇笔记会大篇幅的介绍基本数据类型,通过两天的学习,感觉这一章节碎知识点比较多,刚学的话可能会一头雾水,好多特殊的用法涌来,对于初学者来说很不友好,但是我们在本章节只需对这种数据类型还有用法做初步了解,以后用到的会比较多,可谓熟能生巧。
#1.数据类型
①整数类型:可分为十进制,二进制,八进制和十六进制。默认情况采用的是十进制,用到其他进制时,需要增加引导符号。比如,二进制以0b或0B引导,八进制以0o或0O引导,十六进制以0x或0X引导。
pow()函数:pow(x,y)表示的是xy。
②浮点数类型:表示带有小数的数值,浮点数有两种表示方法:十进制表示和科学计数法表示。其中科学计数法使用到了字母e或E做为幂的符号,以10为基数,e=a*10b。例如 4.3e-3值为4.3×10-3 。
特别注意的是,浮点数间运算存在不确定尾数。这时就需要用到round()函数。
round()函数:用来判断浮点数运算与浮点数运算之间的比较关系。
round(x,d),对x四舍五入,d是小数截取的位数。round(0.1+0.2,1)结果为0.3。
需要注意的是,在浮点数间运算和比较时要用到round()函数来辅助。
③复数类型:表示数学中的复数,可看做有序的二元有序实数对(a,b),表示为a+bj,其中a为实数部分,b为虚数部分。对于复数z,可以用z.real和z.imag分别获得它的实数部分和虚数部分。例如(1.23e-4+5.67e+89j).real的结果为0.000123;(1.23e-4+5.67e+89j).imag的结果为5.67e+89。
#2.数字类型操作
①内置的数值运算操作符:有9个,为记忆理解部分,话不多说,直接上图表。
需要注意的是整数,浮点数,复数之间存在一种逐渐扩展的关系,即
整数->浮点数->复数。整数可看成是浮点数没有小数的情况,浮点数可以看成是复数虚部为0的情况。
op表示二元数学操作符,x op y 等价于 x = x op y。
②内置的数值运算函数:这些函数刚开始会让大家感到有些吃力,但是通过后期不断使用,大家会越来越熟悉,现在就需要大家能很好的理解。
在函数中,如果某一个参数可省略,一般在该参数
两边加上[ ]。
③内置的数字类型转换函数:
#3实例:天天向上的力量
①普阶版:
dayup = pow((1.0+0.001),365) #每天提高0.0001,365后提高的力量
daydown = pow((1.0-0.001),365) #每天下降0.0001,365天后下降的力量
print("向上: {:.2f}, 向下:{:.2f}.".format(dayup,daydown)) #将结果打印出来
②中阶版:一年中,5个工作日提高1%,2个休息日下降1%
dayup,dayfactor = 1.0, 0.01 #对dayup和dayfactor赋予初值
for i in range(365): #一年365天的循环
if i % 7 in [6,0]: #判断一年中的某一天是否为休息日
dayup = dayup * (1-dayfactor) #如果是休息日,需要下降1%
else:
dayup = dayup * (1+dayfactor) #是工作日,增加1%
print("向上5天向下2天的力量:{:.2f}.".format(dayup)) #打印结果
③进阶版:天天向上的力量,如果每周工作5天,休息2天,休息日水平下降0.01,工作日要努力到什么程度,一年后的水平才与每天努力1%取得的效果一样。
def dayup(df): #定义dayup()函数
dayup = 1.0 #对变量dayup赋予初值
for i in range(365): #一年的循环
if i % 7 in [6,0]: #判断一年中第i天是否为两天休息日
dayup = dayup * (1-0.01) #如果是休息日,下降1%
else:
dayup = dayup * (1+df) #否则需要调用dayup(df)函数计算
return dayup #返回保存dayup的值
dayfactor = 0.01
while (dayup(dayfactor)<37.78): #dayup(dayfactor)的值与每天努力1%的力量做比较
dayfactor = dayfactor + 0.001
print("每天的努力参数是:{:.3f}.".format(dayfactor))
#4.字符串类型及其操作
①字符串类型的表示:字符串是由0个或多个字符组成的有序字符序列。可以由一对单引号( ’ ),双引号(“),或三引号(‘’')构成。提到字符串就会想到我们前面学到的字符串的索引和切片。我们这里来介绍一下字符串切片高级用法。
字符串切片的高级用法:使用[M:N:K]根据步长对字符串切片,<字符串>[M:N]其中M缺失表示至开头,N缺失表示至结尾。
<字符串>[M:N:K],根据步长对字符串进行切片。例如“0一二三四五六七八九十”[1:8:2]结果是“一三五七”。
将字符串逆序,例如“0一二三四五六七八九十”[::-1]的结果为“十九八七六五四三二一”。
反斜杠字符(\):是一个特殊字符,在字符中表示转义。”\b" ,“\n”,“\t”,“\r”。
“\b"表示回退,向后退一格;”\n"表示换行,光标移到下行首行;“\r"表示回车,光标移到本行首行;”\t"表示水平制表。
②基本的字符串操作符:
直接通过一个例子来说明
例:读入一个表示星期几的数字(1-7),输出对应的星期字符串名称。
weekstr = "星期一星期二星期三星期四星期五星期六星期日" #定义一个字符串
weekid = eval(input("请输入星期数字(1-7):")) #输入的星期数字
p = (weekid-1)*3
print(weekstr[p:p+3]) #打印字符串weekstr中的字符
精简的方法
weekstr = "一二三四五六日"
weekid = eval(input("请输入星期数字(1-7):"))
print("星期"+weekstr[weekid-1])
③内置的字符串处理函数:
Unicode编码:python字符串中每个字符都使用Unicode。
④内置的字符串处理方法:这里我要先说明一下“方法”,“方法”在编程中是一个专有名词,特指< a >.< b >() 风格中的函数 ,但与 < a >有关,< a >.< b >()风格使用。
这些处理方法会让人整迷糊,我们要先理解,然后在以后多次使用就会熟悉。
⑤字符串类型格式化:字符串通过format()方法进行格式化处理。字符串格式化用于解决字符串和变量同时输出时的格式安排。
字符串format()方法的基本使用格式如下:
<模板字符串>.format()(< 逗号分隔的参数 >)
模板字符串由一系列槽组成,用来控制修改字符串中嵌入值出现的位置,其基
本思想是将format0方法中逗号分隔的参数按照序号关系替换到模板字符串的槽中。
槽用大括号({})表示,如果大括号中没有序号,则按照出现顺序替换。
槽内部样式:
{ <参数序号>:<格式控制标记>}
对槽中格式控制标记的字段可以把他分为两部分,前三个为一部分,后三个为一部分。
“{ 0:= ^ 20}”.format.(PYTHON)
根据上表可知,‘=’为填充内容;‘^’为居中对齐;‘20’为宽度。
“{0: , .2f}”.format(12345.6789) ,输出结果为’ 12,345 . 68 ’
‘,’表示千位分隔符;‘. 2’为精度;‘f’为类型。
#5.time时间库
①time库是python中处理时间的标准库,是计算机时间的表达;提供获取系统时间并格式化输出功能;提供系统级精确计时功能,用于性能分析。表达形式为
import time
time.< b > ()
②time库包括三类函数
时间获取:time() ;ctime() ;gtime()
时间格式化:strftime() ;strptime()
程序计时:sleep() ;per_counter()
#6.文本进度条
①简单的开始:静态文本的进度条显示
import time #调用time库
scale = 10 #文本进度条的宽度
print("------开始执行------") #开始的标签
for i in range(scale+1): #每次循环都会打印进度条
a = '*' * i #字符被复制的次数
b = '.' * (scale-i)
c = (i/scale)*100 #输出百分比
print("%{:^3.0f}[{}->{}]" .format (c, a, b)) #槽位的前后对应输出
time.sleep(0.1) #进行一个休眠
print("------执行结束------") #结束的标签
②单行动态刷新
import time
for i in range(101):
print("\r{:3}%".format(i), end=" ") #\r使得光标每次回到本行行首,实现动态刷新
time.sleep(0.05)
③带刷新的文本进度条
import time
scale = 50
print("执行开始". center(scale//2 , '-')) #使用center()函数,使得字符串宽度居中,用字符‘-’填充
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.05)
print("\n"+"执行结束".center(scale//2,'-')) #\n换行,光标移到下行行首
本次要分享的内容结束了,这次分享的知识点复杂繁琐,初次接触会显得异常吃力,如此碎且多的知识点需要我们耐住性子,慢慢来,熟能生巧嘛。学到这里,我们已经对python中一些代码能够独立编写了,这个时候就要多刷一些代码,及时翻阅笔记,对模糊的知识点进行反复巩固。鉴于这段时间比较忙,而且这次知识点如此之多,小编也需要多刷一些编程题,对以上知识点熟练运用之后,再开启下一篇章。文中若有错误,望指正,感谢!!!