Python基础(三)基本数据类型

一、数字类型及操作

(1)整数类型

  • 与数学中整数的概念一致,可正可负,没有取值范围限制

  • pow(x, y) 函数,计算 x ^ y (想算多大能算多大)

  • 4种进制表示形式:

      1.十进制:1024 、 98 、 -127
      2.二进制:0b或者0B开头:0b011,-0B1011
      3.八进制:以0o或0O开头:0o124,0O5567
      4.十六进制:以0x或者0X开头:0x9a,-0X87
    

(2)浮点数类型

  • 与数学中实数的概念一致,带有小数点及小数的数字,浮点数取值范围和小数精度都存在限制,但是在常规计算中可忽略,因为取值范围数量级约 -10^308 ~ 10^308 ,精度的数量级是10^(-16)。
  • 浮点数之间运算存在不确定尾数,不是bug
  • 使用 round 函数,round(x, d) 对 x 进行4舍5入,d是小数截取位数。浮点数比较运用 round() 函数辅助,不确定尾数一般发生在 10^(-16) 左右,round() 十分有效。
  • 浮点数可以采用科学计数法来表示,使用 e 或 E 作为幂的符号,以 10 为幂数, < a >e< b >,表示 a * 10^b,如 4.3e-3, 9.6E5

(3)复数类型

  • 与数学中的复数的概念一致
  • a + bj

(4)数值运算操作符

  • +加、-减、*乘、/除(除的运算结果是浮点数类型,10/3 = 3.3333333333333335)

  • x // y 整数除,x 与 y的整数商,10 // 3 = 3

  • +x 表示 x 本身,-x 表示 x 的负值

  • x % y 取余数,模运算 10 % 3 = 1

  • x**y 幂运算,x 的 y 次幂,当 y 是小数时,开方运算,10* * 0.5 = √10

  • 二元操作符有对应的增强赋值操作符

     x  op = y  op为二元操作符
     x += y       x -= y       x*=y      x /= y
     x  //= y     x %= y       x ** =y
    

(5)数字类型的关系

  • 类型间可进行混合运算并生成结果为“最宽”类型
  • 逐渐变宽 整数------> 浮点数------>复数

(6)数值运算函数

  • abs(x) 求绝对值
  • divmod(x, y) 商余,(x // y, x % y) 同时输出商和余数,divmod(10, 3) 结果为 (3,1)
  • pow(x, y [,z]) 幂余,(x ** y) % z
  • round(x, [,d]) 四舍五入,d 是保留小数位数,默认是 0
  • max(x1, x2, x3…xn) 最大值
  • min(x1, x2, x3…xn) 最小值
  • int(x) 将 x 变为整数,舍弃小数部分,int(123.45) 为 123,int(“123”) 为 123
  • float(x) 将 x 变为浮点数,增加小数部分,float(12) 为 12.0,float(“1.34”) 为 1.34
  • complex(x) 将 x 变为复数,增加虚数部分,complex(4) 结果为 4+0j

二、实例3:天天向上的力量

(1)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/7/31 18:01
# @Author  : 小白的Soda
# @File    : DayDayUp01.py
# @Software: PyCharm
dayUp = pow(1.001, 365)
dayDown = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayUp, dayDown))

(2)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/7/31 18:01
# @Author  : 小白的Soda
# @File    : DayDayUp02.py
# @Software: PyCharm
dayFactor = 0.005
dayUp = pow(1 + dayFactor, 365)
dayDown = pow(1 - dayFactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayUp, dayDown))

(3)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/7/31 18:01
# @Author  : 小白的Soda
# @File    : DayDayUp03.py
# @Software: PyCharm
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)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/7/31 18:01
# @Author  : 小白的Soda
# @File    : DayDayUp04.py
# @Software: PyCharm
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.09
print("工作日的努力参数是:{:.3f}".format(dayfactor))

三、字符串类型及操作

(1)字符串

由0个或者多个字符组成的有序字符序列

  • 字符串由一对单引号或者双引号表示
    “请输入带有符号的温度值:” 或者 ‘C’

  • 字符串是字符的有序序列,可以对其中的字符进行索引
    “请输入带有符号的温度值:” 中 "请"是第0个字符

  • 字符串有2类共4种表示方式,使得单引号和双引号在字符串中的出现变得很好处理

  • 字符串切片高级用法:

      使用 [M : N : K] 根据步长对字符串切片
      - <字符串>[M :N] 中M缺失表示至开头,N缺失表示至结尾
      - <字符串>[M:N:K] 根据步长 K 对字符串切片
      "零一二三四五六七八九十"[1:8:2]    结果是   "一三五七"
      "零一二三四五六七八九十"[::-1]     结果是   "十九八七六五四三二一零"
    
  • 转义符 \ :转义符表达特定字符的本意,也可形成一些组合,表达一些不可打印的含义

      "\b"     回退
      "\n"     换行,光标移动到下行首
      "\r"     回车,光标移动到本行首
    

