Python基本数据类型2

本文详细介绍了Python中字符串的操作符、处理函数、方法,包括字符串连接、复制、查找、格式化等,并展示了字符串在实际问题中的应用,如输出星期几。同时,讲解了时间处理,包括获取系统时间、时间格式化以及程序计时的方法,如time库的time(), ctime(), strftime()等函数。还提供了文本进度条的实现示例,强调了动态刷新和回退的概念。
摘要由CSDN通过智能技术生成

3.3.2字符串操作符

  1. x + y +号连接两个字符串
  2. x * n 或n * x其中n为整数,代表将字符串x复制n次
  3. x in n 若x是字符串n的子串返回结果为TRUE,否则结果为False
  4. 输入1-7的整数,输出星期几。
weekStr = "星期一星期二星期三星期四星期五星期六星期日"
weekId = eval(input("请输入1-7的整数:"))  #input函数获取的为字符串类型,需要eval函数将双引号去掉
pos = (weekId - 1) * 3
print(weekStr[pos : pos+3])

上述代码中重复出现了星期,可以换成以下代码。

weekStr = "一二三四五六日"
weekId = eval(input("请输入1-7的整数:"))  
pos = weekId - 1
print("星期" + weekStr[pos])

3.3.3字符串处理函数

  1. len(x):返回字符串x的长度。例len(“一2三”)结果为3
  2. str(x):将x转成对应的字符串形式。例str(1.2)结果为"1.2"。注意与eval函数区别,该函数是为任意类型加上双引号,而eval函数是去掉字符串的双引号改变数据类型。
  3. hex(x)或oct(x):整数x的十六进制或八进制小写形式。hex(425)结果为“0x1a9” oct(425)结果为"0o651"。
  4. chr(u):返回Unicode码中u对应的字符;ord(x):返回x对应的Unicode码。
  5. Unicode码:统一字符编码,与ASCLL码一样是Python字符串的编码方式
    ——覆盖几乎所有字符编码方式,可用来表示中文等不同国家文字字符
    ——从0到1114111(0x10FFFF)空间,每个编码对应一个字符
    ——Python字符串中每个字符都是Unicode编码字符
  6. 轻松一刻:我们可以利用Unicode码输出各种自己想要的字符,用下面两行代码就能输出12星座的符号。
for i in range(12):
    print(chr(9800 + i), end="")#有end=""时一行输出

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

3.3.4字符串处理方法

  1. 方法是特指 < a >.< b >()风格中的函数< b >()。方法本身也是函数但与a有关,使用时< a >.< b >()。
  2. 字符串方法
方法描述及实例
str.lower()将字符串转成小写,“ABC”.lower()结果为"abc"
str.upper()将字符串转成大写,“abc”.lower()结果为"ABC"
str.split(sep=None)返回一个列表,str根据sep被分隔的部分组成。“A,B,C”.split(“,”)结果为[‘A’,‘B’,‘C’]
str.strip(chars)只要头尾包含有指定字符序列中的字符就删除,“= python= “.strip(” =np”)结果为“ytho”
str.count(sub)返回子串sub在str 中出现的次数,“an apple”.count(“a”)结果为2
str.replace(old , new)返回str副本,所有old子串被替换成new,“python”.replace(“n” , “n123.o”)结果为"python123.o"
str.center(width [, fillchar])字符串str居中,fillchar可选。“Python”.center(20 , “=”)结果“======= Python =======”
str.join(iter)在iter变量除最后元素外每个元素后增加一个str,“,”.join(“12345”)结果为"1,2,3,4,5"

3.3.5字符串类型的格式化

  1. 字符串通过槽和format函数实现格式化,槽用{}表示,使用方式:<字符串模板>.format(<逗号分隔的参数>)。
  2. 槽和format后的参数可以是相对应,也可更改。例如"{}:计算机的{}占{}%“.format(“2010-12-02”,“C”,10)。{}从左至右的下标为0,1,2 。format中参数从左至右标号也为0,1,2。当槽即{}中不填写下标时,format中参数与{}从左至右相对应。结果为2010-12-02:计算机的C占10%。若槽中填写下标,即”{1}:计算机的{0}占{2}%"结果为C:计算机的2010-12-02占10%。
  3. 槽内部格式化配置方式{<参数序号>:<格式控制标记>}。:为引导符
格式说明及实例
< 填充>用于填充单个字符
<对齐><:左对齐,>右对齐,^居中对齐
<宽度>槽设定的输出宽度
<,>数字千位分隔符
<.精度>浮点数小数精度或字符串最大输出长度
<类型>整数类型b,c,d,o,x,X 浮点数类型e,E,f,%

