python学习02:基本数据类型之数值类型

数据类型

一.对于数据类型的理解

编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用于表示现实世界中的不同信息,以便于计算机更好地存储和计算,每一门编程语言都会有几种基本的数据类型去表示基本的信息,那么我们应该怎么去理解数据类型呢?

举个例子(把苹果当作数据)比如现有五吨重的散装苹果,在需要运输和处理的时候应该打包成5斤一箱,10斤…(处理起来更方便)…有时候为了运输方便还需要加上泡沫网,这样更有利于处理,运输,销售。

其实我们的数据也是如此,也是需要传输,处理,存储的,那么为了使我们的数据能更好地传输,处理,存储,保证效率,安全性等,我们也会根据数据的特点对数据进行包装,不同类型的数据要进行不同的包装。

总结:其实数据类型底层的处理跟我们这个打包苹果的例子是相同的,不同的数据其实就是不同的包装,结构是不一样的,把数据想象成一个个散装的苹果,不同的数据结构去包装的时候要根据货物的情况做合适的包装,目的是能让它运输起来更快,存储起来更高效,处理的时候更方便。

二.python中的基本数据类型

数值类型
在这里插入图片描述
实数:整数和小数的集合
序列类型

  • 字符串(str):字符串是用单引号/双引号/三引号,包裹起来的字符的序列用于表示文本信息.
  • 列表(list): 列表表示有序可变的元素的集合,元素可以是任意数据类型。
  • 元祖(tuple): 元组表示有序不可变元素的集合,元素可以是任意数据类型,可以说元组就是不可变列表。

散列类型
set(集合) : python中的集合的概念与数学中一致,用来表示无序不重复的元素的集合,集合中的元素只能是不可变类型。
dict(字典): 字典是无序键值对的集合,用来表示有关联的数据,例如表示一个人的基本信息。

其他类型
在这里插入图片描述

三. 整数类型

3.1 定义

python中整数类型用int表示,与数学中的整数概念完全一致
例如: 18,19…

3.2 变量

在程序运行的过程中会有一些中间值,在稍后的执行中会用到,这时可以将这些中间值赋值给变量,然后在后面的代码中通过直接调用这些变量名来获取这些值,可以简单地理解为给这些值取一个别名,这个别名就代表这个值。

age = 18

其中age 是变量名, 18是值 ,=不是数学意义上的等于号,是赋值运算符
上面代码的意思是 创建一个整数18,赋值给变量age(在内存中的处理是开辟一块内存空间,里面创建一个整数18,然后把18的内存地址指向age,age赋值为18)

python中变量名的命名规则

  • 由大小写字母A-Za-z,数字0-9,下划线_组成(py3可以使用非标点符号)
  • 不能以数字开头
  • 不能是关键字(关键字就是程序本身使用了的特殊的变量名),尽量不要是内置的函数,类名。
    python官方占用了一些变量名作为程序的关键字,总共35个,这些关键字不能作为自定义变量名使用。
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
  • 严格区分大小写(age和Age是两个不同的变量)
    规范:
    尽量做到见名知意
    变量避免使用非ascii码字符
    pep8规范

3.3 赋值运算符

在python中 = 是赋值运算符,而不是数学意义上的等于号,python解释器会先计算 = 右边的表达式,然后再将结果赋值给 = 左边的变量。

age = 18   #  = 是赋值运算符

在运行代码的过程中,会先在内存里面创建18这个数据,然后将这个数据赋值给age这个变量。

age = 18    # 创建一个整数18然后赋值给age
age = age +1  # 先计算age+1,结果为19,再赋值给age
print(age)    # 19   age的值为 19

3.4 type和print函数

python提供了内建函数type用来查看值或者变量的类型,只需要将变量或者值作为参数传入即可
函数的调用格式 : 函数名()
type(age) 返回对象的类
print 函数用来在控制台输入数据的字符串表现形式,它是代码调试的最主要的函数。
print(age) 打印传入的变量值,语法:print(参数)

print(age):     # 打印age这个变量    age是传进去的参数

