1.3python数字类型,字符串类型以及time库的使用

一,数字类型基础知识

  • 整数类型
  • 浮点数类型
  • 复数类型
  • 数值运算操作符
  • 数值运算函数

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!
后面会更新相应的内容,敬请关注点赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值