Python学习笔记(三)——字符串类型及操作

Python学习笔记(三)——字符串类型及操作

数字类型及操作

整数、浮点数、复数、数值运算操作符、数值运算函数

整数类型: 与数学中整数的概念一致,大小无限制

pow(x,y)函数: 计算 x y x^y xy

整数的四种表现方式:

  • 十进制:1010,99,-217

  • 二进制,以0b或0B开头:0b010, -0B101

  • 八进制,以0o或0O开头:0o123, -0O456

  • 十六进制,以0x或0X开头:0x9a, -0X89

浮点类型: 与数学中实数的概念一致 ,带有小数点及小数的数字

  • 浮点数取值范围和小数精度都存在限制,但常规计算可忽略
  • 取值范围数量级约 − 1 0 308 -10^{308} 10308 1 0 308 10^{308} 10308 ,精度数量级 1 0 − 16 10^{-16} 1016
  • 浮点数之前的运算存在不确定尾数,不是bug

比如,0.1 + 0.3 = 0.4,但 0.1 + 0.2 =0.300000000004

在这里插入图片描述

因此,0.1 + 0.2 == 0.3 结果是False,但 round(0.1+0.2, 1)== 0.3 结果是True

浮点数间的运算及比较用round()函数辅助,不确定尾数一般发生在 1 0 − 16 10^{-16} 1016左右,因此round()函数十分有效。

round(x, d): 对x四舍五入,d是小数截取的位数

  • 浮点数可以采用科学计数法表示。使用字母e或E作为幂的符号,以10为基数,格式如下:

aeb表示 a ∗ 1 0 b a*10^b a10b

比如,4.3e-3 = 0.0043,9.6E5 = 960000.0(e和E都可以)

复数类型: 与数学中的复数的概念一致, j = − 1 j = \sqrt{-1} j=1

数值运算操作符: 操作符是完成运算的一种符号体系。

操作符及使用描述
x // y整数除。10//3 = 3
x % y余数,模运算。10%3 = 1
x ** y幂运算 x y x^y xy。4**0.5 = 2

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

x op=y,即x = x op y, 其中op为二元操作符

比如,x += y, x -= y,若x = 3, x **= 2,则x = 6

数字类型的关系:

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

三种类型存在一种逐渐“扩展”或“变宽”的关系:

整数 -> 浮点数 -> 复数

数值运算函数: 一些以函数形式提供的数值运算功能

函数及使用描述
abs(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,2,4)= 1
round(x[,d])四舍五入,d是保留小数位数,默认值为0。round(-10.123,2)= -10.12
m a x ( x 1 , x 2 , . . . , x n ) max(x_1,x_2,...,x_n) max(x1,x2,...,xn)最大值,n不限
m i n ( x 1 , x 2 , . . . , x n ) min(x_1,x_2,...,x_n) min(x1,x2,...,xn)最小值,n不限
int(x)将x变成整数,舍弃小数部分。int(123.4)=123;int(“123”)=123
float(x)将x变成浮点数,增加小数部分。float(12)=12.0;float(“1.23”) = 1.23
complex(x)将x变成复数,增加虚数部分。complex(4)= 4 + 0j

天天向上的力量

  • 0.1%(千分之一)的力量

每天进步0.1%,一年进步多少?

每天退步0.1%,一年退步多少?

#DayDayUpQ1.py
dayup = pow(1.001, 365)
daydown = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
  • 0.5%和1%的力量
#DayDayUpQ2.py
dayfactor = 0.005               #使用变量的好处:一处修改即可
dayup = pow(1 + dayfactor, 365)
daydown = pow(1 - dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
  • 工作日的力量

一年365天,一周5个工作日,每天进步1%

一年365天,一周2个休息日,每天退步1%

这种工作日的力量,如何呢?

数学思维到计算思维:for…in…

#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))
  • 工作日的努力

工作日要努力到什么水平,才能与每天努力1%一样?

A君:一天365天,每天进步1%,不停歇

B君:一天365天,每周工作5天休息2天,休息日下降1%,工作日要多努力呢?

for… in … (计算思维)到 def… while … ("笨办法"试错):因为计算机运算速度快

#DayDayUpQ4.py
def dayUP(df):                  #def保留字用于定义函数
                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: #while保留字判断条件是否成立,条件成立时执行循环
                dayfactor +=0.001
print("工作日的努力参数是:{:.3f}".format(dayfactor))

GRIT: perseverance and passion for long-term goals

1.0 1 365 = 37.78 1.01^{365} = 37.78 1.01365=37.78 1.01 9 365 = 962.89 1.019^{365} = 962.89 1.019365=962.89

–GRIT,坚毅,对长期目标的持续激情及持久耐力

–GRIT是获得成功最重要的因素之一,牢记天天向上的力量

字符串类型及操作

字符串

  • 由0个或者多个字符组成的有序字符序列。可以对其中的字符进行索引。如,”请“是“请输入带有符号的温度值:”的第0个字符

  • 字符串有2类共4种表示方式:

字符串由一对单引号或一对双引号表示,仅表示单行字符串。

由一对三单引号或三双引号表示,可表示多行字符串。

‘’‘Python

​ 语言’‘’

一对三单引号形成的是字符串,但对其无任何操作时,相当于注释。

  • 引入这几种表示方法的原因:

–如果希望在字符串中包含双引号或单引号呢?

‘这里有个双引号(”)’或者”这里有个单引号(’)“

–如果希望在字符串中既包含单引号又包含双引号呢?

“‘这里既有单引号(‘)又有双引号(”)’“

  • 字符串的序号:正向递增序号0,1,2,… 和反向递减序号…,-3,-2,-1

  • 字符串的使用:使用[]获取字符串中一个或多个字符

索引:<字符串>[M]

切片:<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾

如,“0一二三四五”[:3] 结果是 “0一二”

<字符串>[M: N: K],根据步长K对字符串切片

如,“0一二三四五”[1:8:2] 结果是 “一三五七”

如,“0一二三四五”[::-1] 结果是 “五四三二一0”,逆序

转义符(\)

  • 转义符\表达特定字符的本意

如,“这里有个双引号( \ ")” 结果为 这里有个双引号(“)

  • 转义符形成一些组合,表达一些不可打印的含义

“\ b” 回退 “\ n ” 换行 “\ r” 回车(将光标移动到本行行首)

字符串操作符:

操作符及使用描述
x + y连接两个字符串x和y
n * x 或 x * n复制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])