注意:变量一定要先定义再使用(内置的函数和变量除外)

age = 18
print(type(age))   # <class 'int'>
print(type(18))    # <class 'int'>
# type()函数:返回传入的变量或值的类型
# 注意交互式输出和 print函数输出的区别
age = 18
print('age的值和类型是:', age, type(age))
age的值和类型是: 18 <class 'int'>
print可以传入多个参数,用逗号隔开,打印出来的结果以空格隔开。

注意:
①:type函数和print函数里面除了可以传变量也可以传具体的值。
②:print函数里面可以传入多个参数,用逗号隔开,打印出来的结果以空格隔开
③:print函数也可以直接输出字符串。

3.5 整数的常见表现形式

在python中整数最常见的形式是10进制整数,也有二进制,八进制和十六进制,整数的常见表达形式,表示的是定义不同进制的数

  • 十进制
a = 10 
print(a, type(a))     # 10  <class 'int'>
# print函数可以传多个参数用逗号分隔,会打印多个值,默认使用逗号隔开
  • 二进制 前导符0b
b = 0b100
print(b, type(b))   # 4 <class 'int'> 
  • 八进制 前导符号0o
c = 0o10
print(c, type(c))  # 8 <class 'int'>
  • 十六进制 前导符0x
d = 0x10
print(d, type(d))   # 16 <class 'int'>

注意:不管传入的是多少进制的数,print打印出来会自动转换为十进制数。
例题:
在这里插入图片描述

注意:print打印出来的数字默认是十进制

3.6 整数的取值范围

python中整数的理论取值范围 [-无穷-正无穷] , 实际取值范围受限于运行python代码程序的计算机内存大小

3.7 部分语法

  • 井号开头表示单行注释,可以写在一行中的任何位置,注释是写给人看的,起提示作用,运行代码的时候计算机会忽略掉 快捷键 ctrl + /(单行注释如果放在代码后面需要离代码空两个空格)
  • 如果没有上下包含关系,上下没有逻辑关系,代码就要顶格写,不能留有空格
  • 变量一定要先定义再使用(内置的函数和变量除外)
  • 所有的标点符号都要使用半角(英文)
  • pep8规范

四. 浮点数类型

4.1 定义

python中浮点数表示的是数学中的实数(整数和小数的集合)

salary = 5000.5
print(type(salary))  # <class 'float'>

python中的浮点数使用float表示

4.2 浮点数的表现形式

在python中浮点数可以表示为a.b的形式,也可以表示为小写或大写E的科学计数法
例如

  • a = 1.2 (正常的a.b形式)
  • b = -3.1415 (负的浮点数)
  • c = 0.0 (浮点数的小数部分是可以为0的)
  • d = 76. (当一个浮点数小数部分为0的时候,.后面的0可以省略不写)
  • e = .76 (当一个浮点数的整数部分为0的时候0也可以省略不写)
  • f = 9.53E-2 科学计算法 9.53E-2 等价于 9.53小数点向左移两位
  • g = 3.14e3 科学计数法 3.14e3 等价于 3.14小数点向右移动三位
    注意:
    ①, 在python中,0 不等于 0.0 因为数据类型不一样
    ②, 用科学计数法表示的浮点数的形式要在e的后面跟正负号的数字表示小数点偏移的位数(正的数字可以省略)

4.3 思考

既然浮点数可以表示所有的整数数值,python为什么要提供两种数据类型?
因为计算机底层表示整数和浮点数的方式不一样,运算的方式也是不一样的
整数是最好存储,最好处理的数据,计算机底层就是二进制数
相同的操作,整数比浮点数要快5到20倍。

五. 算术运算符

