第二章 基本数据类型、运算符和表达式 -1
1.基本数据类型
2.运算符
3.常用内置函数
4.表达式、赋值语句与运算符的优先级
5.math库
数据类型概述
数据类型
- 计算机对数据进行运算的时候,需要确定数据的类型和含义
- 确定了数据类型,才能确定变量的存储以及操作
- 计算机对数据的识别和处理有两个基本要求,确定性和高效性
- Python中常用的数据类型包括数值类型、字符串类型、布尔类型等。
Python我们身边的计算器
数值类型
数值类型的运算
数值类型
数值类型
- 表示数值或数字的数据类型
- 在Python中提供3种数值类型,整数、浮点数和复数,分别对应数学中的整数、实数和复数。
>>> 3+5
8 #整数
>>> 3.14*2
6.28 #浮点数
>>> 5+6j #复数
(5+6j)
整数类型
- 与数学中的整数概念一致
- 共有4种进制表示:十进制、二进制、八进制和十六进制,默认采用十进制,其他进制需要增加引导符(不区分大小写)
- 进制引导符
- 二进制 0b或0B 如:0b101,0B1010
- 八进制 0o或0O 如:0o127, 0O345
- 十六进制 0x或0X 如:0x12AB, 0x34EF3
- 理论上的取值范围是[-∞,+ ∞]
- 实际上的取值范围受限于运行Python程序的计算机内存大小
- 除极大数的运算外,一般认为整数类型没有取值范围限制
>>> 127 #十进制数127
127
>>> 0b1111111 #二进制数
127
>>> 0o177 #八进制数
127
>>> 0x7f #十六进制数
127
>>> #无论输入的是几进制,输出默认都以十进制显示数据
浮点数类型
- 与数学中实数的概念一致,表示带有小数的数值
- Python要求浮点数类型必须带有小数部分,小数部分可以是0,以区分浮点数和整数,如100.0,100
- 浮点数有两种表示方法:
- 十进制表示: -55.96,3.1415926
- 科学计数法:用e或E作为幂的符号,以10为基数,如 3.1E5表示3.1*10^5
- 数值范围和小数精度受不同计算机系统的限制
- 浮点运算结果中最长可输出17位数字,然而只有前15位数字确定是正确的,因此存在“不确尾数”
- 对于除高精度科学计算外的绝大部分运算来说,浮点数类型的数值范围和小数精度足够“可靠”
- 一般认为,浮点数类型没有数值范围限制,运算结果准确
>>> 77.56+88.98
166.54000000000002
>>> 3.14*2.5
7.8500000000000005
>>> 9.6e5
960000.0
>>> 12.56**20
9.5453704557821e+21
数值类型的运算
数值运算操作符
+、-、%、//、*、/、+-(正负号)、**
数值运算函数
- abs(x)
- max(x1,x2,x3)
- round(x[,ndigits])
- ……
math库
- math.sqrt(x)
- math.exp(x)
- math.pow(x,y)
- ……
数值运算操作符
数值运算符优先级 ,由低→高
+、-
→ %
→ //
→ *、/
→ +-(正负号)
→ **
运算符 |
描述 |
x+y |
加法,x与y之和 |
x-y |
减法,x与y之差 |
x*y |
乘法,x与y之积 |
x/y |
除法,x与y之商 |
x//y |
整除(地板除),x与y之整数商,即:不大于x与y之商的最大整数。如5/3返回1;-5/3返回-2 |
x%y |
取余,x与y之商的余数,也成为模运算 |
-x |
负号,x的负值,即:x*(-1) |
+x |
正号,x本身 |
x**y |
乘方,x的y次幂,即:x^y,如:2**3返回8 |
注意
- 数值运算可能改变结果的数据类型,类型的改变与运算符有关
- 整数和浮点数混合运算,输出结果是浮点数
- 整数之间运算,产生结果类型与操作符有关,除法运算(/)的结果是浮点数
- 整数或浮点数与复数运算,输出结果是复数
>>> 77.56+8
85.56
>>> 6/3
2.0
>>> 8%3
2
>>> 8.0%3
2.0
>>>- 8%3
1
>>> 8%-3
-1
#用户输入一个整数,由计算机判断该数是偶数还是奇数
N=int(input("N="))
if N%2 == 0:
print("该数是偶数!")
else:
print("该数是奇数")
注意: x//y 返回不大于x与y之商的最大整数即结果向- ∞舍入
>>> 50//4
12
>>> 50.0//4
12.0
>>> -50//4
-13
>>> -50.0//4
-13.0
强调
- 其中二元操作符(+、-、*、/、//、%、**)都可以与赋值符号(=)相连,形成增强赋值操作符,能够简化对同一变量赋值语句的表达
- +=、-=、*=、/=、//=、%=、**=
如:
x=3
x=x+1
相当于:
x=3
x+=1
>>> x=25
>>> x%=2 #相当于x=x%2
>>>print( x)
1
>>> y=7.0
>>> y*=3 #相当于y=y*3
>>> print(y)
21.0
数值运算函数
Python解释器自身提供了一些预装函数,用于完成对参数的特定运算,称为“内置函数”,其中包括的主要用于数值运算的函数如下表所示:
函数 |
说明 |
abs(x) |
返回x的绝对值,x可以为整数、浮点数或整数,x为复数时,返回它的模 |
divmod(x,y) |
返回x//y和x%y的结果 |
pow(x,y[,z]) |
幂函数,返回x**y和或(x**y)%z的值 |
round(x[,n]) |
对x进行四舍五入,保留n位小数;若省略n,则返回整数;若n为复数,则对小数点前n位进行四舍五入 |
max(x1,x2,......xn) |
返回多个参数中的最大值,n的值没有限定 |
min(x1,x2,......xn) |
返回多个参数中的最小值,n的值没有限定 |
sum([x1,x2,......xn]) |
返回数值型序列中所有元素的和 |
>>> x=-25
>>> y=4
>>> abs(x)
25
>>>divmod(x,y)
(-7,3)
>>> pow(x,y)
390625
>>> pow(x,y,2)
1
>>> round(15.364,1)
15.4
>>>round(15.364,-1)
20.0
>>> max(10,20,15.38)
20
>>> min(10,20,15.38)
10
>>> sum((10,20,15.38))
45.38
math库
math库
- math库是Python的标准库,提供了诸多的数学函数,可以实现整数和浮点数的数学运算。
- math库提供了4个数学常数和44个函数。44个函数共分为4大类,包括16个数值表示函数,8个幂对数函数,16个三对数函数和4个高等特殊函数
- 使用时要引用该库,格式为:
import math
或from math import *
或from math import <函数名>
常数 |
说明 |
math.e |
自然对数,值为2.718281828459045 |
math.pi |
圆周率pi,值为3.141592653589793 |
>>> import math
>>> math.pi*2**2
12.566370614359172
>>> PI=math.pi
>>> round(PI,3)*2**2
12.568
Math库的常用函数
函数 |
说明 |
math.fabs(x) |
返回x的绝对值 |
math.ceil(x) |
返回不小于x的最小整数(向上取整) |
math.floor(x) |
返回不大于x的最大整数(向下取整) |
math.trunc(x) |
返回x的整数部分 |
math.modf(x) |
返回x的小数和整数 |
math.fmod(x,y) |
返回x与y的余数,注意与%返回结果略有不同 |
math.sqrt(x) |
返回x的平方根 |
math.pow(x) |
返回x的y次方 |
math.fsum([x,y,...]) |
返回序列中各元素之和 |
math.factoria(x) |
返回x的阶乘 |
【例2-1】常用math库函数举例
>>> import math
>>> math.fabs(-5) #返回-5绝对值,结果为浮点数5.0
5.0
>>> math.ceil(5.2) #返回不小于5.2的最小整数
6
>>> math.ceil(-5.2) #返回不小于-5.2的最小整数
-5
>>> math.floor(5.2) #返回不大于5.2的最大整数
5
>>> math.floor(-5.2) #返回不大于-5.2的最大整数
-6
>>> math.trunc(5.6) #返回5.2的整数部分
5
>>> math.modf(5.2) #返回5.2的小数和整数
(0.20000000000000018, 5.0)
>>> math.fmod(5,3) #返回5除以2的余数
2.0
【例2-1】常用math库函数举例
>>> math.sqrt(3) #返回正数的平方根
1.7320508075688772
>>> math.sqrt(-3) #负数出错
Traceback (most recent call last):
File "", line 1, in
ValueError: math domain error
>>> math.pow(5,3) #返回5的3次方
125.0
>>> 0.1+0.2+0.3
0.6000000000000001
>>> math.fsum([0.1, 0.2, 0.3]) #精确求和
0.6
>>> math.factorial(5) #返回5的阶乘
120
【例2-2】math库函数应用实例。分别输入三角形的三条边长,求三角形的面积、周长、最长边长和最短边长。
提示
- 根据海伦公式,p=(a+b+c)/2,S=√[p(p-a)(p-b)(p-c)]
- 假设输入的三条边满足 a>0 and b>0 and c>0 and a+b>c and b+c>a and a+c>b
#E2-2.py
import math
a=float(input("a="))
b=float(input("b="))
c=float(input("c="))
p=(a+b+c)/2
area=math.sqrt(p*(p-a)*(p-b)*(p-c))
circum=a+b+c
max_side=max(a,b,c)
min_side=min(a,b,c)
print("面积:",area)
print("周长:",circum)
print("长边为:",max_side)
print("短边为 :",min_side)
math库的其它函数(了解)
函数 |
说明 |
math.gcd(x,y) |
返回整数x和y的最大公约数 |
math.degrees(x) |
将弧度转换为度 |
math.radians(x) |
将度转换为弧度 |
math.sin(x) |
返回x(弧度)的三角正弦值 |
math.asin(x) |
返回x的反三角正弦值 |
math.cos(x) |
返回x(弧度)的三角余弦值 |
math.acos(x) |
返回x的反三角余弦值 |
math.tan(x) |
返回x(弧度)的三角正切值 |
math.atan(x) |
返回x的反三角正切值 |
math.atan2(x,y) |
返回x/y的反三角正切值 |
赋值语句
>>> a=3
>>> b=5
>>> a+b
8
>>> a,b=3,5
>>> a+b
8
>>> a=3;b=5
>>> a+b
8
>>> x=y=9
>>> x
9
>>> y
9
- Python中,赋值运算符
=
表示“赋值”,即将等号右侧表达式的计算结果赋给左侧变量,包含等号(=)的语句称为“赋值语句”:
<变量> = <表达式>
- 此外,还有一种同步赋值语句,同时给多个变量并行赋值:
< 变量1>, …, < 变量N> = < 表达式1>, …, < 表达式N>
也可以写成:
< 变量1>=< 表达式1>;< 变量2>=< 表达式2>;……<变量N> =< 表达式N>
- 链式赋值 将同一个值赋给多个变量
<变量1>=<变量2>=…=<变量n >=<表达式>
【例2-3】编写程序输入两个数分别赋给变量x和y,交换变量x和y的值,并输出
#方法一
x=float(input("x="))
y=float(input("y="))
t=x
x=y
y=t
print("x=",x)
print("y=",y)
#方法二
x=float(input("x="))
y=float(input("y="))
x,y=y,x
print("x=",x)
print("y=",y)