第五章 基本数据类型与操作

基本数据类型:

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

可正可负,没有取值范围限制

pow(x,y)函数:计算X^Y想算多大算多大

答案太长就不截全图片了

整数类型的四种进制表示形式

十进制:1010,99,-217

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

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

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

以上就是关于python整数,你所需要知晓的全部内容:整数无限制、四种进制表示形式

浮点数类型

与数学中的实数概念一致

带有小数点以及小数的数字

浮点数的取值范围和小数精度都存在限制,但常规计算可以忽略

取值范围数量级约-10^308至10^308,精度数量级为10^-16

浮点数类型运算存在不确定尾数,不是bug,这个现象涉及到计算机组成原理里面的内容了,不详细展述

显示如下图所示:

出现这种情况的原因可以用一句话概述:

    二进制表示小数,可以无限接近,但不完全相同

emm,那咋办,有时候需要精确的结果啊????

大多数时候用round方法可以解决

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

 浮点数间运算及比较用round()函数辅助

不确定尾数一般发生在10^(-16)左右,所以round十分有效

使用字母e或E作为幂的符号,以10为基数,格式如下:

<a>e<b> 表示a*10^b

关于python浮点数,需要知道的多一点,总结一下以上的大纲

1、取值范围和精度基本无限制

2、运算存在不确定尾数,round()

3、科学计数法表示

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

 x^2=-1,那么j=√-1

实部z.real获得实部

虚部z.imag获得虚部

 

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

操作符及使用 描述
x+y
x-y
x*y
x/y
x//y 整除
操作符及使用 描述
+x x本身
-y y的负值
x%y 模运算求余数
x**y x的y次幂

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

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

X **=3与X=X**3等价

数字间的类型关系:

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

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

    整数-》浮点数-》复数

    例如:123+4.0=127.0(整数+浮点数=浮点数)

数值运算函数:

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

1 abs(x)            #结果为x的绝对值
2 divmod(x,y)    #结果为(x//y,x%y)
3 pow(x,y[,z])    #(x**y)%z

round(x[,d]) 四舍五入,d是小数位数默认值是0

round(-10.123,2)结果为-10.12

max(x1,x2,...,xn)返回最大值

min(x1,x2,.....xn)返回最小值

int(x) 将x变成整数,舍弃小数部分

float(x) 将x变成浮点数,增加小数部分

complex(x)将x变成复数,增加虚数部分

”天天向上的力量“问题分析:

基本问题:持续的价值

一年365天,每天进步1%,累计进步多少呢?

一年365天,每天退步1%,累计剩下多少呢?

问题一:千分之一的力量

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

运行结果如下图所示,千分之一的力量,最后的结局将近是两倍,不可小觑啊。

问题二:千分之五和百分之一的力量

一年365天,每天进步千分之五或1%,累计进步多少呢?

一年365天,每天退步七分之五或1%,累计剩下多少呢?

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

这就是使用变量的好处,只要改一个数字便可解决两个问题

运行结果如下图:

问题三:工作日的力量

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

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

这种休息日的力量如何呢?

1 #DayDayUpQ3.py
2 dayup = 1.0
3 dayfactor = 0.01
4 for i in range(365):
5    if i % 7 in [6,0]:
6        dayup = dayup*(1-dayfactor)
7    else:
8        dayup = dayup*(1+dayfactor)
9 print("工作日的力量:{:.2f} ".format(dayup))

运行结果如下图所示:尽管进步百分之一,但由于休息日的退步导致,效果在千分之一和千分之五之间

问题四:工作日的努力

工作日要努力到什么程度才能与每天努力1%一样

 1 #DayDayUpQ4.py
 2 def dayUP(df):
 3     dayup = 1
 4     for i in range(365):
 5        if i % 7 in [6,0]:
 6            dayup = dayup*(1 - 0.01)
 7        else:
 8            dayup = dayup*(1 + df)
 9     return dayup
