Python基础数据类型一(第四讲)

在这里插入图片描述

1.Python的基础数据类型

    为什么会有数据类型?(了解)

  • 更好分配管理内存
  • 方便统一管理
  • 更贴近人类分类管理习惯

今日知识点

1.数值类型

  • 整数类型
  • 小整数对象池
  • 浮点数、复数
  • 数学计算

2.布尔类型

  • 布尔类型介绍
  • bool()的使用
  • 布尔类型运算
  • 空值(None)

3.字符串

  • 字符串介绍
  • 字符串储存
  • 字符串下标
  • 字符串切片
  • 字符串类型转换
  • 字符串组成方式
  • 字符串常见操作

2.数据类型种类(熟悉)

    数据类型种类:
    在python中数据类型也分为内置的自定义的。以下都是内置的的数据类型:

  • 数值类型:
    int(整数)、boo(布尔类型)、float(浮点数)、complex(复数)
  • 序列类型:
    不可变:str(字符串)、tuple(元组)、bytes(字节)
    可变:list(列表)
  • 集合类型:
    set
  • 映射类型:
    dict(字典)

1.数值类型介绍(熟悉)

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

In [1]: 1
Out[1]: 1

In [2]: 2
Out[2]: 2

    还是要强调一下 Python 的变量和数据类型的关系:

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

    Python 支持三种不同的数值类型:整数、浮点数和复数与布尔。

1.整数(int)介绍(熟悉)

    整数通常被称为整型,数值为正或者负,不带小数点。表示数字的时候,通常使用十进制(decimal) 来表示。
    有时我们还会用八进制或十六进制来表示:

  • 十六进制用0x前缀和0-9,a-f表示,例如:0xff00。python 中使用 hex() 将十进制转为十六进制
  • 八进制用0o前缀和0-7表示,例如0o45。python 中使用 oct() 将十进制转为八进制
  • 二进制用0b前缀和0-1表示,例如0b11。python 中使用 bin() 将十进制转为二进制
In [1]: hex(10) # hex:十进制转十六进制
Out[1]: '0xa'

In [2]: oct(10) # oct:十进制转八进制
Out[2]: '0o12'

In [3]: bin(10) # bin:十进制转二进制
Out[3]: '0b1010'

2.整数内存(了解)

    python的整数长度32位,并且通常是连续分配内存空间的。
    从下面代码的内存地址看,地址之间正好相差32。

In [6]: id(1)
Out[6]: 1785621984

In [7]: id(2)
Out[7]: 1785622016

3.小整数对象池(了解)

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

In [1]: id(10)      #我们没有去创建这个对象,但系统已经自动创建了
Out[1]: 1785622272

    作用:节省开销,增快运行速度

4.整数缓冲区(了解)

    除了小整数对象池,Python 还有整数缓冲区的概念,也就是说,像电脑一样,删掉的东西会暂留在回收站里,Python中删除的整数,会暂留在缓冲区中不会被立刻消除,等待下一次还可能被调用。这样就不会再开辟一块内存空间。

a = 100

print(id(a)) # id=1785625152

del a

b = 100

print(id(b)) # id=1785625152

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

5.浮点数(float)介绍(熟悉)

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

6.浮点数与整数之间转换(掌握)

  • int–>float     float(x) -> floating point number
  • float–>int     int(x=0)
In [1]: a = 10

In [2]: float(a)
Out[2]: 10.0

In [3]: b = 10.213

In [4]: int(b)
Out[4]: 10

    注意:浮点数转换为整数,只取整数部分。

7.复数(complex)(了解)

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

8.数学计算(熟悉)

对于数学计算,除了前面提到过的简单的加减乘除等等,更多的科学计算需要导入 math 这个标准库,它包含了绝大多数我们可能需要的科学计算函数。(math标准库是内置的)

  • math.ceil(x)
  • math.floor(x)
  • math.pow(x)
  • abs(x)
  • round(x)
import math                   # 方法一:导入math模块

# from math import ceil       # 方法二:使用math模块中的ceil类

print(math.ceil(12.123124))   # 13;向上取整;等于或大于x的最小整数。

print(math.floor(12.123124))  # 12;向下取整;等于或小于x的最小整数。

print(math.pow(3, 3))         # 27.0;(x**y);3**3

print(abs(-10))               # 10;取绝对值

print(round(1.5))            # 2;四舍五入;四舍六入五成偶;意思就是说四舍五入后为偶数则5进一,为基数则六进一。

print(round(2.5))            # 2;四舍五入;四舍六入五成偶;意思就是说四舍五入后为偶数则5进一,为基数则六进一。