又叫数学运算符
(+、 - 、 *、/、 //、 %、 **、 ()、)
在这里插入图片描述

  • / 除法
print(9/3)  
# 3.0  除法运算的结果一定是浮点数
  • // 整除
print(10//3)  # 3  整除,向下取整,省略小数部分  
             #  如果整除符号两边都是整数,它的结果就是整数。    
print(14.3//3)  # 4.0 如果整除运算中有浮点数,那么结果是将小数部分设置为0 
print(9 // 10# 0
print(9.0 // 3)  # 3.0  只要有浮点数参与运算,结果一定是浮点数。
                 
  • % 余数
print(10%3)  # 1

** 幂次方

print(2**3)  # 8
print(9 ** 0.5)

括号运算符()

print(1+3)/2  # 2.0

注意:
①、除法运算的结果一定为浮点数
②、只要有浮点数参与的运算,结果一定为浮点数
③、当整除(//)符号 两边都是整数的情况下,结果一定为整数
④、运算符的优先级:四则运算-先乘除后加减,如果搞不清楚哪个先运算就加括号

六. 组合赋值运算符

算术运算符和赋值运算符可以组合使用
需要注意的是 算术运算符要写在前面且中间不能有空格
例如:
+= 、 -= 、 *=、 /=
在这里插入图片描述

举例:

age = 18
age = age + 1    # age = 19
# 自加一
age += 1 
print(age)  # 20    age +=1 等价于 age = age + 1

注意:
①:组合赋值运算符,算数运算符要写在前面且中间不能有空格
②:所有的算数运算符都支持组合赋值

6.1 浮点数的不精确性

整数和浮点数在计算机中的表示不同
python提供无限精度的整数运算(在内存允许的范围内,整数做任何运算都是精确的)但是浮点数却是不精确的
例:

print0.1+0.2#  0.30000000000000004

一般情况下 计算机只能提供15位数字的小数位准确性,浮点数超过15位之后会产生误差,误差跟计算机内部采取的二进制算法有关,不同的电脑之间也会有差别

import sys
print(sys.float_info.dig)  # 15

可以看到当前计算机的浮点数精度
普通情况下,用浮点数直接做运算精度是够用的,但是如果遇到对精度要求很高的行业 如银行等 ,浮点数就显得不够准确了
思考: 思考 3.1415926535897924 * 1.23456789 的计算怎么准确?

print3.1415926535897924 * 1.23456789#  3.8785094135818503  不准确
print(31415926535897924*123456789)  # 3878509413581850928806036 先转换成整数再去挪动小数点

拓展:高精度浮点运算类型

import decimal
a = decimal.Decimal('3.1415926535897924')
b = decimal.Decimal('1.23456789')
print(a * b)    # 3.878509413581850928806036
print(type(a))   # decimal.Decimal  底层处理就是先变成整数 然后去移小数点的位置

6.2 浮点数和整数的互相转化

int,float 分别表示整数和浮点数,同时他们也是python内置函数
通过它们可以实现整数和浮点数的相互转化

a = 1.9
# 转化为整数
# 通过调用int函数,提取浮点数的整数部分
b = int(a)
print(b,type(b))  # 1 <class 'int'>    浮点数转整数直接舍弃小数部分 向下取整

c = 2 
# 转化成浮点数  
# 通过调用float函数,将整数转化为小数部分为0的浮点数
d = float(c)
print(d,type(d))   #  2.0 <class 'float'>

# 如果要考虑四舍五入要使用其他的函数
import math
math.ceil(0.9)  # 四舍五入  1
math.floor(1.2) # 内置函数地板  1

注意:
①:浮点数转换成整数直接舍弃掉小数部分向下取整
②:整数可以转化成小数部分为0的浮点数
例题:
**加粗样式
在这里插入图片描述
浮点数字符串不能直接转换成整数 b错误
‘0xa’实际上只是一个字符串,字母字符串没办法转化为浮点数。
对于数字字符串,去掉引号是浮点数的才能转换成浮点数类型。
float(0xa) 0xa 是整数的十六进制表现形式,去float的时候,会把结果转换成十进制。

6.3复数

a = 12.3+4j

print(a, type(a))  # (12.3+4j) <class 'complex'>
print(a.real, a.imag)  #   12.3  4.0  打印实部和虚部

实际上,在python中 整数.浮点数.复数 跟数学中 是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值