天天看點

【02】Python:資料類型和運算符

寫在前面的話

任何程式設計語言一開始都是從概念出發的,但各種程式設計語言之間的概念可能又會有差異,是以,老生常談,我們還是需要從新過一遍 Python 的概念,當然,如果你已經是老司機了,完全可以一晃而過,不過老司機應該也不會再看這些基礎。

另外,程式設計一開始都是枯燥的,原因有兩,一是沒有成就感,二是茫然自己怎麼把這些知識串聯起來。是以,希望有幸看到這裡的都能夠靜下心好好看下去,柳暗花明,需要的是時間。你也可以一蹴而就去看架構。可能比較聰明就能跟着做出一些東西出來。

但是,那樣的人終究是一隻紙老虎,一開始很吓人,但慢慢的越來越笨批,因為本身基礎沒打好,如何建出高樓大廈,最多也就是海市蜃樓。

這裡順便介紹一下計算機的程式和指令:

計算機由運算器,控制器,存儲器,輸入裝置,輸出裝置組成,運算器和控制器組成中央處理器,主要執行運算和控制指令處理資料。

代碼注釋

說明:所謂的注釋,就是這一段内容在程式運作的時候不起作用,但是在我們檢視代碼的時候能給我清清楚楚說明這段代碼的作用。

注意:注釋是代碼之本,對你也好,對别人也好,沒注釋的代碼就是垃圾,不管你寫的多漂亮。

在 Python 中,注意一般兩種,單行注釋和多行注釋。

單行注釋:# 注釋内容,井号

多行注釋:""" 注釋内容 """,三個雙引号

我們一般在注釋符号後面加個空格,這是 PEP8 的規範,也便于閱讀。例如:

# 這是一個單行注釋

"""
這是多行注釋
這是多行注釋
這是多行注釋
這是多行注釋
"""      

在 Python 中有個特别的注釋:

# -*- coding: utf-8 -*-      

指定編碼類型,寫在 py 檔案開始,推薦這句話成為大家以後寫代碼的規範。

輸出輸入

輸出:之前我們使用了 hello world demo,然後列印輸出了内容,這裡通過執行個體詳細講講 print 的用法:

print('列印字元串:')
print('hello world')
print('列印逗号作為分隔符的多個内容:')
print('My', 'name', 'is', 'Dylan', '!')
print('列印數字:')
print(100)
print('列印算術:')
print(100 + 100)
print('列印字元串拼接:')
print('100' + '100')
print('列印多次:')
print('A' * 10)      

列印結果如圖:

【02】Python:資料類型和運算符
注意:如果兩種不同類型的資料相 + 拼接,如 100 + '100',會報錯:TypeError: can only concatenate str (not "int") to str

輸入:使用者自己輸入内容指派給變量,并且能夠被程式後面使用。

my_name = input("Plz input your name:")
print('My name is', my_name)      

結果:

【02】Python:資料類型和運算符
注意:input 輸入的值都是字元串,如果你需要的并不是字元串,記得對值得類型就行轉換 

變量常量

變量:存儲資料的載體,計算機中變量實際是一塊記憶體空間,能夠被讀取和修改。

在 python 中,變量命名有如下規則:

1. 數字,字母,下劃線組成,不能字母開頭。

2. 區分大小寫。

3. 不用跟系統關鍵字同名,如:print

這裡順便提一提 PEP8 規範,這是一個非常嚴格的規範,但是希望大家都能遵守:

1. 小寫字母組成,單詞之間下劃線連接配接。

2. 受保護的執行個體屬性單下劃線開頭,後面會說。

3. 私有的執行個體屬性使用雙下劃線開頭,後面會說。

4. 見名知義。

例如:

# 變量定義
my_name = "Dylan"
my_age = 25
is_boy = True
user_info = None

# 變量引用
print('My name is', my_name)
print('My age is', my_age)
print('You are boy:', is_boy)
print('Desc:', user_info)      

結果: 

【02】Python:資料類型和運算符

常量:這裡就一個特殊的,π,3.1415926

資料類型

我們這裡隻是簡單的介紹一下資料類型:

1. 整數:

包括正整數,負整數,0。python 是可以處理任意大小的整數。

2. 浮點數:

也就是小數,但是包含科學計數法部分,如:1.2x10^10,有些地方也把 10 寫成 e,如:1.2e10,0.0012 寫成 1.2e-3。

值得注意的是,在 Python 中,整數永遠是精确的,但是小數可能是結果四舍五入而來。

3. 字元串:

單引号或者雙引号括起來的任意文本 ,如:"abc"。

當然,在字元串中有些特殊的,比如 \(轉義符),幾種常見的轉義符:\n 換行,\t 制表符,\\ 符号本身

不轉義可以使用 r。如下執行個體:

print('hello\nworld')
print('hello\tworld')
print('\\n\\')
print(r'hello\nworld')      
【02】Python:資料類型和運算符

