Python[基础]笔记回顾(二) By:XLY23333
第二章 基本数据类型
文章目录
一.数字类型
Pyhthon提供3种数字类型:整数(int)、浮点数(float)、复数。
(一)整数类型< int >
1.整型的四个进制
十进制、二进制、八进制、十六进制
进制种类 | 引导符号 | 描述 | 例 |
---|---|---|---|
二进制 | 0b或0B | 由字符0和1组成 | 0b1010 |
八进制 | 0o或0O | 由字符0 ~ 7组成 | 0o12 |
十进制 | None | 默认情况 | 10 |
十六进制 | 0x或0X | 由字符0~9 ,a~f 或A~F组成 | 0xa |
2.整型进制间的相互转换
bin(x) 将x转换为二进制整型
oct(x) 将x转换为八进制整型
int(x) 将x转换为十进制整型
hex(x) 将x转换为十六进制整型
a=b=c=d=10
print(bin(a))#二进制
print(oct(b))#八进制
print(int(c))#十进制
print(hex(d))#十六进制
ouput
0b1010
0o12
10
0xa
3.不同数据类型间的转换
type(x) 对x变量类型进行判断
int(x) 将x转换为整型
float(x) 将x转换为浮点型
str(x) 将x转换为字符串型
ps:除法(/)和浮点数输入会自动 < int > → \rightarrow → < float >,其他eval进的变量均为**< int >,未eval进的为< str >**
a=b=c=d=10#均为int
a=type(a)#判断类型
print(type(a))
b=int(b)#整型→整型
print(type(b))
c=float(c)#整型→浮点型
print(type(c))
d=str(d)#整型→字符串型
print(type(d))
output
<class 'type'>
<class 'int'>
<class 'float'>
<class 'str'>
(二)浮点数类型< float >
1.浮点型的小数要求
Python语言中要求浮点型必须带有小数部分
2.浮点型的表示方式
两种方式:一般表示法和科学计数法
表示法 | 结构 | 解释 | 例 |
---|---|---|---|
一般表示法 | 同一般的小数 | 同一般的小数 | 114.514 |
科学计数法 | < A >e< B > | A$\times$10B | 1.14514e+2 |
3.运算精度属性
整型的运算精度比浮点型高
4.不确定尾数问题
受限于计算机表示浮点数使用的存储宽度,计算的二进制数并不是0.1和0.2,而是计算机内部最接近0.1和0.2的二进制数。求得的数反映到十进制表示上,就会产生一个不确定的尾数,至于尾数的多少,计算机内部会根据二进制运算确定产生,浮点数大都是一个近似的值。
print(0.1+0.2)
#output:0.30000000000000004
if 0.1+0.2==0.3:
print("True")
else:
print("False")
#output:False
#0.1+0.2=0.30000000000000004≠0.3
同样的情况c/c++也存在
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{float a,b,c;
cin>>a>>b;
c=a+b;
cout<<"数据测试:c=a+b"<<endl;
cout<<"常规cout输出:c="<<c<<endl;
cout<<"cout-20位小数输出:c="<<setprecision(20)<<c<<endl;
printf("printf默认输出:c=%f\n",c);
cout<<"测试c是否等于0.3:";
if(c==0.3) cout<<"YES!";
else cout<<"NO!";
return 0;}
5.四舍五入函数 round()
(1)round() 函数
round(<Number$>)
round(< Number >,< 保留位数 >)
(2)四舍五入到整数位数
round(< Number >)
print(round(2.7))
#output:3
print(round(2.4))
#output:2
(3)四舍五入到指定小数位数
round(< Number >,<正整数>)
即保留<正整数>位的小数
print(round(114.514,1))#保留一位小数
#output:114.5
print(round(114.514,2))#保留两位小数
#output:114.51
(4)四舍五入到指定整数位数
round(< Number >,<负整数>)
即保留到10|<负整数>|位
print(round(121212,-2))#保留到10的二次方[100]位(百位)
#output:121200
print(round(121212,-3))#保留到10的三次方[1000]位(千位)
#output:121000
(5)*银行家舍入法 ROUND HALF EVEN
“5入"情况遵循"银行家舍入法”(ROUND HALF EVEN):
如果数字与两边(相同位数)的数字相等,就向偶数方向舍入,如果不相等,就是就近舍入。
(Round to nearest with ties going to nearest even integer.)
即:"5入"情况要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即"5入"后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。
print(round(1.4))#不进位
#ouput:1
print(round(1.5))#舍‘5’位
#output:1
print(round(2.5))#进位
#output:2
print(round(2.51))#一定进位
#output:3
(三)复数类型
1.基本定义
基本单位元素: j,定义j2=-1
2.复数表示
a+bj
a b j bj 实数&实部 复部 复数单位 复数 ps:若b=1,则1不可省略
复数中的实虚部都是浮点型< float >
3.获取复数的实虚部
< Plural >.real
< Plural >.imag
z=3+2j;
print(z.real)#取实部
print(z.imag)#取虚部
output
3.0
2.0
(四)数字类型的运算
1.数值运算操作符
output-type:
int之间 → \rightarrow →与操作符有关
int和float → \rightarrow →float
int/float和Plural → \rightarrow →Plural
操作符及运算 | 描述 | 操作符及运算 | 描述 |
---|---|---|---|
x+y | 求和 | x-y | 求差 |
x*y | 求积 | x/y | 求商(output:< float >) |
x//y | 商后取整(整除) | x%y | 商后取余(取余) |
x**y | x的y次幂 | ||
-x | 一个数的负数 | +x | 一个数的本身 |
2.数值运算函数
运算函数 | 描述 |
---|---|
abs(x) | x的绝对值 |
divmod(x,y) | (x//y,x%y),输出为二元组 |
pow(x,y)或pow(x,y,z) | x** y或**(x** y)%z** |
round(x)或round(x,d) | 对x的值保留d位小/整数 |
max(x1,x2, ⋯ \cdots ⋯,xn) | 取最大值 |
min(x1,x2, ⋯ \cdots ⋯,xn) | 取最小值 |
3.其他操作符
(1)逻辑
操作符 | 描述 |
---|---|
and | 布尔“与” |
or | 布尔“或” |
not | 布尔“非” |
(2)比较
操作符 | 描述 | 操作符 | 描述 |
---|---|---|---|
< | 小于 | <= | 小于等于 |
> | 大于 | >= | 大于等于 |
== | 等于 | != | 不等于 |
(3)bool判断
对象/常量 | 值 | 对象/常量 | 值 |
---|---|---|---|
“” | Flase | “python” | Ture |
0 | Flase | 1 | Ture |
>=1 | Ture | <=1 | Ture |
[]空列表 | Flase | ()空元组 | Flase |
{}空字典 | Flase | None | Flase |
(4)位运算操作(二进制)
操作符 | 操作含义 | 示例 | 操作符 | 操作含义 | 示例 |
---|---|---|---|---|---|
& | 按位与 | a&b | | | 按位或 | a|b |
~ | 按位取反 | ~a | ^ | 按位异或 | a^b |
<< | 左移 | a<<b | >> | 带符号右移 | a>>b |
这里额外补充-下怎么将十进制转换为=进制:
将一个十进制正整数转换为二进制数的时候,只需要通过除2取余的方法即可;将1个十进制负整数转换为二进制数需要以补码的形式表示,其转换方式,简单的一句话就是:先按正数转换,然后取反加1。
按位与(&):都是1,才取1,否则为0。
按位或(|):存在1,就取1,均不为1,即为0。
按位取反(~):每个位上都取相反值,1变成0, 0变成1。
按位异或(^):存在两个二进制数,当相应位上的数字不相同时,才取1,若相同,即为0。
左移(<<n):将-个数各二进制位全部向左移动若干位。(就相当于在右边加n个0)
右移(>>n):将-个数各二进制位全部向右移动若干位。(就相当于在左边加n个0)