2020年3月11日 第二章 基本數(shù)據(jù)類型、運算符和表達(dá)式 -1

第二章 基本數(shù)據(jù)類型、運算符和表達(dá)式 -1

1.基本數(shù)據(jù)類型

2.運算符

3.常用內(nèi)置函數(shù)

4.表達(dá)式、賦值語句與運算符的優(yōu)先級

5.math庫

數(shù)據(jù)類型概述

數(shù)據(jù)類型

  • 計算機(jī)對數(shù)據(jù)進(jìn)行運算的時候,需要確定數(shù)據(jù)的類型和含義
  • 確定了數(shù)據(jù)類型,才能確定變量的存儲以及操作
  • 計算機(jī)對數(shù)據(jù)的識別和處理有兩個基本要求,確定性和高效性
  • Python中常用的數(shù)據(jù)類型包括數(shù)值類型、字符串類型、布爾類型等。

Python我們身邊的計算器

數(shù)值類型

  • 整數(shù)
  • 浮點數(shù)
  • 負(fù)數(shù)

數(shù)值類型的運算

  • 數(shù)值運算操作符
  • 數(shù)值運算函數(shù)
  • math庫

數(shù)值類型

數(shù)值類型

  • 表示數(shù)值或數(shù)字的數(shù)據(jù)類型
  • 在Python中提供3種數(shù)值類型,整數(shù)、浮點數(shù)和復(fù)數(shù),分別對應(yīng)數(shù)學(xué)中的整數(shù)、實數(shù)和復(fù)數(shù)。
>>> 3+5
8            #整數(shù)
>>> 3.14*2  
6.28         #浮點數(shù)
>>> 5+6j    #復(fù)數(shù)
(5+6j)

整數(shù)類型

  • 與數(shù)學(xué)中的整數(shù)概念一致
  • 共有4種進(jìn)制表示:十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制,默認(rèn)采用十進(jìn)制,其他進(jìn)制需要增加引導(dǎo)符(不區(qū)分大小寫)
  • 進(jìn)制引導(dǎo)符
    • 二進(jìn)制 0b或0B 如:0b101,0B1010
    • 八進(jìn)制 0o或0O 如:0o127, 0O345
    • 十六進(jìn)制 0x或0X 如:0x12AB, 0x34EF3
  • 理論上的取值范圍是[-∞,+ ∞]
  • 實際上的取值范圍受限于運行Python程序的計算機(jī)內(nèi)存大小
  • 除極大數(shù)的運算外,一般認(rèn)為整數(shù)類型沒有取值范圍限制
>>> 127     #十進(jìn)制數(shù)127
127
>>> 0b1111111    #二進(jìn)制數(shù)
127
>>> 0o177   #八進(jìn)制數(shù)
127  
>>> 0x7f     #十六進(jìn)制數(shù)
127
>>>    #無論輸入的是幾進(jìn)制,輸出默認(rèn)都以十進(jìn)制顯示數(shù)據(jù)

浮點數(shù)類型

  • 與數(shù)學(xué)中實數(shù)的概念一致,表示帶有小數(shù)的數(shù)值
  • Python要求浮點數(shù)類型必須帶有小數(shù)部分,小數(shù)部分可以是0,以區(qū)分浮點數(shù)和整數(shù),如100.0,100
  • 浮點數(shù)有兩種表示方法:
    • 十進(jìn)制表示: -55.96,3.1415926
    • 科學(xué)計數(shù)法:用e或E作為冪的符號,以10為基數(shù),如 3.1E5表示3.1*10^5
  • 數(shù)值范圍和小數(shù)精度受不同計算機(jī)系統(tǒng)的限制
  • 浮點運算結(jié)果中最長可輸出17位數(shù)字,然而只有前15位數(shù)字確定是正確的,因此存在“不確尾數(shù)”
  • 對于除高精度科學(xué)計算外的絕大部分運算來說,浮點數(shù)類型的數(shù)值范圍和小數(shù)精度足夠“可靠”
  • 一般認(rèn)為,浮點數(shù)類型沒有數(shù)值范圍限制,運算結(jié)果準(zhǔn)確
