数据类型之数字类型

数据类型之数字类型

首先看为什么要设置数据类型,每种语言都有其数据类型,包含数据库等都有数据类型,那为什么要对数据分类型呢,其实简而言之,就是不同的数据作用不同,理论上占用的内存资源也不同,我们规范了数据类型,对数据进行分类,就相当于是对资源内存进行了优化,尽可能避免造成内存浪费,所以数据类型的区分,可以看做编程语言的一种系统资源分配优化的方案。
那么Python语言的数据类型有哪些呢?分别有哪些特点,我们一一来学习:

Python3 中有六个标准的数据类型:
Number(数字) 不可变
String(字符串) 不可变
List(列表) 可变
Tuple(元组) 不可变
Set(集合) 可变
Dictionary(字典)可变

下面我们先来学习下数字类型。

数字类型:

分为int、float、complex三种

整型 int:通常被称为是整型或整数,是正或负整数,不带小数点。如:10、78,在Python中int的长度是没有被限制的,这一点不同于java,因为int可做长整型使用。

整型的四种表现形式:
2 进 制:以’0b’开头。例如:'0b11011’表示10进制的27
8 进 制:以’0o’开头。例如:'0o33’表示10进制的27
10进制:正常显示
16进制:以’0x’开头。例如:'0x1b’表示10进制的27

各进间数字进行转换(内置函数):
bin(i):将i转换为2进制,以“0b”开头。
oct(i):将i转换为8进制,以“0o”开头。
int(i):将i转换为10进制,正常显示。
hex(i):将i转换为16进制,以“0x”开头。

布尔类型: Python3 中,bool 是 int 的子类,True 和 False 可以和整数相加, True1、False0 会返回 True,但可以通过 issubclas()来判断类型。

注意:下列对象的布尔值是False:
None;False;0(整型),0.0(浮点型);0L(长整形);0.0+0.0j(复数);“”(空字符串);[](空列表);()(空元组);{}(空字典)。

浮点 float :由整数部分与小数部分组成。如:2.65、3.1415。也可以用科学计数法表示 ,如 2.5e2 = 2.5 x 10 x 10 = 250
复数 complex:复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。(例:-4的平方根)

下面来学习两个Python的内置函数 isinstance() 和 type(),它们的作用都是返回对象的类型

不同之处是 type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。

我们具体来操作验证下,打开我们的交互式编程客户端 ,在开始 搜搜 IDLE
在这里插入图片描述

那么有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。
Python 数据类型转换可以分为两种:
隐式类型转换 - 自动完成
显式类型转换 - 需要使用类型函数来转换

所谓隐式转换,就是无需操作,程序会自动转,如两个数字类型进行运算时,程序会优先将 int 转为float 防止精度丢失。下面我们看个例子

num_int = 100
num_flo = 1.01
num_new = num_int + num_flo

print("datatype of num_int:",type(num_int))
print("datatype of num_flo:",type(num_flo))

print("Value of num_new:",num_new)
print("datatype of num_new:",type(num_new))

运行结果:

> python MyPython-14-1.py
datatype of num_int: <class 'int'>
datatype of num_flo: <class 'float'>
Value of num_new: 101.01
datatype of num_new: <class 'float'>

可见 int 和 float 相加变成了 float

再看下面的例子:

num_int = 100
num_str = "1"

print("Data type of num_int:",type(num_int))
print("Data type of num_str:",type(num_str))

print(num_int+num_str)

运行结果:

> python MyPython-14-2.py
Data type of num_int: <class 'int'>
Data type of num_str: <class 'str'>
Traceback (most recent call last):
  File "MyPython-14-2.py", line 7, in <module>
    print(num_int+num_str)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

我们看到int 和 str 相加报错了,因为无法进行隐式转换,这时就需要显式转换了

显示转换 就是要借助使用 int()、float()、str() 等预定义函数来执行显式类型转换。下面我们看个例子

示例如下:

# int() 强制转换为整型:
x = int(1)   # x 输出结果为 1
print(x)
y = int(2.8) # y 输出结果为 2
print(y)
z = int("3") # z 输出结果为 3
print(z)

# float() 强制转换为浮点型:
x = float(1)     # x 输出结果为 1.0
print(x)
y = float(2.8)   # y 输出结果为 2.8
print(y)
z = float("3")   # z 输出结果为 3.0
print(z)
w = float("4.2") # w 输出结果为 4.2
print(w)

# str() 强制转换为字符串类型:
x = str("s1") # x 输出结果为 's1'
print(x)
y = str(2)    # y 输出结果为 '2'
print(y)
z = str(3.0)  # z 输出结果为 '3.0'
print(z)

作为数字,程序中肯定会设计到数学运算,那么我们来看下,Pythoh的运算符都有哪些?

加法:+ 减法: - 乘法 * 除法 / 取余 //

下面看个案例:

print(1+2)  #运行结果  3
print(6-2)  #运行结果  4
print(3*3)  #运行结果  9
print(8/3)  #运行结果  2.6666666666666665
print(9//2) #运行结果  4

下面再介绍一个Python3 中用于生成随机数的random模块,看下具体用法:
用法1:random.randint(M,N) - 产生M~N的整数

代码示例如下:

import random

#random.randint(M,N)  - 产生M~N的整数
print(random.randint(0, 10))  

#random.random() - 产生 0 ~ 1的随机数(小数, 0可以取到,1取不到)
print(random.random())

#random.uniform(a,b) 用于生成一个指定范围内的随机符点数 如果a > b,则生成的随机数n: b <= n <= a。如果 a <b, 则 a <= n <= b。
print(random.uniform(1,10)) 
print(random.uniform(10,1))

#random.randrange([start], stop[, step]) 从指定范围内,按指定基数递增的集合中 获取一个随机数
print(random.randrange(10,30,2)) 

#random.choices(序列, k=N)  - 在序列中随机获取N个元素,以列表的形式返回。N默认是1
names = ['张三', '李四', '王五', '赵六']
print(random.choices(names, k=2))

#random.shuffle(列表)  -  随机打乱列表元素的位置
names = ['张三', '李四', '王五', '赵六']
random.shuffle(names)
print(names)

#random.sample(sequence, k) 从指定序列中随机获取指定长度的片断并随机排列。注意:sample函数不会修改原有序列。
names = ['张三', '李四', '王五', '赵六']
random.sample(names, 3)
print(names)

运行结果:

> python MyPython-14-5.py
0
0.46630578122938093
3.1194972730139434
8.65250379407953
18
['李四', '李四']
['张三', '赵六', '王五', '李四']
['张三', '李四', '王五', '赵六']
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值