官术网_书友最值得收藏!

2.4 基本數(shù)據(jù)類型

微視頻

Python 3.x版本中有兩個(gè)簡(jiǎn)單的數(shù)據(jù)類型,即數(shù)字類型和字符串類型。

2.4.1 數(shù)字類型

Python 3.x版本支持int、float、bool、complex 4種數(shù)字類型。

大牛提醒

在Python 2中是沒有bool的,用數(shù)字0表示False,用1表示True。在Python 3中,把True和False定義成了關(guān)鍵字,但它們的值還是1和0,可以和數(shù)字相加。

1.int(整數(shù))

下面是整數(shù)的例子:

    >>> a = 666688
    >>> a
    666688

可以使用十六進(jìn)制數(shù)值來(lái)表示整數(shù),十六進(jìn)制整數(shù)的表示法是在數(shù)字之前加上0x,如0x80120000、0x100010100L。

例如:

    >>> a=0x6EEEFFFF
    >>> a
    1861156863
2.float(浮點(diǎn)數(shù))

浮點(diǎn)數(shù)的表示法可以使用小數(shù)點(diǎn),也可以使用指數(shù)的類型。指數(shù)符號(hào)可以使用字母e或E來(lái)表示,指數(shù)可以使用+/-符號(hào),也可以在指數(shù)數(shù)值前加上數(shù)值0,還可以在整數(shù)前加上數(shù)值0。

例如:

    6.66  12.  .007  1e100  3.14E-10  1e010  08.1

使用float()內(nèi)置函數(shù),可以將整數(shù)數(shù)據(jù)類型轉(zhuǎn)換為浮點(diǎn)數(shù)數(shù)據(jù)類型。例如:

    >>> float(660)
    660.0
3.bool(布爾值)

Python的布爾值包括True和False,只與整數(shù)中的1和0有對(duì)應(yīng)關(guān)系。例如:

    >>> True==1
    True
    >>> True==2
    False
    >>> False==0
    True
    >>> False==-1
    False

這里利用符號(hào)==判斷左右兩邊是否絕對(duì)相等。

4.complex(復(fù)數(shù))

復(fù)數(shù)的表示法是使用雙精度浮點(diǎn)數(shù)來(lái)表示實(shí)數(shù)與虛數(shù)的部分,復(fù)數(shù)的符號(hào)可以使用字母j或J。

例如:

    1.5 + 0.5j  1J  2 + 1e100j  3.14e-10j

數(shù)值之間可以通過運(yùn)算符進(jìn)行運(yùn)算操作。例如:

    >>> 50 + 40  #加法
    90
    >>> 5.6 - 2  #減法
    3.6
    >>> 30 * 15  #乘法
    450
    >>> 1/2      #除法,得到一個(gè)浮點(diǎn)數(shù)
    0.5
    >>> 1//2     #除法,得到一個(gè)整數(shù)
    0
    >>> 15 % 2   #取余
    1
    >>> 2 ** 10  #乘方
    1024

在數(shù)字運(yùn)算時(shí),需要注意以下問題:

(1)數(shù)值的除法(/)總是返回一個(gè)浮點(diǎn)數(shù),要獲取整數(shù)需使用//操作符。

(2)在整數(shù)和浮點(diǎn)數(shù)混合計(jì)算時(shí),Python會(huì)把整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)。

【例2.2】計(jì)算學(xué)生的總成績(jī)和平均成績(jī)(源代碼\ch02\2.2.py)。

    name="張小明"                                #保存學(xué)生的姓名
    print ("該學(xué)生的姓名是:"+name)
    maths=92.5                                   #保存學(xué)生的數(shù)學(xué)成績(jī)
    #使用內(nèi)置的str()函數(shù)可以將數(shù)值轉(zhuǎn)換為字符串
    print("該學(xué)生的數(shù)學(xué)成績(jī)是:"+str(maths))
    chinese=65.5                                 #保存學(xué)生的語(yǔ)文成績(jī)
    print("該學(xué)生的語(yǔ)文成績(jī)是:"+ str(chinese))
    english=80.5                                 #保存學(xué)生的英語(yǔ)成績(jī)
    print("該學(xué)生的英語(yǔ)成績(jī)是:"+ str(english))
    sum= maths+chinese+english                   #保存學(xué)生的總成績(jī)
    print("該學(xué)生的總成績(jī)是:"+str(sum))
    avg= sum/3                                   #保存學(xué)生的平均成績(jī)
    print("該學(xué)生的平均成績(jī)是:"+str(avg))
    #使用if語(yǔ)句判斷學(xué)生的成績(jī)?nèi)绾?
    if avg<65:
        print ("該學(xué)生的成績(jī)較差")
    if 65<=avg<75:
        print ("該學(xué)生的成績(jī)及格")
    if  75<=avg<90:
        print ("該學(xué)生的成績(jī)良好")
    if  avg>=90:
        print ("該學(xué)生的成績(jī)優(yōu)秀")

程序運(yùn)行結(jié)果如圖2-2所示。

圖2-2 例2.2的程序運(yùn)行結(jié)果

2.4.2 字符串類型

Python將字符串視為一連串的字符組合。在Python中,字符串屬于不可變序列,通常使用單引號(hào)、雙引號(hào)或者三引號(hào)括起來(lái)。這三種引號(hào)形式在語(yǔ)義上沒有區(qū)別,只是在形式上有些差別。其中單引號(hào)和雙引號(hào)的字符序列必須在一行上,而三引號(hào)內(nèi)的字符序列可以分布在連續(xù)的多行上。