4. 布爾類型:

至于兩個 True 和 False。可以用于判斷,後面會用到。

5. 空值:

隻有一個,None,注意 Node 不是 0。

檢視資料類型:type(變量)

a = 'hello'
print(type(a))      
【02】Python:資料類型和運算符

資料類型轉換方法:

方法 作用
int() 将一個數字或者本身是數字的字元串轉換成整型
float() 将字元串轉換成小數
str() 将指定對象轉換成字元串
chr() 将整數編碼成對應的字元串,也就是傳回在數字對應ASCII 表中的值
ord() 将字元串(一個字元)轉換成對應編碼(整數),也就是傳回字母傳回在 ASCII 表中的數字

示例:

a = 3.1415926
print(int(a))

b = 3
print(float(b))

c = 123
print(type(str(c)))

d = 65
print(chr(d))

f = 'A'
print(ord(f))      
【02】Python:資料類型和運算符

格式化輸出

我們隻需要記住幾個常用就是了:%d 整數占位符,%f 浮點數占位符,%s 字元串占位符,%x 十六進制整數

和轉義符 \ 一樣,% 的轉義符就是 %,是以輸出 % 就是 %%。

示例如下:

# 單個占位符
print('My name is %s' % 'Dylan')

# 多個占位符
print('My name is %s,age is %d!' % ('Dylan', 25))

# 小數保留位數
print('%.2f' % 3.1415926)

# 右對齊指定位數,不夠前面補充字元:
print('%3d' % 2)
print('%03d' % 2)

# 左對齊
print('%-5d#hello' % 2)

# 百分比
print('%d%%' % 10)      
【02】Python:資料類型和運算符

當然還有另外一種格式化方式,隻是用的比較少:

print('My name is {}, age is {}'.format('Dylan', 25))
print('My name is {0}, age is {1}'.format('Dylan', 25))
print('My name is {}, age is {age}'.format('Dylan', age=25))      

運算符

參考如下表:

描述
[數字] [:] 下标/切片
~ + - 按位與/正/負
** + - * / % // 幂/加/減/乘/除/取模/取整(算數運算符)
>> << 右移/左移
& 按位與
> < >= <= == != 大于/小于/大于等于/小于等于/等于/不等于
is/is not 身份運算符
in/not in 成員運算符
not/or/and 非/或/和(邏輯運算符)

至于優先級,感興趣的可以自己下去研究:( ) > not > and > or

1. 算術運算符示例:

# 算術運算符
a = 3
b = 5

print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a % b)
print(a // b)
print(a ** b)      
【02】Python:資料類型和運算符

2. 比較運算符:

# 比較運算符
a = 3
b = 5

print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
print(a == b)
print(a != b)      
【02】Python:資料類型和運算符

3. 邏輯運算符:

and:同真為真

or:一真為真

not:取反

print(3 > 4 or 4 < 3 and 1 == 1)
print(2 > 1 and 3 < 4 or 4 > 5 and 2 < 1)      
【02】Python:資料類型和運算符

該例子僅供參考,如果你把邏輯以節寫的這麼複雜了,隻能說明是垃圾代碼。

數值在邏輯比較時候:

x or y,x 真,值 x,x 假,值 y

x and y,x 真,值 y,x 假,值 x

print(0 or 4 and 3 or 7 or 9 and 6)      

結果為:3

4. 成員關系運算符後面我們會單獨在提! 

練習示例

【1】輸入圓半徑計算周長和面積:

# 導入 pi
from math import pi

# 使用者輸入半徑
radius = float(input("請輸入圓的半徑:"))
# 計算周長和面積
cycle = 2 * pi * radius
area = pi * radius * radius
# 輸出結果
print("半徑為 %.2f 的圓的周長為 %.2f,面積為 %.2f" % (radius, cycle, area))      
【02】Python:資料類型和運算符

【2】判斷閏年和平年:

# 使用者輸入年份
year = int(input("請輸入年份:"))
# 判斷閏年(現在沒學 if,用上面的方法)
is_leap = ((year % 4 == 0) and (year % 100 != 0) or (year % 400 == 0))
print("年份 %s 是否是閏年:%s" % (year, is_leap))      
【02】Python:資料類型和運算符

小結 

這一節主要是 Python 基礎中得基礎,其中資料類型,運算符算是重中之重。輸入可能在以後寫代碼得時候用得比較少,但是輸出絕對不少。

在群裡之前總是有人在問代碼除了問題,不知道怎麼解決,工具就給他報個錯,然後人就傻了。其實對于初學者最為直覺的調試方法就是将有些步驟的結果通過 print 列印出來,看結果是否符合我們的預期。

自然問題很多就得以解決。還有部分不能解決的,就可以結合 type 來檢查,看類型是否正确。如果最後還不能解決,那問題可能就是你本身就寫錯了。