>>> 77.56+88.98
166.54000000000002
>>> 3.14*2.5
7.8500000000000005
>>> 9.6e5
960000.0
>>> 12.56**20
9.5453704557821e+21

數(shù)值類型的運算

數(shù)值運算操作符

+、-、%、//、*、/、+-(正負(fù)號)、**

數(shù)值運算函數(shù)

  • abs(x)
  • max(x1,x2,x3)
  • round(x[,ndigits])
  • ……

math庫

  • math.sqrt(x)
  • math.exp(x)
  • math.pow(x,y)
  • ……

數(shù)值運算操作符

數(shù)值運算符優(yōu)先級 ,由低→高

+、-%//*、/+-(正負(fù)號)**

運算符 描述
x+y 加法,x與y之和
x-y 減法,x與y之差
x*y 乘法,x與y之積
x/y 除法,x與y之商
x//y 整除(地板除),x與y之整數(shù)商,即:不大于x與y之商的最大整數(shù)。如5/3返回1;-5/3返回-2
x%y 取余,x與y之商的余數(shù),也成為模運算
-x 負(fù)號,x的負(fù)值,即:x*(-1)
+x 正號,x本身
x**y 乘方,x的y次冪,即:x^y,如:2**3返回8

注意

  • 數(shù)值運算可能改變結(jié)果的數(shù)據(jù)類型,類型的改變與運算符有關(guān)
  • 整數(shù)和浮點數(shù)混合運算,輸出結(jié)果是浮點數(shù)
  • 整數(shù)之間運算,產(chǎn)生結(jié)果類型與操作符有關(guān),除法運算(/)的結(jié)果是浮點數(shù)
  • 整數(shù)或浮點數(shù)與復(fù)數(shù)運算,輸出結(jié)果是復(fù)數(shù)
>>> 77.56+8
85.56
>>> 6/3
2.0
>>> 8%3
2
>>> 8.0%3
2.0
>>>- 8%3
1
>>> 8%-3
-1
#用戶輸入一個整數(shù),由計算機(jī)判斷該數(shù)是偶數(shù)還是奇數(shù)
N=int(input("N="))
if N%2 == 0:
print("該數(shù)是偶數(shù)!")
else:
print("該數(shù)是奇數(shù)")

注意: x//y 返回不大于x與y之商的最大整數(shù)即結(jié)果向- ∞舍入

>>> 50//4
12
>>> 50.0//4
12.0
>>> -50//4
-13
>>> -50.0//4
-13.0

