2021-08-15第四次作业

作业1

数字类型

数字类型不可变类型。所谓的不可变类型,指的是类型的值一旦有不同了,那么它就是一个全新的对象。数字1和2分别代表两个不同的对象,对变量重新赋值一个数字类型,会新建一个数字对象。

还是要强调一下Python的变量和数据类型的关系,变量只是对某个对象的引用或者说代号、名字、调用等等,变量本身没有数据类型的概念 。只有1,[1,2],"hello"这一类对象才具有数据类型的概念。

Python 支持三种不同的数字类型,整数、浮点数和复数

整数

整数介绍

通常被称为整型,数值为正或者负,不带小数点。python 3的整型可以当做Long类型使用,所以python 3 没有python 2的Long类型。

表示数字的时候,通常使用十进制(decimal)来表示

有时我们还会用八进制十六进制来表示:

十六进制用0x前缀和0-9,a-f表示,例如:0xff00

八进制用0o前缀和0-7表示,例如0o45

>>> hex(11) # 10转16

'0xb'

>>> oct(11) # 10转8

'0o13'

>>> bin(11) # 10转2

'0b1011'

整数内存

python的整数长度为32位,并且通常是连续分配内存空间的。

>>> id(-2)

1509059968

>>> id(-1)

1509060000

>>> id(-1)-id(-2)

32

从上面的空间地址看,地址之间正好差32。

小整数对象池

python初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!这是一个包含262个指向整数对象的指针数组,范围是-5到256。也就是说比如整数10,即使我们在程序里没有创建它,其实在Python后台已经悄悄为我们创建了。

为什么要这样呢?我们都知道,在程序运行时,包括Python后台自己的运行环境中,会频繁使用这一范围内的整数,如果每需要一个,你就创建一个,那么无疑会增加很多开销。创建一个一直存在,永不销毁,随用随拿的小整数对象池,无疑是个比较实惠的做法。

id(-6)

10114720

id(-5)

496751568

id(255)

496755728

从id(-6)和id(257)的地址,我们能看出小整数对象池的范围,正好是-5到256。

整数缓冲区

除了小整数对象池,Python还有整数缓冲区的概念,也就是刚被删除的整数,不会被真正立刻删除回收,而是在后台缓冲一段时间,等待下一次的可能调用。

a = 100000

print(id(a))

del a

b = 100000

print(id(b))

3028842491600

3028842491600

上面,我给变量a赋值了整数100000,看了一下它的内存地址。然后我把a删了,又创建个新变量b,依然赋值为100000,再次看下b的内存地址,和以前a存在的是一样的。

注意:在交互环境当中演示不出来效果。该效果在pycharm当中实现;并且注意不是小整数对象池当中的值。

浮点数

浮点数介绍

浮点数也就是小数,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

浮点数与整数之间的转换

>>> a = 1

>>> float(a) # 整数转为浮点

1.0

>>> b = 2.2

>>> int(b) # 浮点转为整数

2

复数(complex)

复数的介绍

复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点。

复数的创建

>>> a = 1

>>> b = 2

>>> complex(a,b) # a为实数部分,b为虚数部分

(1+2j)

数学计算

对于数学计算,除了前面提到过的简单的加减乘除等等,更多的科学计算需要导入math这个库,它包含了绝大多数我们可能需要的科学计算函数,如下表

ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5

exp(x) 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045

fabs(x) 返回数字的绝对值,如math.fabs(-10) 返回10.0

floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 4

log(x) 如math.log(math.e)返回1.0,math.log(100,10)返回2.0

log10(x) 返回以10为基数的x的对数,如math.log10(100)返回 2.0

modf(x) 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。

pow(x, y) x**y 运算后的值。

sqrt(x) 返回数字x的平方根

acos(x) 返回x的反余弦弧度值。

asin(x) 返回x的反正弦弧度值。

atan(x) 返回x的反正切弧度值。

atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值。

cos(x) 返回x的弧度的余弦值。

hypot(x, y) 返回欧几里德范数 sqrt(xx + yy)

sin(x) 返回的x弧度的正弦值。

tan(x) 返回x弧度的正切值。

degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0

radians(x) 将角度转换为弧度

应用举例:

import math

math.ceil(4.1)  # 5 向上取整

math.floor(4.5) # 4 向下取整

math.pow(2,3)  # 8.0 2的三次方

常用python内置函数:

max(x1, x2,...) 返回给定参数的最大值,参数可以为序列。

min(x1, x2,...) 返回给定参数的最小值,参数可以为序列。

abs(x) 返回数字的绝对值,如abs(-10) 返回 10。

round(x [,n]) 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

布尔类型

布尔类型介绍

对于错、0和1、正与反,都是传统意义上的布尔类型。

但在Python语言中,布尔类型只有两个值,True与False。请注意,是英文单词的对与错,并且首字母要大写,不能其它花式变型。

布尔值通常用来判断条件是否成立。 例如:

a = 1

if a > 3:

print("a是一个大于3的数字")

else:

print("a不是一个大于3的数字")

bool()使用

Python内置的bool()函数可以用来测试一个表达式的布尔值结果。

>>> bool(1)

True

>>> bool(0)

False

>>> bool([])

False

>>> bool(())

False

>>> bool({})

False

>>> bool(-1)

True

>>> bool('')

False

>>> bool("False")

True

>>> bool("True")

True

>>> bool(0.0)

False

>>> bool(1.0)

True

>>> bool(-0.0)

False

总而言之,0、0.0、-0.0、空字符串、空列表、空元组、空字典,这些都被判定为False;而-1、"False"被判断为True。

布尔类型运算

and运算是与运算,只有所有都为True,and运算的结果才是True:

>>> True and True

True

>>> True and False

False

>>> False and False

False

>>> 5 > 3 and 3 > 1

True

or运算是或运算,只要其中有一个为True,or运算结果就是True:

>>> True or True

True

>>> True or False

True

>>> False or False

False

>>> 5 > 3 or 1 > 3

True

not运算是非运算,它是单目运算符,把True变成False,False变成True:

>>> not True

False

>>> not False

True

>>> not 1 > 2

True

在做四则运算的时候,把True看做1,False看做0。

>>> True > False

True

>>> True < False

False

>>> True >=False

True

>>> True -1

0

>>> True + 1

2

>>> True *3

3

>>> False -1

-1

空值

空值不是布尔类型,严格的来说放在这里是不合适的,只不过和布尔关系比较紧密。

空值是Python里一个特殊的值,用None表示(首字母大写)。None不能理解为0,因为0是整数类型,而None是一个特殊的值。None也不是布尔类型,而是NoneType。

>>> bool(None) # None的bool值永远为False

False

>>> type(None)

<class 'NoneType'>

作业2

完成字符串的逆序以及统计:

a =list(input("请输入一个字符串:"))

if len(a) <20:

print(len(a))

b = a[::-1]

c =' '.join(b)

print(c)

else:

print("请重新输入:")

作业3

'3'+'4'的结果是'34'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容