10 dayfactor = 0.01
11 while dayUP(dayfactor) < 37.78:
12     dayfactor += 0.001
13 print("工作日的努力参数是:{:.3f} ".format(dayfactor))

运行结果如下图所示:

工作日要达到2倍的努力效果才可以维持原来的状况

这就是,每天进步一点点的力量。

字符串类型的表示:

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

字符串由一对单引号或一对双引号表示(python默认使用单引号表示)

字符串是字符的有序序列,可以对其中的字符进行索引

"你"s ”你好啊,哈哈哈“的第0个字符

字符串的两类4种表示方法

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

'C'或者"什么东西啊?"

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

'''Python

  语言  '''

"""Python

  语言  """

和前面提到的多行注释格式相同,所以大家应该可以理解了。所为的多行注释也就是没有赋值给变量的字符串,野孩子。

那么为什么要设置两类四种表示方法呢

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

'哇"塞!'

"这里有个单'引'号"

2、如果希望既包括双引号又包括单引号呢?

'''22222222"""2'2'22"22222'''

字符串的序号:正向递增,反向递减

 字符串的使用:

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

索引:返回字符串中的单个字符  <字符串>[M]

切片:返回字符串中的一段字符子串  <字符串>[M:N]

字符串切片高级用法:使用[M:N:K]根据步长对字符串进行切片

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

"01234567"[:3]结果是”012“

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

"0123456"[1:8:2]结果是”135“

”0123456“[::-1]结果是”6543210“

字符串的特殊字符:

转义符\

转义符表示特定字符的含义:

  \b  回退

  \n  换行

  \r  回车

  \'  '

  \"  "

操作符及使用 描述
x+y 连接两个字符串x和y
n*x或x*n 复制n次字符串x
x in s 如果x是s的子串返回True否则返回False

获取星期几字符串

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

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

函数及使用 描述
len(x) 长度,返回字符串x的长度
str(x) 任意类型x对应的字符串形式
hex(x)或oct(x) 整数x的16进制和8进制小写模式

chr(x) x为unicode编码,返回其对应的字符

ord(x) x为字符,返回其对应的unicode编码

下面简单介绍一下unicode编码:python字符串的编码方式

1、统一字符编码,几乎覆盖了所有字符的编码方式

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

3、python字符串中每个字符都是unicode编码字符

大家可以试试下面的python代码的运行结果:

1 >>>"1+1=2"+chr(10004)
2 >>>for i in range(12):
3             print(chr(9800+i),end="")#end=""的含义是结尾不换行

运行结果如上图所示。

下面我们学习一下字符串处理方法。

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

1、”方法“特指<a>.<b>()风格中的函数<b>()

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

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

字符串的一些处理方法

方法及使用

描述

str.lower()或str.upper()

返回字符串的副本,全部字符小写/大写

"AbCdEfGh".lower()结果为”abcdefgh“

str.split(sep=None)

返回一个列表,由str根据sep被分隔的部分组成

”A,B,C“.spilit(",")结果为['A','B','C']

str.count(sub) 返回子串sub在str中出现的次数
str.replace(old,new) 返回字符串str副本,所有子串被替换为new
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

",".join("12345")结果是

"1,2,3,4,5"#主要用于字符串分隔等

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

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

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

{ }括起来的称为槽,默认顺序为0,1,2..........当然也可以如上图自定义顺序。

下面我们来详细学习一下format()方法 的格式控制方法

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

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

<填充> <对齐> <宽度> <,> <.精度> <类型>
引导符号 用于填充的单个字符

<左对齐

>右对齐

^居中对齐

槽设定的输出宽度 数字的千位分隔符 浮点数小数精度或字符串最大输出长度

整数类型

b,c,d,o,x,X

浮点数类型

e,E,f,%

猜你喜欢

转载自www.cnblogs.com/chy8/p/9451794.html
今日推荐