print(round(2.123, 2)) # 2.12;四舍五入;(x, y)x:要四舍五入的数;y:保留小数点后几位。

    注意:round函数四舍六入五成偶;意思就是说四舍五入后为偶数则5进一,为基数则六进一。

2.布尔类型

    布尔类型介绍(掌握)
    就像我们做题,不是对就是错。相对于来说对与错、0与1都是传统意义上的布尔类型
    在Python语言中布尔类型只有两个值(注意首字母大写,不能有其他的花式变型):

  • True
  • False

1.bool()使用(掌握)

    我们通过 python 内置的 bool() 函数来测试一个表达式的布尔值的结果。
    比如说我们的一些运算符:

  • 比较运算符
print(2 > 3)    # False

print(2 < 3)    # True

print(3 == 9/3) # True;虽然类型不同,但==比较的是数值

print(3 is 9/3) # False;is比较的是内存地址是否同一个

  • 成员运算符
print(3 in [1, 2, 3]) # True

    在Python中

# 数值;0的bool值为False,其余全为True
print(bool(0))  # False
print(bool(1))  # True
print(bool(-1))  # True

# 字符串:只有空字符串bool值为False,其余全为True;含有空格的字符串也是非空字符串
print(bool(' '))  # True
print(bool(''))  # False
print(bool('no'))  # True

# 列表:除了空列表为False,其余都为True
print(bool([])) # False
print(bool([1, 2, 3])) # True

# None是什么都没有的意思
print(bool(None)) # False;

    归纳:

  • 数值类型:0的 bool 值都为 False,其它的都为 True
  • 字符串:空字符串的 bool 值为 False,其它的都为 True。注意空格字符串为 True
  • 列表:空列表的 bool 值为False,其它的都为 True。
  • None 的 bool 值永远为 False

2.布尔类型运算(熟悉)

    布尔类型运算如下:

  • and 运算
  • or 运算
  • not 运算
  • 算术 运算,注意:把 True 看作1,而 False 看作 0
print(True and True) # Ture;and:两个的都为True,则返回True
print(True and False) # False;有一个不为True

print(True or False) # True;or:其中一个为True,则为返回True
print(False or False) # False;两个都不为True

print(not True) # False;not:相反
print(not False) # True;not:相反

print(True + 1) # 2;在bool值运算中True为1
print(False + 1) # 1;在bool值运算中False为0

3.空值介绍(掌握)

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

3.字符串

    字符串是 Python 中最常用的数据类型之一,使用单引号双引号来创建字符串,使用三引号创建多行字符串。
    注意:

  • 字符串的单引号与双引号都是 成对 出现的,不能一边单一边双
  • 字符串是 不可变序列数据类型,不能直接修改字符串本身,和数字类型一样!
'hello,word'
"hello,word"
"""hello,word"""

1.字符串的存储(了解)

    思考:以下 数值字符串 存储是一样的吗?

>>> num = 100
>>> num_str = '100'

    类型不同存储方式也不同,整数在内存中单独占一个字节,但字符串不管中间有多少内容都要单独储存。

2.存储方式的介绍(了解)

  • CPU:速度快,存储小
  • 硬盘:速度慢,存储大
  • 内存:速度比CPU慢,但比硬盘快。存储比CPU大,但比硬盘小。
  • 1G = 1024M;1M = 1024KB;1KB = 1024B;1B = 8bit
        整数 在内存中占 一个字节字符串 不管中间多少内容都要 单独存储
内容 存储
100 100
‘100’ ’1‘ ’0‘ 0’

3.字符串的下标(重点掌握)

    由于字符串是 序列数据结构 ,所以我们可以通过 下标将字符串中某个字母取出来。
    下标也可称为 索引,默认从0开始
    例如:'hello’在我们的存储中他是这样的;‘h’ ‘e’ ‘l’ ‘l’ 'o’拆分开来单独储存。注意:空格也算
    储存:‘h’ ‘e’ ‘l’ ‘l’ ‘o’
    下标: 0  1  2 3  4
    所以我们要从’hello’中取出个e怎么做呢?

In [1]: name = 'hello'

In [2]: name[1] # 索引用方括号
Out[2]: 'e'
In [3]: name[-4] # 复数则是倒数,且不从零开始
Out[3]: 'e'

    思考:
    name =“hello oldamy”,如何取出 e 值?如何取出最后一个值?

4.字符串的切片(重点掌握)

    切片:a[start:stop:step]

  • start # 起始;默认为零
  • stop # 结束;默认最后一个元素
  • step # 步长;默认为一
>>> name = '012345678'
>>> name[0:5]
'01234'

>>> name[0:6:2] # 步长为正,start要小于stop
'024'
>>> name[6:0:-2] # 步长为负,start要小于stop
'642'