強(qiáng)調(diào)

  • 其中二元操作符(+、-、*、/、//、%、**)都可以與賦值符號(=)相連,形成增強(qiáng)賦值操作符,能夠簡化對同一變量賦值語句的表達(dá)
  • +=、-=、*=、/=、//=、%=、**=
    如:
    x=3
    x=x+1
    相當(dāng)于:
    x=3
    x+=1
>>> x=25
>>> x%=2   #相當(dāng)于x=x%2
>>>print( x)
1
>>> y=7.0
>>> y*=3   #相當(dāng)于y=y*3
>>> print(y)
21.0

數(shù)值運算函數(shù)

Python解釋器自身提供了一些預(yù)裝函數(shù),用于完成對參數(shù)的特定運算,稱為“內(nèi)置函數(shù)”,其中包括的主要用于數(shù)值運算的函數(shù)如下表所示:

函數(shù) 說明
abs(x) 返回x的絕對值,x可以為整數(shù)、浮點數(shù)或整數(shù),x為復(fù)數(shù)時,返回它的模
divmod(x,y) 返回x//y和x%y的結(jié)果
pow(x,y[,z]) 冪函數(shù),返回x**y和或(x**y)%z的值
round(x[,n]) 對x進(jìn)行四舍五入,保留n位小數(shù);若省略n,則返回整數(shù);若n為復(fù)數(shù),則對小數(shù)點前n位進(jìn)行四舍五入
max(x1,x2,......xn) 返回多個參數(shù)中的最大值,n的值沒有限定
min(x1,x2,......xn) 返回多個參數(shù)中的最小值,n的值沒有限定
sum([x1,x2,......xn]) 返回數(shù)值型序列中所有元素的和
>>> 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的標(biāo)準(zhǔn)庫,提供了諸多的數(shù)學(xué)函數(shù),可以實現(xiàn)整數(shù)和浮點數(shù)的數(shù)學(xué)運算。
  • math庫提供了4個數(shù)學(xué)常數(shù)和44個函數(shù)。44個函數(shù)共分為4大類,包括16個數(shù)值表示函數(shù),8個冪對數(shù)函數(shù),16個三對數(shù)函數(shù)和4個高等特殊函數(shù)
  • 使用時要引用該庫,格式為:
    import math
    from math import *
    from math import <函數(shù)名>
常數(shù) 說明
math.e 自然對數(shù),值為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庫的常用函數(shù)

函數(shù) 說明
math.fabs(x) 返回x的絕對值
math.ceil(x) 返回不小于x的最小整數(shù)(向上取整)
math.floor(x) 返回不大于x的最大整數(shù)(向下取整)
math.trunc(x) 返回x的整數(shù)部分
math.modf(x) 返回x的小數(shù)和整數(shù)
math.fmod(x,y) 返回x與y的余數(shù),注意與%返回結(jié)果略有不同
math.sqrt(x) 返回x的平方根
math.pow(x) 返回x的y次方
math.fsum([x,y,...]) 返回序列中各元素之和
math.factoria(x) 返回x的階乘

【例2-1】常用math庫函數(shù)舉例

>>> import math
>>> math.fabs(-5)       #返回-5絕對值,結(jié)果為浮點數(shù)5.0
5.0
>>> math.ceil(5.2)      #返回不小于5.2的最小整數(shù)
6
>>> math.ceil(-5.2)     #返回不小于-5.2的最小整數(shù)
-5
>>> math.floor(5.2)         #返回不大于5.2的最大整數(shù)
5
>>> math.floor(-5.2)    #返回不大于-5.2的最大整數(shù)
-6
>>> math.trunc(5.6)     #返回5.2的整數(shù)部分
5
>>> math.modf(5.2)      #返回5.2的小數(shù)和整數(shù)
(0.20000000000000018, 5.0)
>>> math.fmod(5,3)      #返回5除以2的余數(shù)
2.0

【例2-1】常用math庫函數(shù)舉例

>>> math.sqrt(3)          #返回正數(shù)的平方根
1.7320508075688772
>>> math.sqrt(-3)         #負(fù)數(shù)出錯
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
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庫函數(shù)應(yīng)用實例。分別輸入三角形的三條邊長,求三角形的面積、周長、最長邊長和最短邊長。

提示

  1. 根據(jù)海倫公式,p=(a+b+c)/2,S=√[p(p-a)(p-b)(p-c)]
  2. 假設(shè)輸入的三條邊滿足 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庫的其它函數(shù)(了解)

函數(shù) 說明
math.gcd(x,y) 返回整數(shù)x和y的最大公約數(shù)
math.degrees(x) 將弧度轉(zhuǎn)換為度
math.radians(x) 將度轉(zhuǎn)換為弧度
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中,賦值運算符=表示“賦值”,即將等號右側(cè)表達(dá)式的計算結(jié)果賦給左側(cè)變量,包含等號(=)的語句稱為“賦值語句”:
    <變量> = <表達(dá)式>
  • 此外,還有一種同步賦值語句,同時給多個變量并行賦值:
    < 變量1>, …, < 變量N> = < 表達(dá)式1>, …, < 表達(dá)式N>
    也可以寫成:
    < 變量1>=< 表達(dá)式1>;< 變量2>=< 表達(dá)式2>;……<變量N> =< 表達(dá)式N>
  • 鏈?zhǔn)劫x值 將同一個值賦給多個變量
    <變量1>=<變量2>=…=<變量n >=<表達(dá)式>

【例2-3】編寫程序輸入兩個數(shù)分別賦給變量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)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容