在程序中,有時咱們須要對2個數據進行求和,那麼該怎樣作呢?python
你們類比一下現實生活中,好比去超市買東西,每每我們須要一個菜籃子,用來進行存儲物品,等到全部的物品都購買完成後,在收銀臺進行結帳便可git
若是在程序中,須要把2個數據,或者多個數據進行求和的話,那麼就須要把這些數據先存儲起來,而後把它們累加起來便可windows
在Python中,存儲一個數據,須要一個叫作變量
的東西,以下示例:api
num1 = 100 #num1就是一個變量,就好一個小菜籃子 num2 = 99 #num2也是一個變量 result = num1 + num2 #把num1和num2這兩個"菜籃子"中的數據進行累加,而後放到 result變量中
說明:ide
菜籃子
,若是須要存儲多個數據,最簡單的方式是有多個變量,固然了也可使用一個程序中:函數
爲了更充分的利用內存空間以及更有效率的管理內存,變量是有不一樣的類型的,以下所示:學習
在
Python
中定義變量是 不須要指定類型(在其餘不少高級語言中都須要)spa
整型,也被稱之爲整數。整數就是數學中的數字。code
整型在Python中不受長度限制大小範圍orm
**定義 **
使用
type
函數能夠查看一個變量的類型
In [1]: 1 Out[1]: 1 In [2]: type(1) Out[2]: int
float() 函數用於將整數和字符串轉換成浮點數。
小數
In [1]: 1.0 Out[1]: 1.0 In [2]: type(1.0) Out[2]: float
運算、運算符優先級與整形是同樣。
python 中布爾值使用常量True 和 False來表示;注意大小寫
bool
是 int
的子類(繼承 int
),故 True == 1 False == 0
是會返回 Ture
bool
類型只有兩種狀態真或假
In [17]: bool(-1) Out[17]: True In [18]: bool(0) Out[18]: False In [19]: bool(None) Out[19]: False In [20]: bool("") Out[20]: False In [21]: bool(" ") Out[21]: True In [22]: def a(): ...: pass ...: ...: bool(a) Out[22]: True
總結
True 對 False 錯
布爾類型只有兩種狀態,True
or Flase
。數字除了零以外,其他均爲 True
,字符串除了空字符串以外都爲True
,對象除了空對象以外,其他均爲 True
。
如下假設變量a爲10,變量b爲20:
運算符 | 描述 | 實例 |
---|---|---|
== | 等於 - 比較對象是否相等 | (a == b) 返回 False。 |
!= | 不等於 - 比較兩個對象是否不相等 | (a != b) 返回 true. |
<> | 不等於 - 比較兩個對象是否不相等 | (a <> b) 返回 true。這個運算符相似 != |
> | 大於 - 返回x是否大於y | (a > b) 返回 False。 |
< | 小於 - 返回x是否小於y。 | (a < b) 返回 true。 |
>= | 大於等於 - 返回x是否大於等於y。 | (a >= b) 返回 False。 |
<= | 小於等於 - 返回x是否小於等於y。 | (a <= b) 返回 true。 |
Python語言支持邏輯運算符,如下假設變量 a 爲 10, b爲 20:
運算符 | 邏輯表達式 | 描述 | 實例 |
---|---|---|---|
and | x and y | 布爾"與" ,兩個條件都知足 | (a and b) 返回 20。 |
or | x or y | 布爾"或",兩個條件中知足一個 | (a or b) 返回 10。 |
not | not x | 布爾"非" ,否認以前的結果 | not(a and b) 返回 False |
邏輯運算符案例:
x = 1 y = 0 print(x and y) print(x or y) print(not x) print(not y) # 案例升級 x = 3 > 4 y = 5 > 4
如下表格列出了從最高到最低優先級的全部運算符:
運算符 | 描述 |
---|---|
** | 指數 (最高優先級) |
~ + - | 按位翻轉, 一元加號和減號 (最後兩個的方法名爲 +@ 和 -@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法減法 |
>> << | 右移,左移運算符 |
& | 位 'AND' |
^ | | 位運算符 |
<= < > >= | 比較運算符 |
<> == != | 等於運算符 |
= %= /= //= -= += *= **= | 賦值運算符 |
is is not | 身份運算符 |
in not in | 成員運算符 |
not and or | 邏輯運算符 |
運算符優先級案例:
if 4 > 2 ** 4 or True is 1 and '4' in "345": print(True) # 從右到左 False or True and True False # 從左到有運算 左目運算符 # 從右到左的 右目運算符
序列類型
在Python中若是我想表示字母怎麼辦呢?
字符串是 Python 中最經常使用的數據類型。咱們可使用引號( ' 或 " )來建立字符串。
建立字符串很簡單,只要爲變量分配一個值便可。
單引號和雙引號
在 Python
中咱們都知道單引號和雙引號均可以用來表示一個字符串,好比
print("好好學習,'每天向上'") 結果: 好好學習,'每天向上' print('"python"是一門優秀的語言') 結果: "python"是一門優秀的語言 一個單引號並非單引號,它是字符串建立的格式
整體來講沒有任何區別,只在單引號當普通字符時容易區分:如 var = "let's go"
三引號建立塊字符串
# 三引號實現塊註釋 """ 文檔註釋 三引號實現塊註釋 """ ''''''
在 Python 中不只支持 順序索引,同時還支持 倒序索引
In [14]: s[0] Out[14]: 'h' In [15]: s[1] Out[15]: 'e'
切片操做(slice)能夠從一個字符串中獲取子字符串(字符串的一部分)。咱們使用一對方括號、起始偏移量start、終止偏移量end 以及可選的步長step 來定義一個分片。
顧頭不顧尾
"hello world !"[start:stop:step] "hello world !"[起始值:結束值:步長]
In [16]: s[0:5] Out[16]: 'hello' In [17]: s[:5] Out[17]: 'hello' In [18]: s[5:] Out[18]: ' world !' In [19]: s[:] Out[19]: 'hello world !' In [20]: s[::2] Out[20]: 'hlowrd!'
把不是字符類型的 轉變成字符串
print
函數將信息輸出到控制檯%
被稱爲 格式化操做符,專門用於處理字符串中的格式
%
的字符串,被稱爲 格式化字符串%
和不一樣的 字符 連用,不一樣類型的數據 須要使用 不一樣的格式化字符格式化字符 | 含義 |
---|---|
%s | 字符串 |
%d | 有符號十進制整數,%06d 表示輸出的整數顯示位數,不足的地方使用 0 補全 |
%f | 浮點數,%.2f 表示小數點後只顯示兩位 |
%% | 輸出 % |
print("格式化字符串 %s" % 變量1) print("格式化字符串" % (變量1, 變量2...))
In [24]: '%s'%123 Out[24]: '123' In [25]: '%-10.3f '% 10.3 # 總共佔位十個,小數位三個 Out[25]: '10.300 ' In [26]: '%-10.2f '% 10.3 Out[26]: '10.30 '
格式化字符 | 含義 |
---|---|
%s | 字符串 |
%d | 有符號十進制整數,%06d 表示輸出的整數顯示位數,不足的地方使用 0 補全 |
%f | 浮點數,%.2f 表示小數點後只顯示兩位 |
%% | 輸出 % |
%c | %ASCII字符 |
%o | %8進制 |
%x | %16進制 |
%e | %科學計數法 |
# 保留小數點後兩位 In [1]: '{:.2f}'.format(12.333) Out[1]: '12.33' In [2]: '{a:.2f}'.format(a=12.333) Out[2]: '12.33' In [3]: '{a:6.2f}'.format(a=12.333) Out[3]: ' 12.33'
對齊輸出
# 左對齊 utf-8 萬國碼 In [5]: '{a:<10}'.format(a=12.3,b=13.44) Out[5]: '12.3 ' # 數字補x (填充右邊, 寬度爲4) In [6]: '{a:0<10}'.format(a=12.3,b=13.44) Out[6]: '12.3000000' # 兩邊對齊... In [7]: '{a:0^10}'.format(a=12.3,b=13.44) Out[7]: '00012.3000'
name = "hello" f'{ name }'
ipython
中定義一個 字符串,例如:hello_str = ""
hello_str.
按下 TAB
鍵,ipython
會提示 字符串 可以使用的 方法 以下:In [1]: hello_str. hello_str.capitalize hello_str.isidentifier hello_str.rindex hello_str.casefold hello_str.islower hello_str.rjust hello_str.center hello_str.isnumeric hello_str.rpartition hello_str.count hello_str.isprintable hello_str.rsplit hello_str.encode hello_str.isspace hello_str.rstrip hello_str.endswith hello_str.istitle hello_str.split hello_str.expandtabs hello_str.isupper hello_str.splitlines hello_str.find hello_str.join hello_str.startswith hello_str.format hello_str.ljust hello_str.strip hello_str.format_map hello_str.lower hello_str.swapcase hello_str.index hello_str.lstrip hello_str.title hello_str.isalnum hello_str.maketrans hello_str.translate hello_str.isalpha hello_str.partition hello_str.upper hello_str.isdecimal hello_str.replace hello_str.zfill hello_str.isdigit hello_str.rfind
提示:正是由於 python 內置提供的方法足夠多,才使得在開發時,可以針對字符串進行更加靈活的操做!應對更多的開發需求!
方法 | 說明 |
---|---|
string.strip() | 截掉 string 左右兩邊的空白字符 |
string.split(str="") | 以 str 爲分隔符拆分 string,若是 num 有指定值, 則僅分隔 num + 1 個子字符串,str 默認包含 '\r', '\t', '\n' 和空格 |
string.join(seq) | 以 string 做爲分隔符,將 seq 中全部的元素(的字符串表示) 合併爲一個新的字符串 |
string.replace(old_str, new_str) | 把 string 中的 old_str 替換成 new_str |
經常使用高級方法案例:
In [4]: h = h.strip() In [5]: h Out[5]: 'hello world !' In [6]: h.split() Out[6]: ['hello', 'world', '!'] In [7]: h = h.split() In [8]: h Out[8]: ['hello', 'world', '!'] In [9]: " ".join(h) Out[9]: 'hello world !' In [10]: " hello world ! ".strip() Out[10]: 'hello world !' In [11]: " hello world ! ".strip().split() Out[11]: ['hello', 'world', '!'] In [12]: 'hello world'.replace('world', 'python') Out[12]: 'hello python'
方法 | 說明 |
---|---|
string.isalnum() | 若是 string 至少有一個字符而且全部字符都是字母或數字則返回 True |
string.isalpha() | 若是 string 至少有一個字符而且全部字符都是字母則返回 True |
string.isdecimal() | 若是 string 只包含數字則返回 True,全角數字 |
string.isdigit() | 若是 string 只包含數字則返回 True,全角數字 、⑴ 、\u00b2 |
string.isnumeric() | 若是 string 只包含數字則返回 True,全角數字 ,漢字數字 |
string.istitle() | 若是 string 是標題化的(每一個單詞的首字母大寫)則返回 True |
string.isspace() | 若是 string 中只包含空格,則返回 True |
string.islower() | 若是 string 中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是小寫,則返回 True |
string.isupper() | 若是 string 中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是大寫,則返回 True |
# 1. 判斷空白字符 space_str = " \t\n\r" print(space_str.isspace()) # 2. 判斷字符串中是否只包含數字 # 1> 都不能判斷小數 # num_str = "1.1" # 2> unicode 字符串 # num_str = "\u00b2" # 3> 中文數字 num_str = "一千零一" print(num_str) print(num_str.isdecimal()) print(num_str.isdigit()) print(num_str.isnumeric())
方法 | 說明 |
---|---|
string.startswith(str) | 檢查字符串是不是以 str 開頭,是則返回 True |
string.endswith(str) | 檢查字符串是不是以 str 結束,是則返回 True |
string.find(str, start=0, end=len(string)) | 檢測 str 是否包含在 string 中,若是 start 和 end 指定範圍,則檢查是否包含在指定範圍內,若是是返回開始的索引值,不然返回 -1 |
string.rfind(str, start=0, end=len(string)) | 相似於 find(),不過是從右邊開始查找 |
string.index(str, start=0, end=len(string)) | 跟 find() 方法相似,不過若是 str 不在 string 會報錯 |
string.rindex(str, start=0, end=len(string)) | 相似於 index(),不過是從右邊開始 |
string.replace(old_str, new_str, num=string.count(old)) | 把 string 中的 old_str 替換成 new_str 若是 num 指定,則替換不超過 num 次 |
方法 | 說明 |
---|---|
string.capitalize() | 把字符串的第一個字符大寫 |
string.title() | 把字符串的每一個單詞首字母大寫 |
string.lower() | 轉換 string 中全部大寫字符爲小寫 |
string.upper() | 轉換 string 中的小寫字母爲大寫 |
string.swapcase() | 翻轉 string 中的大小寫 |
In [12]: 'hello world'.capitalize() Out[12]: 'Hello world' In [13]: 'hello world'.title() Out[13]: 'Hello World'
方法 | 說明 |
---|---|
string.ljust(width) | 返回一個原字符串左對齊,並使用空格填充至長度 width 的新字符串 |
string.rjust(width) | 返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串 |
string.center(width) | 返回一個原字符串居中,並使用空格填充至長度 width 的新字符串 |
In [2]: "hello world !".center(20) Out[2]: ' hello world ! '
方法 | 說明 |
---|---|
string.lstrip() | 截掉 string 左邊(開始)的空白字符 |
string.rstrip() | 截掉 string 右邊(末尾)的空白字符 |
string.strip() | 截掉 string 左右兩邊的空白字符 |
In [3]: ' hello world ! '.strip() Out[3]: 'hello world !'
方法 | 說明 |
---|---|
string.partition(str) | 把字符串 string 分紅一個 3 元素的元組 (str前面, str, str後面) |
string.rpartition(str) | 相似於 partition() 方法,不過是從右邊開始查找 |
string.split(str="", num) | 以 str 爲分隔符拆分 string,若是 num 有指定值,則僅分隔 num + 1 個子字符串,str 默認包含 '\r', '\t', '\n' 和空格 |
string.splitlines() | 按照行('\r', '\n', '\r\n')分隔,返回一個包含各行做爲元素的列表 |
string.join(seq) | 以 string 做爲分隔符,將 seq 中全部的元素(的字符串表示)合併爲一個新的字符串 |
運算符 | Python 表達式 | 結果 | 描述 |
---|---|---|---|
+ | "1,2," + "3, 4" | "1, 2, 3, 4" | 合併 |
* | "Hi! " * 4 | 'Hi! Hi! Hi! Hi!' | 重複 |
in | '3' in "1, 2, 3" | True | 元素是否存在 |
not in | 4 not in"1, 2, 3" | True | 元素是否不存在 |
> >= == < <= | "2" < "3" | True | 元素比較 |
浮點數轉化爲整形(顯示轉化)
In [3]: int(1.0) Out[3]: 1 In [4]: float(1) Out[4]: 1.0
隱式轉化,系統背後默認進行轉換
In [5]: 1/2 Out[5]: 0.5
函數 | 說明 |
---|---|
int(x [,base ]) | 將x轉換爲一個整數 |
long(x [,base ]) | 將x轉換爲一個長整數 |
float(x ) | 將x轉換到一個浮點數 |
complex(real [,imag ]) | 建立一個複數 |
str(x ) | 將對象 x 轉換爲字符串 |
repr(x ) | 將對象 x 轉換爲表達式字符串 |
eval(str ) | 用來計算在字符串中的有效Python表達式,並返回一個對象 |
tuple(s ) | 將序列 s 轉換爲一個元組 |
list(s ) | 將序列 s 轉換爲一個列表 |
chr(x ) | 將一個整數轉換爲一個字符 |
unichr(x ) | 將一個整數轉換爲Unicode字符 |
ord(x ) | 將一個字符轉換爲它的整數值 |
hex(x ) | 將一個整數轉換爲一個十六進制字符串 |
oct(x ) | 將一個整數轉換爲一個八進制字符串 |
a = '100' # 此時a的類型是一個字符串,裏面存放了100這3個字符 b = int(a) # 此時b的類型是整型,裏面存放的是數字100 print("a=%d"%b)
全部的 ASCII
碼均可以用 「\」
加數字(通常是8進制數字)來表示。而C中定義了一些字母前加 "\"
來表示常見的那些不能顯示的 ASCII
字符,如 \0,\t,\n
等,就稱爲轉義字符,由於後面的字符,都不是它原本的 ASCII 字符意思了。
轉義字符實現換行
特殊意義的字符
轉義字符 | 說明 |
---|---|
\b | 退格符 |
\n | 換行符 |
\r | 回車符 |
\t | 製表符 |
" | 雙引號 |
' | 單引號 |
\ | 反斜線 |
print("三引號\n實現\n換行") """ 一個反斜槓不是反斜槓,是轉義字符 兩個反斜槓纔是反斜槓 windows下文件分隔符 In [12]: os.getcwd() Out[12]: 'C:\\Users\\Administrator' """ var ='let\'s go' # 轉義字符直線換行 var = 'let \ \'s go '
計算機只能識別 0 與 1
str
—— 字符串bool
—— 布爾(真假)int
—— 整數float
—— 浮點數(小數)Python
中定義變量時須要指定類型嗎?
Python
能夠根據 =
等號右側的值,自動推導出變量中存儲數據的類型