例如"0:=^20".format(“PYTHON”)结果为PYTHON居中,20个字符,空字符用=代替
“======= PYTHON =======”。该实例用到了前三个填充,对齐,宽度。省略数字时"{:10}".format(“BIT”)默认左对齐,填充的是空格,宽度为10
“{0:,.2f}”.format(11223.123)结果为11,223.12用到了<,>和<.精度>
“{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}”.format(425)
b输出二进制形式,c输出Unicode码带代表的符号,d输出十进制形式,o输出八进制形式,x,X均输出十六进制形式,只是10—15用大写字母还是小写字母表示的区别。

3.4time库的使用

3.4.1time库基本介绍

——计算机的时间表达;
——提供获取系统时间并格式化输出功能
——提供系统级精确计时功能,用于程序性能分析。
使用方式:

import time
time.<b>() 
  1. time库的三类函数
类型函数名
时间获取time() ctime() gtime()
时间格式化strftime() strptime()
程序计时sleep() , perf_counter()

3.4.2时间获取

import time
time.time()#获取浮点类型自1970年至今的秒数
time.ctime()#获取字符串类型当前时间的易读方式
time.gtime()#获取计算机容易处理的时间类型

3.4.3时间格式化

  1. 格式化类似字符串格式化,需要展示模板。展示模板由特定格式化控制符组成。
  2. strftime()方法用来实现时间格式化,与strptime()方法对应。
函数描述
strftime(tpl,ts)参数tpl字符串类型,定义输出效果,ts为计算机内部时间类型变量。
strptime(timeStr,“%Y-%”)
>>>import time
>>>t = time.gmtime()# gmtime是把日期和时间转换为格林威治(GMT)时间(英国格林威治市的时间)的函数
>>>time.strftime("%Y-%m-%d %H:%M:%S",t) 

上面的代码能够正常输出结果
将上述代码写入file文件中时,如果不加print函数,则无任何输出。

import time
t = time.gmtime()
d = time.strftime("%Y-%m-%d %H:%M:%S",t)
print(d)
  1. 格式化字符串
格式化字符串说明
%Y年份,0000—9999,例如:1900
%B月份名称,January—December,如:April
%b月份名称缩写,Jan—Dec,Apr
%A星期,Monday—Sunday,如:Wednesday
%a星期缩写,Mon~Sun,如Wed
%H小时24小时制,00~23
%I小时12小时制,01-12
%p上/下午。AM,PM例如AM
%M分钟,00~59
%S秒,00~59
  1. strptime()方法,与strftime()方法相对应。
语法格式描述
time.strptime(string[, format])函数根据指定的格式把一个时间字符串解析为时间元组。
>>>import time
>>>timeStr = "2019-09-18 16:23:22"
>>>time.strptime(timeStr,"%Y-%m-%d %H:%M:%S")
#输出结果中,tm_isdst 是指传入的时间是否是 DST(夏令时),夏令时是指为了节约能源而人为设定时间

当上述代码写入文件中时,区别与上面的strftime类似。

  1. 计算机表达时间用的是浮点数。程序能理解的格式由gmtime函数获得struct_time,浮点数提取出的struct_time。字符串反格式化只在特定程序中使用。

3.4.4程序计时应用

  1. 程序计时应用广泛 ,包括测量时间和
  2. 测量时间:perf_counter(),获得精准的纳秒计算时间;产生时间函数:sleep()。
函数描述
perf_counter()返回CPU级别的精确时间计数值,单位为秒。计数值起点不从0开始,所以一次调用没用,连续调用差值才有意义
sleep(s)程序休眠s秒
>>>start = time.perf_counter()
>>>end = time.perf_counter()
>>>end - start 

>>>def wait()
		time.sleep(3.3)
>>>wait() #程序等待3.3秒后退出

3.5实例——文本进度条

1.简单的文本进度条

#TextProBarV1.py
import time
scale = 10  #scale指文本进度条的大致宽度
print("--------------执行开始--------------")
for i in range(scale+1):
    a = '*'*i
    b = '.'*(scale - i)
    # c = (i/scale) * 100
    c = i * 10
    print("{:^3.0f}%[{}-->{}]".format(c,a,b))
print("---------------执行结束-------------")
  1. 文本进度条单行动态刷新
    —刷新:后打印的字符覆盖之前的字符。
    —输出时不能输出到下一行,print()要被控制。
    —要能回退:打印后光标退回到之前位置\r
#TextProBarV2
import time
for i in range(101):  
#为了输出文本进度条输出0%状态和%100状态
    print("\r{:3f}%".format(i),end="") #end=""加上不换行,默认会换行,
    time.sleep(0.1)
  1. 完整动态文本进度条
#TextProBar.py
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,'-')) 

IDLE直接运行时,for循环中的print里面的\r没有起作用。需要在cmd命令行窗口下运行才能出现预期结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值