一,数字类型基础知识
- 整数类型
- 浮点数类型
- 复数类型
- 数值运算操作符
- 数值运算函数
1.整数类型(与数学中整数的概念一致)
- 对于整数类型可正可负,没有取值范围限制
- pow(x,y)函数:计算 xy,想算多大算多大(类似的嵌套使用)
>>> pow(2,100)
1267650600228229401496703205376
>>> pow(2,pow(2,15))
1415461031044954789001553…
|4种进制表示形式
- 十进制:1010, 99, -217
- 二进制,以0b或0B开头:0b010, -0B101
- 八进制,以0o或0O开头:0o123, -0O456
- 十六进制,以0x或0X开头:0x9a, -0X89
2.浮点数类型(与数学中实数的概念一致)
- 带有小数点及小数的数字
- 浮点数取值范围和小数精度都存在限制,但常规计算可忽略
- 取值范围数量级约-10307至10308,精度数量级10-16
- 浮点数间运算存在不确定尾数,不是bug:
>>> 0.1 + 0.3
0.4
>>> 0.1 + 0.2
0.30000000000000004
不确定尾数
0.1
0.00011001100110011001100110011001100110011001100110011010 (二进制表示)
53位二进制表示小数部分,约10-16
0.1000000000000000055511151231257827021181583404541015625 (十进制表示)
0.1 + 0.2
二进制表示小数,可以无限接近,但不完全相同
结果无限接近0.3,但可能存在尾数
解决的方法:
浮点数间运算存在不确定尾数
>>> 0.1 + 0.2 == 0.3
False
>>> round(0.1+0.2, 1) == 0.3
True
- round(x, d):对x四舍五入,d是小数截取位数
- 浮点数间运算与比较用round()函数辅助
- 不确定尾数一般发生在10-16左右,round()十分有效
- 浮点数可以采用科学计数法表示
- 使用字母e或E作为幂的符号,以10为基数,格式如下:
e 表示 a*10b - 例如:4.3e-3 值为0.0043 9.6E5 值为960000.0
3.复数类型(与数学中复数的概念一致)
数学意义自己找资料。
z = 1.23e-4+5.6e+89j
- 实部是什么? z.real 获得实部
- 虚部是什么? z.imag 获得虚部
>>> z=6.5+9j
>>> z.imag
9.0
>>> z.real
6.5
4.数值运算操作符(操作符是完成运算的一种符号体系)
操作符及使用描述:
数字类型的关系:
类型间可进行混合运算,生成结果为"最宽"类型
- 三种类型存在一种逐渐"扩展"或"变宽"的关系:
整数 -> 浮点数 -> 复数
- 例如:123 + 4.0 = 127.0 (整数+浮点数 = 浮点数)
5. 数值运算函数(一些以函数形式提供的数值运算功能)
二,字符串类型及操作
1.字符串类型的表示
字符串:由0个或多个字符组成的有序字符序列。
- 字符串由一对单引号或一对双引号表示
"请输入带有符号的温度值: " 或者 'C'
- 字符串是字符的有序序列,可以对其中的字符进行索引
"请" 是 "请输入带有符号的温度值: " 的第0个字
字符串有 2类共4种 表示方法
- 由一对单引号或双引号表示,仅表示单行字符串
"请输入带有符号的温度值: " 或者 'C'
- 由一对三单引号或三双引号表示,可表示多行字符串
1.字符串的使用:
使用[ ]获取字符串中一个或多个字符
- 索引:返回字符串中单个字符 <字符串>[M]
"请输入带有符号的温度值: "[0] 或者 TempStr[-1]
- 切片:返回字符串中一段字符子串 <字符串>[M: N]
"请输入带有符号的温度值: "[1:3] 或者 TempStr[0:-1]
2.字符串切片高级用法:
使用[M: N: K]根据步长对字符串切片
- <字符串>[M: N],M缺失表示至开头,N缺失表示至结尾
"〇一二三四五六七八九十"[:3] 结果是 "〇一二"
- <字符串>[M: N: K],根据步长K对字符串切片
"〇一二三四五六七八九十"[1:8:2] 结果是 "一三五七"
"〇一二三四五六七八九十"[::-1] 结果是 "十九八七六五四三二一〇"
字符串的特殊字符
转义符 \
- 转义符表达特定字符的本意
"这里有个双引号(\")" 结果为 这里有个双引号(")
- 转义符形成一些组合,表达一些不可打印的含义
"\b"回退 "\n"换行(光标移动到下行首) "\r" 回车(光标移动到本行首)
2.字符串操作符(由0个或多个字符组成的有序字符序列)
例子1(获取星期字符串):
weekstr='星期一星期二星期三星期四星期五星期六星期日'
number=eval(input('请输入星期对应的数字(1-7):'))
pos=(number-1)*3
print('数字对应是:{}'.format(weekstr[pos:pos+3]))
例子2(获取星期字符串):
weekstr='一二三四五六日'
number=eval(input('请输入星期对应的数字(1-7):'))
print('数字对应是:'+'星期'+weekstr[number-1])
3.字符串处理函数(一些以函数形式提供的字符串处理功能)
Unicode编码(Python字符串的编码方式):
- 统一字符编码,即覆盖几乎所有字符的编码方式
- 从0到1114111 (0x10FFFF)空间,每个编码对应一个字符
- Python字符串中每个字符都是Unicode编码字符
一些有趣的例子
Unicode编码
>>> "1 + 1 = 2 " + chr(10004)
'1 + 1 = 2 ✔'
>>> "这个字符♉的Unicode值是:" + str(ord("♉"))
'这个字符♉的Unicode值是: 9801'
>>> for i in range(12):
print(chr(9800 + i), end="")
♈♉♊♋♌♍♎♏♐♑♒♓
4.字符串处理方法
"方法"在编程中是一个专有名词。
- "方法"特指.()风格中的函数()
- 方法本身也是函数,但与有关,.()风格使用
- 字符串或字符串变量是,存在一些可用方法
- 一些以方法形式提供的字符串处理功能:
5. 字符串类型的格式化
(格式化是对字符串进行格式表达的方式)
- 字符串格式化使用.format()方法,用法如下:
<模板字符串>.format(<逗号分隔的参数>)
三,time库的使用
1.time库基本介绍
time库是Python中处理时间的标准库;
- 计算机时间的表达;
- 提供获取系统时间并格式化输出功能;
- 提供系统级精确计时功能,用于程序性能分析;
- 使用方法:
import time
time.<b>()
time库包括三类函数:
- 时间获取:time() ctime() gmtime()
- 时间格式化:strftime() strptime()
- 程序计时:sleep(), perf_counter()
2.时间获取
将时间以合理的方式展示出来;
- 格式化:类似字符串格式化,需要有展示模板
- 展示模板由特定的格式化控制符组成
- strftime()方法
3.时间格式化
4.程序计时应用
程序计时应用广泛
- 程序计时指测量起止动作所经历时间的过程
- 测量时间:perf_counter()
- 产生时间:sleep()
四,一些常见的问题:
转载至其他博客,请尊重原作者劳动成果:
Python多行字符串
五,代码实例
1.天天向上的力量基础版:
dayfactor = 0.005
dayup = pow(1+dayfactor, 365)
daydown = pow(1-dayfactor, 365)
print("向上的力量成果:{:.2f},向下的力量成果:{:.2f}".format(dayup, daydown))
2.天天向上的力量进阶:
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))
3. 文本进度条(简易版):
import 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("------执行结束------")
4. 文本进度条(基础版):
刷新的关键是 \r
- 刷新的本质是:用之后打印的字符覆盖之前的字符
- 不能换行:print()需要被控制
- 要能回退:打印后光标退回到之前的位置 \r
#单行动态刷新
import time
for i in range(101):
print("\r{:3}%".format(i), end="")
time.sleep(0.1)
如果,\r放在字符串的最后,理论上有覆盖写入的效果,但是print()输入时有字符串和回车键同时显示,那么将会显示效果上没有动态覆盖的效果,运行框内也不会有什么显示,所以一般\r会放在字符串最前面来覆盖写入,而\r与\n组成‘\r\n’组成类似‘Enter’功能使用,由于IDLE屏蔽了\r功能,我们可以选择在命令行或pycharm上运行:
5.文本进度条(完整进阶版):
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,'-'))
用python解释器从效果上看不出,建议使用pycharm或命令行上运行,其运行效果图:
最后,文中如有不足,请批评指正!谢谢!
人生苦短,我学python!
后面会更新相应的内容,敬请关注点赞!