Python语言程序设计 第三周 基本数据类型

基本数据类型## 标题

#TempCovert.py
TempStr = input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
	C = (eval(TempStr[0:-1])-32)/1.8
	print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
	F = 1.8*eval(TempStr[0:-1])+32
	print("转换后的温度是{:.2f}F".format(F))
else:
	print("输入的格式错误")		

import turtle
turtle.fd(100)
turtle.left(90)
turtle.fd(100)
turtle.left(45)
turtle.fd(140)

数字类型及操作
pow(x,y)函数:计算x的y次方;

整数类型
4种进制表示形式
十进制:1010,99,-217
二进制,以0b或0B开头:0b010,-0B101
八进制,以0o或0O开头:0o123,-0O456
十六进制,以0x或0X开头:0x9a,-0X89

浮点类型
与数学中实数的概念一致
带有小数及小数的数字
浮点数取值范围和小数精度都存在限制,但常规计算可以忽略
取值范围数量级约-10^308 10^308,精度数量级为10的-16次方

浮点数类型
浮点数间运算存在不确定尾数,不是bug
在这里插入图片描述

浮点数类型
浮点数间运算存在不确定尾数

>>> 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()十分有效

在这里插入图片描述

关于Python浮点数,需要多知道一些
取值范围和精度基本无限制
运算存在不确定尾数round()
浮点数的科学计数法表示

复数类型

复数实例
z = 1.23e-4+5.6e+89j
实部是什么? z.real获得实部
虚部是什么? z.imag 获得虚部

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

操作符及使用描述

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

数字类型的关系
类型间可进行混合运算,生成结果为"最宽"类型
三种类型存在一种逐渐"扩展"或"变宽"的关系:
整数->浮点数->复数
例如:123+4.0 = 127.0(整数+浮点数 = 浮点数)

数值运算函数

数值运算函数
一些以函数形式提供的数值运算功能
函数及使用 以及描述
abs(x) 绝对值,x的绝对值 abs(-10.01)结果为10.01
divmod(x,y) 商余,(x//y,x%y),同时输出商和余数 divmod(10,3)结果为(3,1)
pow(x,y[,z]) 幂余,(x**y)%z,[…]表示参数z可省略 pow(3,pow(3,99),10000)结果为4587
round(x[,d]) 四舍五入,d是保留小数位数,默认值为0 round(-10.123,2) 结果为-10.12
max(x1,x2,…,x3) 最大值,返回x1,x2,…,xn中的最大值,n不限 max(1,9,5,4,3)结果为9
min(x1,x2,…xn) 最小值,返回x1,x2,…,xn中的最小值,n不限 min(1,9,5,4,3)结果为1
int(x) 将x变成整数,舍弃小数部分 int(123.45)结果为123;int(“123”)结果为123
float(x) 将x变成浮点数,增加小数部分 float(12)结果为12.0;float(“1.23”)结果为1.23
complex(x) 将x变成复数,增加虚数部分 complex(4)结果为4+0j

数字类型及操作
整数类型的无限范围及4种进制表示
浮点数类型的近似无限范围、小尾数及科学计数法
+、-、*、/、//、%、**、二元增强赋值操作符
abs()、divmod()、pow()、round()、max()、min()、int()、float()、complex()

天天向上的力量

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

在这里插入图片描述

#DayDayUpQ2.py
dayfactor = 0.005
dayup = pow(1+dayfactor,365)
daydown = pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

在这里插入图片描述

#DayDayUpQ3.py
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))   

在这里插入图片描述

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

根据df参数计算工作日力量的函数,参数不同,这段代码可共用,def保留字用于定义函数
while保留字判断条件是否成立,条件成立时循环执行

#DayDayUpQ4.py
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))					

在这里插入图片描述
在这里插入图片描述
字符串类型及操作

字符串类型的表示
字符串操作符
字符串处理函数
字符串处理方法
字符串类型的格式化

字符串类型的表示

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

字符串
字符串有2类共四种表示方法
如果希望在字符串中包含双引号或单引号呢?
‘这里有个双引号(")‘或者"这里有个单引号(’)“单引号
如果希望在字符串中既包括单引号又包括双引号呢?
‘’‘这里既有单引号(’)又有双引号(”)’’’

在这里插入图片描述

字符串的使用
使用[]获取字符串中一个或多个字符
索引:返回字符串中单个字符 <字符串> [M]
“请输入带有符号的温度值:”[0]或者TempStr[-1]
切片:返回字符串中一段字符子串 <字符串>[M:N]
“请输入带有符号的温度值:”[1:3]或者 TempStr[0:-1]

字符串切片的高级用法
使用[M:N:K]根据步长对字符串切片
<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾
“O一二三四五六七八九十”[:3]结果是"O一二"
<字符串>[M:N:K],根据步长对K字符串切片
“O一二三四五六七八九十”[1:8:2]结果是"一三五七"
“O一二三四五六七八九十”[::-1]结果是"十九八七六五四三二一O"

字符串的特殊字符
转义符
转义符表达特定字符的本意
“这里有个双引号(”)“结果为 这里有个双引号(”)
转义符形成的一些组合,表达一些不可打印的含义
"\b"回退 "\n"换行(光标移动到下行首) "\r"回车(光标移动到本行首)

字符串操作符
由0个或多个字符组成的有序序列
操作符及使用以及描述
x+y 连接两个字符串x和y
nx或xn 复制n次字符串x
x in s 如果x是s的子串,返回true,否则返回false

获取星期字符串
输入:1-7的整数,表示星期几
输出:输入整数相对应的星期字符串
例如:输入3,输出 星期三

#WeekNamePrintV1.py
weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input("请输入星期数字(1-7):"))
pos = (weekId - 1)*3
print(weekStr[pos:pos+3])