(2)字符串操作符

由0个或者多个字符组成的有序字符序列

  • x + y :连接两个字符串 x 和 y
  • nx 或者 xn:赋值 n 次字符串 x
  • x in s:如果x是s的字串,则返回True,否则返回False

(3)字符串处理函数

一些以函数形式提供的字符串处理功能

  • len(x) 长度,返回字符串x的长度
  • str(x) 任意类型x所对应的字符串形式
  • hex(x)或者oct(x) 整数x的十六进制或者八进制小写形式字符串
  • chr(u) u为Unicode编码,返回其对应的字符
  • ord(x) x为字符,返回其对应的Unicode编码
    Python的字符串编码方式为:Unicode

(4)字符串处理方法

“方法”在编程中是一个专有名词。

  • “方法”特指 < a >.< b >() 风格中的函数 < b >()
  • 方法本身也是函数,但与 < a > 有关,< a >.< b >() 风格使用
  • 字符串及变量也是 < a >,存在一些方法
  • str.lower() 或者 str.upper() 返回字符串的副本,全部字符小写 / 大写
  • str.split(seb = None) 返回一列表,由 str 根据 sep 被分隔的部分组成
    “A,B,C”.split(",") 结果 [“A”,“B”,“C”]
  • str.count(sub) 返回字串在str中出现的次数
  • str.replace(old, new) 返回字符串str副本,所有old字串替换为new
    “Python”.replace(“n”,“n123.io”) 为 “Python123.io”
  • str.center(width [,fillchar]) 字符串str根据宽度width居中,fillchar 可选
  • str.strip(chars) 从str中去掉在其左侧和右侧chars中的字符
    “= python= “.strip(” =np”) 结果为“ytho”
  • str.join(iter) 在iter变量除最后元素外每个元素后增加一个str
    “,”.join(“12345”) 结果为“1,2,3,4,5”

(5)字符串类型的格式化

格式化是对字符串进行格式化表达的方式

  • 字符串格式化使用.format() 方法,用法如下

      <模板字符串>.format(<逗号分隔的参数>)
      槽  :{ } : 只在字符串中有效
    

在这里插入图片描述
在这里插入图片描述

四、模块2:time库的使用

(1)time库

  • 是Python中处理时间的标准库

  • 计算机时间的表达

  • 提供获取系统时间并格式化输出功能

  • 提供系统级精确计时功能,用于程序性能分析

  • 使用:

      import time
      time.<>()
    

(2)time库包括三类函数

  • 时间获取:time() 、ctime() 、gmtime()
  • 时间格式化:strftime() 、strptime()
  • 程序计时:sleep() 、perf-counter()

(3)时间获取

  • time() ------ time.time() 获取当前的时间戳,浮点数,格林威治历,秒数
  • ctime() ------ time.ctime() 获取当前时间并以易读方式表示返回字符串
  • gmtime() ------ time.gmtime() 获取当前时间,并表示为计算机可处理格式

(4)时间格式化

将时间以合理的方式展示出来

  • 格式化:类似字符串格式化。需要展示模板

  • 展示模板由特定的格式化控制符组成

  • strftime() 方法:

      strftime(tql, ts)  tql是格式化模板字符串,用来定义输出效果,ts是计算机内部时间类型变量
      >>> t = time.gmtime()
      >>> time.strftime("%Y-%m-%d %H:%M:%S", t)
      >>> '2018-01-26 12:55:20'
      %Y        年份         0000-9999
      %m        月份         01-12
      %B        月份名称     January-December
      %b        月份名称缩写 Jan-Dec
      %d        日期         01-31
      %A        星期         Monday-Sunday
      %a        星期缩写     Mon-Sun
      %H        小时(24)   00-23
      %I        小时(12)   01-12
      %p        上 /下午     AM/PM
      %M        分钟         00-59
      %S        秒           00-59
    

(5)程序计时应用

  • 程序计时指测量起止动作的经历时间的过程
  • 测量时间:perf-counter() 返回一个cpu级别精确时间计数值,单位:s
  • 产生时间:sleep(s) s拟休眠的时间,可以是浮点数

五、实例4:文本进度条

(1)简单版本

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/8/1 15:05
# @Author  : 小白的Soda
# @File    : TextProBarV1.py
# @Software: PyCharm
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("------执行结束------")

结果:
在这里插入图片描述

(2)文本进度条单行动态刷新

  • 刷新的本质:用后打印的字符覆盖之前的字符
  • 不能换行
  • 要能回退
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/8/1 15:05
# @Author  : 小白的Soda
# @File    : TextProBarV2.py
# @Software: PyCharm
import time

for i in range(101):
    print("\r{:3}%".format(i), end="")
    time.sleep(0.1)

效果:
在这里插入图片描述
在这里插入图片描述

(3)完整效果

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2021/8/1 15:05
# @Author  : 小白的Soda
# @File    : TextProBarV3.py
# @Software: PyCharm
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, '-'))

效果:
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白的Soda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值