1、数字类型及操作
1.1整数类型
与数学中整数的概念一致
可正可负,没有取值范围限制
pow(x,y)函数:计算xy,想算多大算多大
>>>1267650600228229401496703205376
4种进制表示形式
十进制:1010,99,-217
二进制,以0b或0B开头:0b010,-0B101
八进制,以0o或0O开头:0o123,-0O456
十六进制,以0x或0X开头:0x9a,-0X89
1.2浮点数类型
与数学中实数的概念一致
带有小数点及小数的数字
浮点数取值范围和小数精度都存在限制,但常规计算可忽略
取值范围数量级约-10308至10308,精度数量级10-16
浮点数间运算存在不确定尾数,不是bug
>>>0.1+0.2 ==0.3
false
a = 0.1+0.3 print("a=",a) >>>a= 0.4 |
b = 0.1+0.2 print("b=",b) >>>b= 0.30000000000000004 不确定尾数 |
round(x,d):对x四舍五入,d是小数截取位数
-浮点数间运算及比较用round()函数辅助
-不确定尾数一般发生再10-16左右,round()十分有用
浮点数可以采用科学计数法表示
使用字母e或E作为幂的符号,以10为基数,格式如下:
<a>e<b> b表示a*10b
例如:4.3e-3 值为0.0043 9.6E5 值为960000.0
关于Python浮点数汇总:
-取值范围和精度基本无限制
-运算存在不确定尾数,用round()函数辅助。
-科学计数法表示
1.3复数类型
与数学中复数的概念一致
如果X2=-1,那么X的值是什么?
-定义j=,以此为基础,构建数学体系
-a+bj被称为复数,其中,a是实数,b是虚数
复数实例:
z = 1.23e-4+5.6e+89j
实部是什么? z.real获得实部
1.4数值运算操作符
- 操作符是完成运算的一种符号体系
操作符及使用 | 描述 |
x+y | 加,x与y之和 |
x-y | 减,x与y之差 |
x*y | 乘,x与y之积 |
x/y | 除,x与y之商 10/3结果是3.3333333333333335 |
x//y | 整数除,x与y之整数商 10//3结果是3 |
+x | x本身 |
-y | x的负值 |
x%y |
余数,模运算 |
x**y |
幂运算,x的y次幂,xy 当y是小数时,开方运算 10**0.5结果是: 根号10 |
- 二元操作符有对应的增强赋值操作符
增强操作符及使用 | 描述 | |
x op= y |
即 x = x op y ,其中,op为二元操作符
#示例: |
1.5.数据类型的关系
- 三种类型存在可进行混合运算,生成结果为“最宽”类型。
- 三种类型存在一种逐渐“扩展”或“变宽”的关系:
整数 -> 浮点数 -> 复数
例如:123 + 4.0 = 127.0 (整数 + 浮点数 = 浮点数)
1.6.数值运算函数
一些以函数形式提供的数值运算功能
函数及使用 | 描述 |
abs(x) |
绝对值,x的绝对值 abs(-10.01)结果为 10.01 |
divmod(x,y) |
商余,(x//y,x%y),同时输出商和余数 divmod(10,3)结果我 (3,1) |
pow(x,y[,z]) |
幂余,(x**y)%z ,[..]表示参数z可省略 pow(3,pow(3,99),1000)结果为 4587 |
round(x[,d]) |
四舍五入 ,d是保留小数 位数,默认值为0 round(-10.123,2)结果为 -10.12 |
max(x1,x2, ... ,xn) |
最大值,返回x1,x2, ... ,xn中的最大值,n不限 max(1,9,5,4,3)结果为 9 |
min(x1,x2, ... ,xn) |
最小值,返回x1,x2, ... ,xn中的最大值,n不限 max(1,9,5,4,3)结果为 1 |
int(x) |
将x变成整数,舍弃小数部分 int(123.45) 结果123; int("123") 结果为 123 |
float(x) |
将x变成浮点数,增加小数部分 float(12) 结果12.0; float("1.23") 结果为 1.23 |
complex(x) |
将x变成复数,增加虚数部分 complex(4) 结果为 4+0j |
1.7、小结
- 整数类型的无限范围及4种进制表示
- 浮点数类型的近似无线范围、小尾数及科学计算法
- +、-、*、/、//、%、**、二元增强操作符
- 函数:abs()、divmod()、pow()、round()、max()、min()、int()、float()、complex()
2、实例:天天向上
- 实例虽然仅包含8-12行代码,但包含很多语法元素
- 判断条件循环、次循环、分支、函数、计算思维
- 清楚理解这些代码能够快速入门Python语言
问题1:1‰的力量
- 一年365天,每天进步1‰,累计进步多少呢?
- 一年365天,每天退步1‰,累计剩下多少呢?
实例:
DayUp =pow(1.001,365) DayDown =pow(0.999,365) print ("向上:{:.2f},向下:{:.2f}".format(DayUp,DayDown))
问题2:5‰和1%的力量
- 一年365天,每天进步5‰或1%,累计进步多少呢?
- 一年365天,每天退步5‰或1%,累计剩下多少呢?
实例:
dayfactor = 0.01 #使用变量的好处:一处修改即可。 dayup = pow(1+dayfactor,365) daydown = pow(1-dayfactor,365) print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))
问题3:工作日的力量
- 一年365天,一周5个工作日,每天进步1%
- 一年365天,一周2个休息日,每天退步1%
实例:
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:工作日的努力
工作日模式要努力到什么水平,才能与每天努力1%一样?
A君:一年365天,每天进步1%,不停歇。
B君:一年365天,每周工作5天休息2天,休息日下降1%,要多努力呢?
实例:
#根据df参数计算工作日力量的函数,参数不同,这段代码可共用。 #def保留字用于定义函数 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 dayfacor = 0.01 while dayUP(dayfacor) < 37.78: # while保留字判断条件是否成立,条件成立时循环执行。 dayfacor += 0.001 print("工作日的努力参数是:{:.3f}".format(dayfacor))
3、字符串类型及操作
3.1字符串类型的表示
3.1.1字符串
- 由0个或多个字符串组成的有序字符序列
字符串由一对单引号或一对双引号表示
例:"请输入带有符号的温度值:" 或者 'C'
字符串是字符的有序序列,可以对其中的字符进行索引
例:"请"是"请输入带有符号的温度值:"的第0个字符
- 字符串由2类共4种表示方法:
由一对单引号或双引号表示,仅表示单行字符串
例:''这里有个双引号(")" 或者 "这里有个单引号(')"
由一对三单引号或三双引号表示,可表示多行字符串
例:'''这里既有单引号(')又有双引号(")'''
3.1.2字符串的序号
3.1.3字符串的使用
- 使用[]获取字符串中的一个或多个字符
索引:返回字符串中单个字符 <字符串>[M]
例:"请输入带有符号的温度值:"[0] 或者 TempStr[-1]
切片:返回字符串中一段字符子串 <字符串>[M:N]
例:"请输入带有符号的温度值:"[1:3] 或者 TempStr[0:-1]
3.1.4字符串切片的高级用法
- 使用[M:N:K]根据步长对字符串切片
<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾
例:"〇一二三四五六七八九十"[:3] 结果是:"〇一二"
<字符串>[M:N:K],根据步长K对字符串切片
例:"〇一二三四五六七八九十"[1:8:2] 结果是:"一三五七"
"〇一二三四五六七八九十"[::-1] 结果是:"十九八七六五四三二一〇"
3.1.5字符串的特殊字符
- 转义符
转义符表示特定字符的本意
例:“这里有个双引号(")” ,结果为:这里有个双引号(")
转义符形成一些组合,表示一些不可打印的含义
例:""回退、" "换行(光标移动到下行首) 、" "回车(光标移动到本行首)
3.2字符串操作符
由0个或多个字符组成的有序字符序列
操作符及使用 | 描述 |
x + y | 连接两个字符串x和y |
n * x 或 x * n | 复制n次字符串x |
x in s | 如果x是s的紫川,返回True,否则返回Flase |
实例:
#获取星期字符串 weekStr = "星期一星期二星期三星期四星期五星期六星期日" WeekId = eval(input("请输入星期数字(1~7):")) pos = (WeekId - 1) * 3 print(weekStr[pos:pos+3])
3.3字符串处理函数
函数及使用 | 描述 |
len(x) |
长度,返回字符串x的长度 len("一二三456")结果为 6 |
str(x) |
任意类型x所对应的字符串形式 str(1.23)结果为"1.23",str([1,2])结果为"[1,2]" |
hex(x)或oct(x) |
整数x的十六进制或八进制小写形式字符串 hex(435)结果为"0x1a9",oct(425)结果为"0o651" |
chr(u) |
u为Unicode编码,但会其对应的字符 |
ord(x) | x为字符,返回其对应的Unicode编码 |
- Unicode编码
Python字符串的编码方式
统一字符编码,即覆盖几乎所有字符的编码方式
从0到1114111(0x10FFF)空间,每个编码对应一个字符
Python字符串中每个字符都是Unicode编码字符
实例:
# 输出星座图标 " 1 + 1 = 2 " + chr(10004) "这个字符♉的Unicode值是:" + str(ord("♉")) for i in range(12): print(chr(9800 + i ),end="") >>>♈♉♊♋♌♍♎♏♐♑♒♓
3.4字符串处理方法
"方法"在编程中是一个专有名词
"方法"特指<a>.<b>()风格中的函数<b>()
方法本身也是函数,但与<a>有关,<a>.<b>()风格使用
字符串及变量也是<a>,存在一些方法
一些以方法形式提供的字符串处理功能
方法及使用1/3 | 描述 |
str.lower()或str.upper() |
返回字符串的副本,全部字符小写/大写 "AbCdEfGh".lower()结果为 "abcdefgh" |
str.split(sep=None) |
返回一个列表,由str根据sep被分隔的部分组成 "A,B,C".split(",")结果为 ["A","B","C"] |
str.count(sub) |
返回子串sub在str中出行的次数 "a apple a day".count("a")结果为 4 |
方法及使用2/3 | 描述 |
str.replace(old,new) |
返回字符串str副本,所有old子串被替换为new "python".replace("n","n123.io") 结果为 "python123.io" |
str.center(width[,fillchar]) |
字符串str根据width居中,fillchar可选 "python".center(20,"=")结果为 "=======python=======" |
方法及使用3/3 | 描述 |
str.strip(chars) |
从str中去掉其左侧和右侧chars中列出的字符 "= python=".strip(" =np") 结果为 "ytho" |
str.join(iter) |
在iter变量除最后元素外每个元素后增加一个str ",".join("12345") 结果为 "1,2,3,4,5" #主要用于字符串分隔等 |
3.4.1字符串类型的格式化
- 槽
- format()方法的格式控制
槽内部对格式的化配置方式
{<参数序号>:<格式控制标记>}
3.5小结
- 正向递增序号、反向递减序号、<字符串>[M:N:K]
- +、*、len()、str()、hex()、ord()、chr()
- .lower()、upper()、.split()、.count()、.replace()
- center()、strip.()、join.()、.format()
4、模块:time库的使用
time库包括三类函数
- 时间获取:time()、ctime()、gmtime()
- 时间格式化:strftime()、strptime()
- 程序计时:sleep()、perf_counter()
1、时间获取
函数 | 描述 |
time() |
获取当前时间的时间戳,即计算机内部时间值,是浮点数。 >>>time.time()
151.6939876.6022282
|
ctime() |
获取当前时间并已易读方式表示,返回字符串。 >>>time.ctime() 'Fri Jan 23 17:15:26 2018' |
gmtime() |
获取当前时间,表示为计算机可处理的时间格式。 >>>time.gmtime() time.struct_time(tm_year=2018,tm_mon=1,tm_mday=26, tm_hour=4,tm_min=11,tm_sec=16,tm_wday=4,tm_yday=26,tm_isdst=0) |
2、时间格式化
将时间以合理的方式展示出来
-格式化:类似字符串格式化,需要有展示模版
-展示模版由特定的格式化控制符组成
-strftime()方法
-strptime()方法
函数 | 描述 |
strftime(tpl,ts) |
tpl是格式化模版字符串,用来定义输出效果 ts是计算机内部时间类型变量 >>>t = time.gmtime() >>>time.strftime("%Y-%m-%d %H:%M:%S",t) '2018-05-23 17:48:20' |
strfptime(str,tpl) |
tpl是格式化模版字符串,用来定义输出效果 str是计算机内部时间类型变量 >>>timeStr = '2018-05-23 20:29:20' >>>time.strptime(timeStr,"%Y-%m-%d %H:%M:%S") time.struct_time(tm_year=2018,tm_mon=1, |
格式化字符串 | 日期/时间说明 | 值范围和实例 |
%Y | 年份 | 0000~9999,例如:1900 |
%m | 月份 | 01~12,例如:10 |
%B | 月份名称 | January~December,例如:April |
%b | 月份名称缩写 | Jan~Dec,例如:Apr |
%d | 日期 | 01~31,例如:25 |
%A | 星期 | Monday~Sunday,例如:Wednesday |
%a | 星期缩写 | Mon~Sun,例如:Wed |
%H | 小时(24h制) | 00~23,例如;12 |
%h | 小时(12h制) | 01~12,例如:7 |
%p | 上/下午 | AM,PM,例如:PM |
%M | 分钟 | 00~59,例如:26 |
%S | 秒 | 00~59.;例如:26 |
3、程序计时
程序计时指应用广泛
-程序计时指测量起止动作所经历时间的过程
-测量时间:perf_counter()
-产生时间:sleep()
函数 | 描述 |
perf_counter() |
返回一个CPU级别的精准时间计数值,单位为秒 由于这个计数值起点不确定,连续调用差值才有意义 >>>start = time.perf_counter() 318.66599499718114 >>>end = time.perf_counter() 341.3965185375658 >>>end - start 22.724523540384666 |
sleep(s) |
s是休眠的时间,单位是秒,可以是浮点数 >>>def wait(): time.sleep(3.3) >>>wait() #程序将等待3.3秒后再退出 |
5、实例:文本进度条
方法论
实践能力