#WeekNamePrintV2.py
weekStr = "一二三四五六日"
weekId = eval(input("请输入星期数字(1-7):"))
print("星期" + weekStr[weekId - 1])


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


槽相当于一个占位信息符
在这里插入图片描述
在这里插入图片描述
python语言使用槽机制和format方法来形成字符串的格式化
在这里插入图片描述
在这里插入图片描述
第三种默认情况下填充为空格,默认左对齐
在这里插入图片描述
在这里插入图片描述
字符串的类型及操作
正向递增序号、反向递减序号、<字符串>[M:N:K]
+、*、len()、str()、hex()、oct()、ord()、chr()、
.lower()、.upper()、.split()、.count()、.replace()
.center()、.strip()、.join()、.format()格式化

3.4 模块2 time 库的使用
time库基本介绍
time库的使用
time库是python中处理时间的标准库
计算机时间的表达
提供获取系统时间并格式化输出功能
提供系统级精确计时功能,用于程序性能分析
import time
time.()

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

时间获取
time() 获取当前时间戳,即计算机内部时间值,浮点数

>>>time.time()
1621392441.1370578

ctime() 获取当前时间并以易读方式表示,返回字符串

>>> time.ctime()
'Wed May 19 10:49:07 2021'

gmtime() 获取当前时间,表示为计算机可处理的时间格式

>>> time.gmtime()
time.struct_time(tm_year=2021, tm_mon=5, tm_mday=19, tm_hour=2, tm_min=50, tm_sec=8, tm_wday=2, tm_yday=139, tm_isdst=0)

时间格式化
将时间以合理的方式展示出来
格式化:类似字符串格式化,需要有展示模板
展示模板由特定的格式化控制符组成
strftime()方法
tpl格式化模板参数,用来定义输出效果

函数及描述
strftime(tpl,ts) tpl是格式化模板字符串,用来定义输出效果 ts是计算机内部时间类型变量

>>> t = time.gmtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S",t)
'2021-05-19 03:01:55'

在这里插入图片描述

在这里插入图片描述

时间格式化

>>> t = time.gmtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S",t)
'2021-05-19 03:31:17'
>>> timeStr = '2021-05-19 03:31:17'
>>> time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2021, tm_mon=5, tm_mday=19, tm_hour=3, tm_min=31, tm_sec=17, tm_wday=2, tm_yday=139, tm_isdst=-1)

strptime(str,tpl) str是字符串形式的时间值
tpl是格式化模板字符串,用来定义输入效果

>>> timeStr = '2021-05-19 03:31:17'
>>> time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
time.struct_time(tm_year=2021, tm_mon=5, tm_mday=19, tm_hour=3, tm_min=31, tm_sec=17, tm_wday=2, tm_yday=139, tm_isdst=-1)

程序计时应用
程序计时应用广泛
程序计时指测量起止动作所经历时间的过程
测量时间:perf_counter()

perf_counter() 返回一个CPU级别的精确时间计数值,单位为s,由于这个计数值起点不确定,连续调用差值才有意义

>>> start = time.perf_counter()
>>> end = time.perf_counter()
>>> end-start
27.368443500000012
>>> print(start)
3200.6218802
>>> print(end)
3227.9903237

sleep(s) s拟休眠的时间,单位是秒,可以是浮点数

>>> def wait():
	time.sleep(3.3)
>>> wait()#程序将等待3.3s后再退出
>>>

当前程序会休眠3.3秒后退出,所谓休眠就是指程序停在那里3.3s

time库的使用总结
时间获取:time() ctime() gmtime()
时间格式化:strftime() strptime()
程序计时:perf_counter() sleep()

3.5文本进度条
文本进度条问题分析
文本进度条
采用字符串方式打印可以动态变化的文本进度条
进度条需要能在一行中逐渐变化

如何获得文本进度条的变化时间?
采用sleep()模拟一个持续的进度
似乎不那么难

“文本进度条”简单的开始

#TextProBarV1.py
import time
scale = 10
print("------执行开始------")
for i in range(scale+1):
    a = '*' * i		#*复制i次
    b = '.' * (scale - i)
    c = (i/scale)*100
    print("{:^3.0f}%[{}-->{}]".format(c,a,b))
    time.sleep(0.1)
print("------执行结束------")

文本进度条的单行动态刷新
刷新的本质是:用后打印的字符覆盖之前的字符
不能换行:print()需要被控制
要能回退:打印后光标退回到之前的位置 \r

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

文本进度条

#TextProBarV1.py
import time
scale = 50
print("执行开始".center(scale//2,"-"))
start = time.perf_counter()
for i in range(scale+1):
    a = '*' * i		#*复制i次
    b = '.' * (scale - i)
    c = (i/scale)*100
    print("\r{:^3.0f}%[{}-->{}]{:.2f}s".format(c,a,b,dur), end='')
    time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))

文本进度条举一反三
计算问题扩展
文本进度条程序使用了perf_counter()计时
计时方法适合各类需要统计时间的计算问题
例如:比较不同算法时间、统计部分程序运行时间
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值