Python學習教程:基本資料型別

千鋒Python唐小強發表於2020-06-01

基本數字型別

首先我們開始認識一下基本的數字型別吧:

  • 整數型別
  • 浮點數型別
  • 複數型別

整數型別

1 整數型別其實與數學中的整數是一樣的定義,整數型別包括正整數,負整數,沒有取值範圍。pow(x,y),pow()函式,用來計算x的y次方2 整數型別還有四種進位制關係:

  • 十進位制 100 99 -125
  • 二進位制 0101001101 001110101
  • 八進位制 以0o或0O開頭 0o123, -0O456
  • 十六進位制 以0x或者0X開頭 0x9a

浮點數型別

  • 帶有小數點以及小數的數字
  • 其取值範圍基本無限制

這裡需要注意一下浮點數之間的運算會存在不定尾數的情況,不是語言的bug,是很多程式設計都會出現的情況。例如。0.1 + 0.3 = 0.4但是 0.1 + 0.2 = 0.30000000004就是因為二進位制與十進位制轉換的問題:0.1 
0.00011001100110011001100110011001100110011001100110011010 (二進位制表示) 53位二進位制表示小數部分,約
10-160.1000000000000000055511151231257827021181583404541015625 (十進位制表示)0.1 + 0.2 二進位制表示小數,可以無限接近,但不完全相同 結果無限接近0.3,但可能存在尾數

複數型別

複數型別與數學中複數的定義相同,大家可先了解一下,日後我們用到再去具體講解。

數字運算運算子

在程式設計中對於數字的操作是非常重要的,而數字之間的運算也是最常見的操作,對於掌握數字操作是一個很好地基礎。

  • x + y x與y相加
  • x - y x與y相減
  • x * y x與y相乘
  • x / y x與y相除
  • x // y x與y整數除,x與y之整數商 10//3結果是3
  • +X 表示 x的本身
  • -X表示負的X
  • x%y 餘數,取模運算 10%3 為 1

數字運算相關函式

  • abs() 絕對值函式 abs(-10) = 10
  • divmod(x,y) 取餘 商函式 同時輸出兩個數餘和商divmod(10,3) = (3,1)
  • pow(x, y)冪函式
  • round(x[, d]) 四捨五入,d是保留小數位數,預設值為0 round(-10.123, 2) 結果為 -10.12
  • max(x1,x2,xn)最大值函式 輸出其中最大的一個
  • min(x1,x2,xn)最小值函式 輸出其中最小的一個
  • int(x) 將X變成整型
  • float(x) 將X變為浮點型
  • complex(x)將X變成複數型別

例項分析–天天向上的力量

大家可以看下面這個例子:一年365天,每天進步1‰,累計進步多少呢? 1.001365一年365天,每天退步1‰,累計剩下多少呢? 0.999365那麼如何透過程式將問題解決呢?

dayup = 
pow(
1.001,
565)#每天進步千分之一

daydown = pow( 0.999, 365)#每天退步千分之一
print( '向上的值為:{:.2f},向下的值為:{:.2f}'. format(dayup,daydown))

我們再來思考一個問題:一年365天,一週5個工作日,每天進步1%一年365天,一週2個休息日,每天退步1%這種工作日的力量,如何計算呢

dayup = 
1.0 # 定義一個初始進步值

dayfoctor = 0.01 #定義每天進步百分之一
for i  in range( 365):#每年 365天 建立一個 for迴圈
    if i % 7 in [ 0, 6]: #取模運算
       dayup = dayup*( 1-dayfoctor)
    else:
       dayup = dayup*( 1+dayfoctor)
print( '工作日的力量:{:.2f}'.format(dayup))

(執行結果) 工作日的力量:4.63


for 
i  
in 
range(
365):

  if i % 7 in [0,6]:

分析這段程式碼,我們可以知道 建立一個for迴圈,i 是進步的天數,可以自動迴圈一年。if i % 7 in [0,6],對 i 進行取模運算,如果餘數為0則說明為為週末,如果餘數為6則說明為週六,就是退步的時間。那我們接著看這個問題:工作日模式要努力到什麼水平,才能與每天努力1%一樣?A君: 一年365天,每天進步1%,不停歇B君: 一年365天,每週工作5天休息2天,休息日下降1%,要多努力才能追上A呢?

def dayup(df):#建立函式

   dayup = 1.0#設定初始值
    for i in range( 365):
        if i % 7 in [ 0, 6]:
           dayup = dayup*( 1 - 0.01)
        else:
           dayup = dayup*( 1 + df)
    return dayup

dayfoctor = 0.01
while dayup(dayfoctor) < 37.2:#如果一年的增長值小於A的進步則繼續執行
   dayfoctor += 0.001
print( '工作日需要努力:{:.3f}'. format(dayfoctor))

這個程式碼借鑑了上一問的程式碼,但是為了判斷是否追上了A,所以加入了while語句,用作與判斷,透過while我們可以讓程式自己判斷是否超過了A,如果沒有超過則進步值自增0.001,如果超過A,則跳出程式,結束執行。

好了,透過我們今天的學習,我們知道了基本的數字型別,還有數字操作的一些知識,並且透過了一個例項來研究數字操作。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2695530/,如需轉載,請註明出處,否則將追究法律責任。

相關文章