首頁>技術>

數字型別

Python 有 4 種類型的數字:

布林型整型浮點型複數(虛數)布林型(bool)

布林型數字有兩個值:True,False。

a = Trueb = False

在數值上,它們被計算成值為 1,0 的數。

c = 4 + True # 5d = Falseif d == 0:    print('d is False')

但是,不要像上面這樣寫程式碼,這會很奇怪。

整型(int)

任意大小的有符號值,或者以任意數為基數的有符號值。

a = 37b = -299392993727716627377128481812241231c = 0x7fa8      # Hexadecimald = 0o253       # Octale = 0b10001111  # Binary

常用操作:

x + y      Addx - y      Subtractx * y      Multiplyx / y      Divide (produces a float)x // y     Floor Divide (produces an integer)x % y      Modulo (remainder)x ** y     Powerx << n     Bit shift leftx >> n     Bit shift rightx & y      Bit-wise ANDx | y      Bit-wise ORx ^ y      Bit-wise XOR~x         Bit-wise NOTabs(x)     Absolute value
浮點型(float)

使用十進位制或者指數表示法來指定浮點數的值:

a = 37.45b = 4e5 # 4 x 10**5 or 400,000c = -1.345e-10

使用浮點數表示 IEEE 754 標準的雙精度。這與 C 語言中的 double 型別相同。

17 digits of precision

Exponent from -308 to 308

請注意,當代表小數時,浮點數是不精確的。

>>> a = 2.1 + 4.2>>> a == 6.3False>>> a6.300000000000001>>>

這不是 Python 的問題,而是 CPU 硬體上底層浮點硬體的問題。

常用操作:

x + y      Addx - y      Subtractx * y      Multiplyx / y      Dividex // y     Floor Dividex % y      Modulox ** y     Powerabs(x)     Absolute Value

除了按位運算子之外,浮點數的運算子與整數的運算子是一樣的。

其它數學函式可以在 math 中找到。

import matha = math.sqrt(x)b = math.sin(x)c = math.cos(x)d = math.tan(x)e = math.log(x)
比較

下面的比較/關係運算符可以應用於數字:

x < y      Less thanx <= y     Less than or equalx > y      Greater thanx >= y     Greater than or equalx == y     Equal tox != y     Not equal to

可以使用 and, or,not 組成更復雜的布林表示式。

這裡有一些例子:

if b >= a and b <= c:    print('b is between a and c')if not (b < a or b > c):    print('b is still between a and c')
轉換數字

型別名可以被用來將其它資料轉換為數字。

a = int(x)    # Convert x to integerb = float(x)  # Convert x to float

試試下面這些操作:

>>> a = 3.14159>>> int(a)3>>> b = '3.14159' # It also works with strings containing numbers>>> float(b)3.14159>>>
習題

提醒:這些習題假定你正在 practical-python/Work 目錄中操作,具體在 mortgage.py 檔案。

習題 1.7:戴夫的抵押貸款

戴夫決定從 Guido 的抵押貸款、股票投資和比特幣交易公司獲得 50 萬美元的 30 年期固定利率抵押貸款。利率是 5%,每月還款額是 2684.11 美元。

下面這個程式用於計算戴夫在抵押期內需要支付的總金額:

# mortgage.pyprincipal = 500000.0rate = 0.05payment = 2684.11total_paid = 0.0while principal > 0:    principal = principal * (1+rate/12) - payment    total_paid = total_paid + paymentprint('Total paid', total_paid)

輸入該程式並執行,你應該會得到答案為 966,279.6。

習題 1.8:額外付款

假設戴夫在抵押期的前 12 個月每月額外支付 1000 美元。

修改程式以包含這部分額外的付款,並且輸出已支付的總金額以及所需的月數。

當你執行這個新程式時,它應該報告 342 個月的總付款額是 929,965.62 。

習題 1.9:製作一個額外的付款計算器

修改程式,以便可以更一般地處理額外的付款資訊。做到這一點,以便使用者可以設定下面這些變數:

extra_payment_start_month = 61extra_payment_end_month = 108extra_payment = 1000

使程式檢視這些變數,並適當地計算總付款額 。如果戴夫從抵押期的第五年開始,每月額外支付 1000 每月並支付 4 年,那麼他將要支付多少?

習題 1.10:製作表格

修改程式,使其顯示迄今為止支付的月數,支付的總金額和剩餘的本金。輸出看起來應該像下面這樣:

1 2684.11 499399.222 5368.22 498795.943 8052.33 498190.154 10736.44 497581.835 13420.55 496970.98...308 874705.88 3478.83309 877389.99 809.21310 880074.1 -1871.53Total paid 880074.1Months 310
習題 1.11:獎金

使用該程式時,請修復程式以糾正發生在上個月的超額支付。

習題 1.12:一個謎

int() 函式和 float() 函式可以將其它型別的資料轉換為數字型別。示例:

>>> int("123")123>>> float("1.23")1.23>>>

考慮到這一點,你能否解釋下面這種行為?

>>> bool("False")True>>>

12
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 2.33 建立iSCSI虛擬磁碟和iSCSI目標