例如下面的代碼:

    >>> a="張小明"          #使用雙引號(hào)時(shí),字符串的內(nèi)容必須在一行
    >>> b='最喜歡的水果'    #使用單引號(hào)時(shí),字符串的內(nèi)容必須在一行
    >>> c='''驟雨?yáng)|風(fēng)對(duì)遠(yuǎn)灣,滂然遙接石龍關(guān)。 野渡蒼松橫古木,斷橋流水動(dòng)連環(huán)。
    客行此去遵何路,坐眺長(zhǎng)亭意轉(zhuǎn)閑。'''
    >>> print (a)
    張小明
    >>> print (b)
    最喜歡的水果
    >>> print (c)
    驟雨?yáng)|風(fēng)對(duì)遠(yuǎn)灣,滂然遙接石龍關(guān)。 野渡蒼松橫古木,斷橋流水動(dòng)連環(huán)。
    客行此去遵何路,坐眺長(zhǎng)亭意轉(zhuǎn)閑。

【例2.3】輸出一個(gè)小屋圖形(源代碼\ch02\2.3.py)。

由于該字符畫有多行,所以使用三引號(hào)作為定界符比較合適。代碼如下:

    print('''
              @@@@@@@@@
             @          @
            @            @
           @               @
          @                  @
         @@@@@@@@@@@@@@@@@@@
           @                @
           @       @@@@@   @
           @       @ @ @   @
           @       @@@@@   @
           @                @
           @                @
           @@@@@@@@@@@@@@@
     ''')

程序運(yùn)行結(jié)果如圖2-3所示。

圖2-3 例2.3的程序運(yùn)行結(jié)果

大牛提醒

字符串開頭與結(jié)尾的引號(hào)要一致。

下面的案例將字符串開頭使用了雙引號(hào)、結(jié)尾使用了單引號(hào)。

    >>> a = "hello world'
    Traceback (  File "<interactive input>", line 1
        a = " hello world '
                             ^
    SyntaxError: invalid token

由此可見,當(dāng)字符串開頭與結(jié)尾的引號(hào)不一致時(shí),Python會(huì)顯示一個(gè)invalid token的信息。

2.4.3 數(shù)據(jù)類型的相互轉(zhuǎn)換

有時(shí)候,用戶需要對(duì)數(shù)據(jù)內(nèi)置的類型進(jìn)行轉(zhuǎn)換。數(shù)據(jù)類型的轉(zhuǎn)換,只需要將數(shù)據(jù)類型作為函數(shù)名即可。以下幾個(gè)內(nèi)置的函數(shù)可以執(zhí)行數(shù)據(jù)類型之間的轉(zhuǎn)換,這些函數(shù)返回一個(gè)新的對(duì)象,表示轉(zhuǎn)換的值。

1.轉(zhuǎn)換為整數(shù)類型

語(yǔ)法格式如下:

    int(x)

將x轉(zhuǎn)換為一個(gè)整數(shù)。例如:

    >>>int(3.6)
    3

大牛提醒

int()函數(shù)不能轉(zhuǎn)換成非數(shù)字類型的數(shù)值。例如,使用int()函數(shù)轉(zhuǎn)換字符串時(shí),將會(huì)提示ValueError錯(cuò)誤。例如:

    >>> int("16個(gè)工作日")
    Traceback (most recent call last):
      File "<pyshell#0>", line 1, in <module>
        int("16個(gè)工作日")
    ValueError: invalid literal for int() with base 10: '16個(gè)工作日'
2.轉(zhuǎn)換為小數(shù)類型

語(yǔ)法格式如下:

    float(x)

將x轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)。例如:

    >>> float (10)
    10.0
3.轉(zhuǎn)換為字符串類型

語(yǔ)法格式如下:

    str(x)

將x轉(zhuǎn)換為一個(gè)字符串。例如:

    >>>str(123567)
    '123567'

【例2.4】模擬出租車的抹零結(jié)賬行為(源代碼\ch02\2.4.py)。

假設(shè)出租車司機(jī)因?yàn)檎伊沐X比較麻煩,所以進(jìn)行抹零操作。這里int()函數(shù)將浮點(diǎn)型的變量轉(zhuǎn)換為整數(shù)類型,從而實(shí)現(xiàn)抹零效果。本案例還會(huì)用到str()函數(shù),主要作用是將數(shù)字轉(zhuǎn)換為字符串類型。

    ranges=5.6                       #保存乘客坐車的距離
    moneys=8+(ranges-3)*2            #計(jì)算總票價(jià)
    print("本次車費(fèi)是:"+ str(moneys))
    real_moneys=int(moneys)          #進(jìn)行抹零操作
    print("本次實(shí)付車費(fèi)是:"+ str(real_moneys))

程序運(yùn)行結(jié)果如圖2-4所示。

圖2-4 例2.4的程序運(yùn)行結(jié)果

主站蜘蛛池模板: 临安市| 安塞县| 曲靖市| 天峨县| 深州市| 乐安县| 江源县| 浏阳市| 紫阳县| 铜山县| 斗六市| 佛山市| 衡东县| 南陵县| 理塘县| 临潭县| 金昌市| 盐亭县| 遵义市| 潼南县| 灵石县| 大兴区| 日照市| 区。| 镇安县| 临桂县| 彭山县| 湟源县| 辽中县| 玛多县| 亳州市| 江都市| 沙湾县| 黑河市| 临湘市| 武乡县| 襄汾县| 资源县| 安岳县| 盈江县| 隆子县|