>>> name[:] # 取全部,虽然都有默认的位置,但是中间还是要打一个冒号;步长若不修改可以不打
'012345678'

    思考:
name =“hello oldamy”,如何取出 oldamy , hloodm 值?name 逆序输出?

>>> name = 'hello oldamy'
>>> name[6:]
'oldamy'
>>> name[::2]
'hloodm'
>>> name[::-1]
'ymadlo olleh'

    注意:

  • 索引默认从0开始
  • 切片时左闭右开
  • 当是取单个字符的时候,索引超出范围会报错。而切片时不会报错。
  • 步长不能为0,也不允许为浮点数

5.字符串类型转换(掌握)

In [1]: int('123456')
Out[1]: 123456

In [2]: str(123456)
Out[2]: '123456'

In [3]: int('asd')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-1506e68dd23d> in <module>
----> 1 int('asd')

ValueError: invalid literal for int() with base 10: 'asd' # 因为'asd'不为十进制整数
  • 字符串–>整数用int();int(x) -> integer
  • 整数–>字符串用strr();str(object=’’) -> str
  • 字符串–>要为十进制整数,否则报错

6.字符串组成方式(掌握)

  • 字符串相加
  • 字符串格式化
  1. %s %d %f
  2. str.format()
  3. python3.6.4 引入 f
name = "Jeff"
age = 20
# 百分号格式需要考虑格式
# %s-->str
# %d-->decimal
# %f-->float
print("%s的年龄为%d" % (name, age))

# str.format
# {}-->占坑
print("{}的年龄为{}".format(name, age))
# format不仅仅可以不考虑数据类型,还可以调换顺序
print("{1}的年龄为{0}".format(age, name)) # 0和1为索引

# f''
# 也是用{}-->占坑
print(f'{name}的年龄为{age}')

7.字符串常见操作(熟悉)

  • S.find(sub) --> 返回该元素最小的索引
  • S.index(sub) --> 返回该元素最小的索引
  • S.replace(old, new[, count]) --> 替换
  • S.split(sep=None) --> 以sep来分割字符串,并返回列表。sep默认为None,分割默认为空格
  • S.startswith(prefix[, start[, end]]) --> 判断字符串是否以前缀开始,返回为bool值。
  • S.endswith(suffix[, start[, end]]) --> 判断字符串是否以尾缀结束,返回为bool值。
  • S.lower() --> 将字符串全部转为小写
  • S.upper() --> 将字符串全部转为大写
  • S.strip([chars]) --> 默认去掉字符串左右的空格
  • S.isalpha() --> 判断字符串是否全为字母,返回的是bool值
  • S.isdigit() --> 判断字符串是否全为数字,返回的是bool值
  • S.isalnum() --> 判断字符串是否全为数字或者字母,不存在特殊字符,返回的是bool值
  • S.join(iterable) --> 将序列中的元素以指定的字符连接生成一个新的字符串

作业

题目

  • 作业1
    当输入y或Y打印进入卸载,当输入n或N打印退出程序,输入其它则打印输入不在选项范围之内
  • 作业2
    写博客归纳总结数字类型布尔类型字符串类型的重点
  • 作业3
    完成字符串的逆序以及统计
    设计一个程序,要求只能输入长度低于20的字符串,当满足需求时,则打印出字符串长度
    以及使用切片逆序打印出字符串当不满足需求时,打印用户重新输入
  • 作业4
    ’3’+’4’的结果是什么?

答案

  • 作业1
"""当输入y或Y打印进入卸载,当输入n或N打印退出程序,输入其它则打印输入不在选项范围之内"""
option = str.upper(input("请输入Y或N:"))
if option == "Y":
    print("进入卸载!")
elif option == "N":
    print("你已退出了该程序!")
else:
    print("不在选项范围内")
  • 作业2
    在布尔类型中:
    1.算术 运算,注意:把 True 看作1,而 False 看作 0
  1. 数值类型:0的 bool 值都为 False,其它的都为 True
  • 作业3
"""完成字符串的逆序以及统计
设计一个程序,要求只能输入长度低于20的字符串,当满足需求时,则打印出字符串长度
以及使用切片逆序打印出字符串当不满足需求时,打印用户重新输入"""

num = input('请输入您的号码;不得超过二个字:')
# if len(num) <= 20:
#     print(len(num), num[::-1])
# else:
#     print("请重新输入")

a = len(num)
b = num[::-1]

print(f"{a},{b}" if len(num) <= 20 else "请重新输入")
  • 作业4
    字符串相加会将连个字符串合并,所以’3’+’4’的结果为’34’

猜你喜欢

转载自blog.csdn.net/weixin_51158247/article/details/112499032
今日推荐