基本数据类型(第三周)

3.基本数据类型

3.1数据类型和操作

3.1.1 整数类型

与数学中整数概念一致

  • 可正可负,没有取值范围
  • pow(x,y)函数:计算x^y,想算多大算多大(没有范围限制
pow(2,100)  #2^100
pow(2,pow(2,15)  

4种进制表示形式

  • 十进制:1010 ,99 ,-217
  • 二进制,以0b或0B()开头:0b010 ,-0B101
  • 八进制,以0o或0O开头(零o):0o123 , -0O456
  • 十六进制,以0x或0X开头:0x9a ,-0X89

3.1.2 浮点数类型

与数学中实数概念一致

  • 如:12.34
  • 浮点数取值范围和小数精度都存在限制(常规计算可忽略)
  • 取值范围数量级约-10307 至10308 ,精度数量级10-16

存在不确定位数 一般在小数后16位才会产生,不是BUG

>>>0.1+0.3
0.4
>>>0.1+0.2 #产生不确定位数
0.3000000004
>>>0.1+0.2
False
>>>round(0.1+0.2,1) == 0.3   # round函数,保留一位小数
>True
  • round(x,d):对x四舍五入,d是小数截取位数
  • 浮点数间的运算与比较用 round() 辅助

浮点数可以采用科学计数法表示

  • 使用e或E作为幂的符号,以10为基数,格式:
    4.3e-3 表示:4.3*10-3

3.1.3复数类型

与数学中复数概念一致

  • 定义 j=sqrt(-1) ,相当于数学中虚部的i
  • a+bj被称为复数,其中a是实部,b是虚部
z=1.23e-4+5.6e+89j
#相当于 1.23*10^-4+5.6*10^89i
z.real获得实部
z.image获得虚部

3.1.4数值运算操作符

操作符是完成运算的一种符号体系
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.1.5 数字类型的关系

类型间可进行混合运算,生成结果为“最宽”类型

  • 三种类型存在一种逐渐变宽的关系
    整数->浮点数->复数(其中复数最宽)
  • 例如:123+4.0=127.0(整数+浮点数=浮点数)

3.1.6数值运算函数

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

3.2 实例3:天天向上的力量

3.2.1 问题1(每天0.001)

在这里插入图片描述

#daydayup01
dayup=pow(1.001,365)
daydown=pow(0.999,365)
print("向上:{:.2f} 向下:{:.2f}".format(dayup,daydown))

3.2.2问题2

使用一个变量:只要修改一处就行了
在这里插入图片描述

#daydayup02
dayfacter=0.005    #dayfacter=0.01
dayup=pow(1+dayfacter,365)
daydown=pow(1-dayfacter,365)
print("进步:{:.2f} 向下:{:.2f}".format(dayup,daydown))

3.2.3问题3

在这里插入图片描述

#daydayup03
dayfacter=0.01
dayup=1
for i in range(365):
        if i%7 in [6,0]: #i%7=6或0的时候代表周末
            dayup=dayup*(1-dayfacter)
        else:
            dayup=dayup*(1+dayfacter)
print("工作日的力量:{:.2f}".format(dayup))

3.2.4问题4

在这里插入图片描述

#daydayup04

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
# 上面的def到return是个函数,然后下面while中dayfacter的值传给df,
# 之后返回dayup进行判断,若返回值大于37.78,则结束循环,输出dayfacter
dayfacter=0.01
while dayUP(dayfacter)<37.78:
    dayfacter+=0.001
print("工作日的努力参数:{:.3f}".format(dayfacter))

3.3字符串类型及操作

3.3.1 字符串类型的表示

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

  • 字符串由一对单引号或一对双引号表示
"请输入带有字符的温度值:"
'c'
  • 字符串是字符的有序序列,可以对其中的字符进行索引
    “请”“请输入带有字符的温度值:”的第0个字符

字符串有2类共4种 表示方法

  • 一对单引号或双引号,仅表示单行字符串
  • 一对三单引号或三双引号,表示多行字符串

'''python
	语言'''
	
如果希望字符串中包含某种引号,
则在该字符串最外面加上与这种引号不同的其他引号

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

3.3.2字符串操作符

在这里插入图片描述

  • 输入:1-7整数,表示星期几
  • 输出:输入整数对应的星期字符串
  • 例如:输入3,输出 星期三
weekstr = "星期一星期二星期三星期四星期五星期六星期日" #字符串下标从0开始
weekid = eval(input("请输入星期数字(1-7)"))
pos = (weekid-1)*3
print(weekstr[pos:pos+3])
优化:
weekstr = "一二三四五六日"
weekid = eval(input("请输入星期数字(1-7)"))
print("星期"+weekstr[weekid-1]) 

3.3.3 字符串处理函数

  • python采取Unicode编码字符
    在这里插入图片描述
    在这里插入图片描述
实例:
print("1+1=2"+chr(10004))
print(chr(9801))
print("这个字符♉的Unicode值是:"+str(ord("♉")))
加号只能连接两个字符串,
若要正确,则在ord外面加str()或者加上一对单引号或双引号
for i in range(12):
    print(chr(9800+i),end="")

3.3.4字符串处理方法

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

  • 方法指 < a >.< b>()风格中<b>()
  • 方法本身也是函数,但与< a >有关

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

print("ABCinS".lower())
print("A,B,C".split(",")) #根据前面出现的,将字符串分割几个部分
print("an apple a inay".count('a'))   #双引号也可以
print("python".replace("n","n123.io")) #字符串中所有n换成新字符
print("python".center(20,"=")) #共20字符,python居中,其他 = 填充
print("= python= ".strip(" np="))#删除字符串最外侧的字符,但不能越过字符删除
print(",".join("1234")) #给单个字符(1234)后面加 ,


3.3.5 字符串类型的格式化

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

  • 字符串格式化使用.format()方法,用法如下:
    <模板字符串>.format(<逗号分隔的参数>)

{ } 里数字顺序改变,则字符串的顺序就会改变在这里插入图片描述

槽内部对格式化的配置方式

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

print("{0:=^20}".format("python"))
 ^ 表示居中,20 表示输出的宽度  =表示以=填充
这个输出语句表示将python1居中输出,并且其他用=填充,控制长度为20
print("{0:,.2f}".format(1234.5678))
 , 表示数字的千位分隔符,  .2f表示保留两位小数
 c 表示字符形式输出
 b 表示以二进制数
 d 表示以十进制数
 o 表示以八进制数
 x 表示以小写十六进制数
 X 表示以大写十六进制数

3.4 模块2:time库的使用

3.4.1time库基本介绍

time库是python中处理时间的标准库
在这里插入图片描述
time库包括三类函数

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

3.4.2时间获取

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

import time
t=time.ctime()
m=time.time()
e=time.gmtime()
print(t)#当前时间
print(m)#计算机内部时间
print(e)#当前时间且计算机可以理解

3.4.3时间格式化

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

  • 格式化:类似字符串格式化,需要有展示模板
  • 展示模板由特定的格式化控制符组成
  • strftime()方法
    在这里插入图片描述
import time
t=time.ctime()
m=time.time()
e=time.gmtime()
print(t)#当前时间
print(m)#计算机内部时间
print(e)#当前时间且计算机可以理解
i=time.strftime("%Y-%m-%d %H:%M:%S",e)
print(i)

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

3.4.4程序计时应用

  • 程序计时指测量起止动作所经历时间的过程
  • 测量时间:perf_counter()
  • 产生时间:sleep()

在这里插入图片描述

import time
start = time.perf_counter()
print(start)
end = time.perf_counter()
print(end)
t=end-start
print(t)

在这里插入图片描述

3.5 实例4:文本进度条

需求分析

  • 采取字符串方式打印可以动态变化的文本进度条
  • 进度条需要能在一行中逐渐变化

获取文本进度条的变化时间

  • 采取sleep()模拟一个持续的进度

3.5.1简单的开始

#TextProBarV1.py
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("........执行结束......")

3.5.2单行动态刷新

\r表示退回到行首
在这里插入图片描述

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

3.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}%[{}->{}s]".format(c,a,b,dur),end="")
    time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ღ江晚吟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值