字符串处理函数

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

函数及使用描述
len(x)长度,返回字符串x的长度。len(“一二三456”)结果为 6
str(x)任意类型x所对应的字符串形式。str(1.23)结果为"1.23",str([1,2])的结果为“[1,2]”。注:str()与eval()是一对函数,前阵添加字符串符号,后者去掉字符串符号
hex(x) 或 oct(x)整数x的十六进制或八进制小写形式字符串。hex(425)结果为“0x1a9”,oct(425)结果为“0o651”
chr(u)u为Unicode编码,返回其对应的字符
ord(x)x为字符,返回其对应的Unicode编码

Python字符串的编码方式:

-统一字符编码,即覆盖几乎所有字符的编码方式

-从0到1114111(0x10FFFF)空间,每个编码对应一个字符

-Python字符串中每个字符都是Unicode 编码,因此可以用中、英、韩文等

字符串处理方法

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

  • “方法”特指==<a>.<b>()风格==**中的函数<b>()

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

  • 字符串及变量也是<a>, 存在一些方法

一些以方法形式提供的字符串处理功能:

方法及使用描述
str.lower() 或 str.upper()返回字符串的副本,全部字符小写/大写。“AbCd”.lower()结果为“abcd”
str.split(sep = None)返回一个列表,有str根据sep被分隔的部分组成。“A,B,C".split(",‘’) 结果为[‘A’, ‘B’, ‘C’]
str.count(sub)返回子串sub在str中出现的次数。“an apple a day”.count(“a”)结果为4
str.replace(old,new)返回字符串str副本,所有old子串被替换为new。“python”.replace(“n”,“n123.io”)结果为“python123.io”
str.center(width[,fillchar])字符串str根据宽度width居中,fillchar为填充内容字符可有可无。“python”.center(20,“=”)结果为’=======python=======’
str,strip(chars)从str中去掉在其左侧和右侧chars中列出的字符。“=python=”。strip(" =np")结果为"ytho"
str.join(iter)在iter变量除最后一个元素外每个元素后增加一个str。“,”.joint(“12345”)结果为"1,2,3,4,5" #用于字符串分隔等

字符串类型的格式化

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

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

<模板字符串>.format(<逗号分隔的参数>)

槽:

"{}:计算机{}的CPU占有率为{}%".format("2018-10-10","C",10)
#上述代码中{}分别代表字符串中的第0、1、2个槽。format()参数顺序为0、1、2
"{1}:计算机{0}的CPU占有率为{2}%".format("2018-10-10","C",10)
#表示 "C:计算机2018-10-10的CPU占有率为10%"

format()方法的格式控制:

槽内部对格式化的配置方式如下:

{<参数序号>:<格式控制标记>}

<填充><对齐><宽度><,><.精度><类型>
引导符号用于填充的单个字符<左对齐>右对齐^居中对齐槽设定的输出宽度数字的千位分隔符浮点数小数精度或字符串最大输出长度整数类型b,c,d,o,x,X浮点数类型e,E,f,%
#填充对齐宽度
"{0:=^20}".format("PYTHON") #0表示format的第0个参数,:是引导符号,=用等号填充,^居中对齐,宽度为20。
#结果为'=======PYTHON======='
"{0:*>20}".format("PYTHON")	
#结果为'**************PYTHON'
"{:10}".format("PYTHON")	#默认空格填充,左对齐。
#结果为'PYTHON    '

#千位分隔符精度类型
"{0:,.2f}".format(12345.6789)
#结果为 '12,345.68'
"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
#结果为 '110101001,Ʃ,425,651,1a9,1A9'
"{0:e},{0:E},{0:f},{0:%}".format(3.14)
#结果为 '3.140000e+00,3.140000E+00,3.140000,314.000000%'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值