MOOC课程python语言程序设计——3 基本数据类型

3.1数字类型及操作

①整数类型:与数学中的整数概念一致

  • 十进制
  • 二进制:以0B或0b开头
  • 八进制:以0o或0O开头
  • 十六进制:以0x或0X开头

②浮点数类型:与数学中实数的概念一致

  • 与整数不同的是:浮点数取值范围和小数精度都存在限制,但常规计算可以忽略不计
  • 存在不确定尾数,即0.1+0.2输出0.30000000000000000004 (原因是因为计算机的存储是二进制,而二进制和十进制之间存在不严格的对等关系)
  • 浮点数间运算和比较,用Round。Round(x,d):对x四舍五入,d是小数截取位数
  • 可以采用科学计数法表示,e/E代表10为基数的幂

③复数类型只有python语言提供了复数类型!!!a+bj

  • 进行空间变换以及复变函数体系中使用

数字类型间可以进行混合运算,生成结果为最宽/最扩展的类型


数值运算操作符号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数值运算函数:内置函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 实例

工作日努力1%,休息日下降1%,每周双休,那么一年365天可以进步多少呢?

dayfactor = 0.01
daydayup = 1
# 采用的计算思维:for...in...结构
for i in range(365):
    if i % 7 in [5,6]:
        daydayup = daydayup * (1-dayfactor)
    else:
        daydayup = daydayup * (1+dayfactor)
print("每周休息两天的全年进步:{:.2f}".format(daydayup))

相比与每天都努力1%来说,要在工作日努力多少才能和每天努力1%一样呢?

# 利用计算机的笨方法思维,定义一个函数来找到工作日的努力效率
def factor(daydayup,B,dayfactor):
    b = 0.01
    while daydayup < B:
       b = b + 0.001 
       daydayup = 1
 ##############################################
       for i in range(365):
            if i % 7 in [6,0]:
                daydayup = daydayup* (1-dayfactor)
            else:
                daydayup = daydayup * (1+b)
###############################################################
    return b

dayfactor = 0.01
daydayup = 1
everyday = daydayup * pow((1+dayfactor),365)
b = factor(daydayup,everyday,dayfactor)
print("工作日的努力参数是:{:.3f}".format(b))

注意:

  • ①循环结构中的包含关系!!!每个循环部分包含的是比自己空格数更多且相同的程序,对齐的话就不是循环部分里面的了,而是循环结尾后下一步的操作
    ② 每次对新参数b计算时,daydayup要重置为1,而不是0!!!!
    ③循环结构中,参数b = b + 0.001的位置要注意,如果是放置在循环体最后,那么当while满足条件后,我们会多加一次,得到的不是真是的b值
    下图是源程序
    在这里插入图片描述

3.3 字符串类型及操作

字符串两类四种表达方式:

  • 单行字符串:双或单引号" "/’ ’
  • 多行字符串:三双或单引号 ‘’’ ‘’’/""" “”"
  • 如果字符串中有双引号或单引号:双引号外用单引号,单引号外用双引号
  • 如果字符中既有双引号又有单引号:用三单引号

字符串序号:

  • 正向递增序号:0 1 2 …
  • 反向递增序号:-1,-2

在这里插入图片描述

  • 索引str[m]
  • 切片str[M:N:K],k—步长

特殊字符:

  • 转义符\:转义符后面的符号表达字符的本意
  • \b回退 , \n换行 ,\r回车

字符串处理函数:
在这里插入图片描述
在这里插入图片描述

Unicode编码:它是Python字符串的编码方式

  • 统一字符编码,每个编码对应一个字符
    0~1114111(0x10FFFF)空间

典型的字符串处理方法:
+ 在这里插入图片描述
+ 在这里插入图片描述
在这里插入图片描述

方法:
①方法特指 <a>.<b>()风格中的函数<b>(),方法的使用必须要加一个点.
②本身也是函数,但与<a>有关
③在面向对象编程中,<a>其实是对象,<b>是对象所提供的功能,也叫方法


字符串类型的格式化:槽机制和.format方法

  • 格式化是对字符串进行格式表达的方式:<模板字符串>.format(<逗号分隔的参数>)
  • 槽{ }:表示占位符,只在字符串中有用,槽中可以调整参数序号。eg:1 0 2
    • 在这里插入图片描述
  • format()方法的格式控制:{<参数序号>:<格式控制标记>},其中冒号后面的格式控制标记具体内容如下:
    • 填充、对齐、宽度: {0:=^20}.format("PYTHON")

    • 在这里插入图片描述

    • 逗号<:,>、精度<:.精度>、类型:

      ,是数字的千位分隔符
      类型:b—二进制,:c—Unicode编码,:d—十进制,:o—八进制,:x—十六进制,:X—大写的十六进制

    • 在这里插入图片描述

3.4 time库的使用

time库是python中处理时间的标准库;time库包含三类函数,调用的时候是time.<b>
①时间获取:time() / ctime() / gmtime()

时间戳:从1970.01.01到现在时间的总秒数在这里插入图片描述
在这里插入图片描述

②时间格式化:strftime() / strptime():这两个是一个互补关系,前者将时间转为字符串;后者将给出的字符串转为时间

在这里插入图片描述
在这里插入图片描述
time库中有很多控制符,都是以 %+一个字母 的形式来表达的在这里插入图片描述
在这里插入图片描述

③程序计时:sleep() / perf_counter():程序运行到结束的时间

在这里插入图片描述

3.5实例:文本进度条

文本进度条的多行动态显示:

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("------执行结束------")

文本进度条的单行动态刷新:

  • 刷新:用后打印的字符覆盖之前的字符
  • 不能换行:print()函数需要被控制,则回退\r
import time
for i in range(101):
    print('\r{:3}%'.format(i),end="") #\r退到行首,,end=""不换行
    time.sleep(0.1)

整合上面两个得到的文本进度条的动态刷新:

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,"-"))

举一反三:比较不同算法的时间、程序运行时间、在人机交互中增加进度条(比如,计算机下载了90%的时候显示只下载了10%)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值