Day2----Python學習之路筆記(2)
學習路線:
Day1 Day2 Day3 Day4 Day5 ...待續
一、簡單回顧一下昨天的內容
1. 昨天了解到了一些編碼的知識
1.1. 我們寫好的.py文件頭沒有加# -*- coding:utf-8 -*-這樣的聲明,那麽在Windows終端中調用Python2解釋器運行時,文件中的中文會顯示亂碼,為何?原來我們Windows終端是以GBK編碼來讀的,而Python2中不是默認的utf8的編碼格式。調用Python3解釋器就沒問題,有中文就不會出現亂碼,由此引出Python3的編碼格式。
1.2. Python3中是沒有字符這種編碼類型的,默認都是字節編碼,也就是沒有Unicode這種類型,但本質上它又全是Unicode,只是你看著它是字符編碼這種類型。(這句話有點拗口)
1.3. Python3的內部機制:utf-8形式寫入文件---->utf-8讀到內存中轉為Unicode的編碼形式---->Windows終端以GBK形式去讀的時候,Unicode轉換為GBK形式給顯示出來。(所以說Python3中沒編碼聲明# -*- coding:utf-8 -*-,中文不會亂碼)
1.4. utf-8和GBK編碼並不能直接轉換,中間要借助Unicode編碼作為橋梁,其實現原理可以用下面的圖表示:
1.5. 在文件內部用一種形式的編碼格式寫和存,但我們看的時候一般用另一種編碼格式去看的。
2. 動手開始編寫了一些簡單代碼
2.1. 學習了用Python語言寫一句輸出:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(‘Hello world!‘)
輸出結果:Hello World!
2.2. 學習了Python中變量名的命名規則和註意點
2.3. 簡單學習了基本數據類型中的數字,字符串
2.4. 學習了if條件語句
2.5. 簡單的while循環
#continue原理 count = 0 while count < 10: if count == 7: #遇到continue直接 count += 1 #跳到while條件入口 continue #而後面的代碼不執行 print(count) print(‘------end------‘) 輸出結果:0, 1, 3, 4, 5, 6, 8, 9 ------end------ #break原理 count = 0 while count < 10: count = count + 1 print(count) break #遇到break直接 print(count) #跳出while循環 print(‘------end------‘) 輸出結果:1 ------end------
2.6. 小練習:用戶登錄(三次重試)
count = 0
while count < 3:
user = input(‘用戶名>>>‘)
pwd = input(‘密碼>>>‘)
if user == ‘jack‘ and pwd == ‘123‘
print(‘登錄成功,歡迎使用!‘)
break
else:
print(‘用戶名或密碼錯誤,請重試!‘)
count = count + 1 #也可以count += 1
二、今天的內容
準備工作
-
- 第一天我們主要在Python自帶的IDLE和Windows終端中編寫Pyhton代碼運行,這樣初學還可以,可到以後寫代碼保存管理並不方便,由此我們就需要一個專門的編輯器,或集成開發環境IDE來開發我們的Python程序和管理工程,可以用來寫Python的IDE有很多,比如Pycharm、eclipse,Pycharm是專門針對Python的IDE,這裏推薦這款,去官網下載即可:http://www.jetbrains.com/pycharm/
- 下載專業版
- 用原版,最好不要漢化,因為漢化可能造成有些原版比較方便的功能用不了
- 雖然專業版是付費版,但是為了學習我們還是有很多辦法讓他免費的,你懂的,教程如下:http://www.cnblogs.com/shwee/p/8886680.html
1. Python中的運算符
1.1. 算數運算符
算數運算符
加 | 減 | 乘 | 除 | 乘方 | 取余 | 取商 |
---|---|---|---|---|---|---|
+ | - | * | / | ** | % | // |
1.2. 邏輯運算符
邏輯運算符
等於 | 大於 | 小於 | 大於等於 | 小於等於 | 不等於 | 不等於 |
---|---|---|---|---|---|---|
== | > | < | >= | <= | != | <> |
與 | 或 | 非 | ||||
and | or | not |
PS:布爾(bool)邏輯條件判斷(與或非等)的順序:and/or/not沒有優先級,有括號先算括號裏面的邏輯表達式計算出布爾值,然後從前到後依次計算判斷
-
- True or ---->True
- True and ---->繼續往後走
- Flase or ---->繼續往後走
- Flase and ---->Flase
2. 繼續學習基本數據類型
2.1. Python3中六個標準的基本數據類型:
-
- Number(數字)
- String(字符串)
- Sets(集合)
- Tuple(元組)
- List(列表)
- Dictionary(字典)
2.2. Python3中六個標準的基本數據類型中:
-
- 不可變數據(四個):Number(數字)、String(字符串)、Sets(集合)、Tuple(元組)
- 可變的類型(兩個):List(列表)、Dictionary(字典)
2.3. Number(數字)
-
- Pyhton3支持 int、float、bool、complex(復數)。
- 在Python3中,只有一種整數類型,為長整型,Python2中有兩種:整型和Long
- Python中type()函數可以用來查詢變量所指的對象類型
-
a, b, c, d = 2, 3.5, True, 5+2j print(type(a), type(b), type(c), type(d)) 輸出結果: <class ‘int‘> <class ‘float‘> <class‘ bool‘> <class ‘complex‘>
2.4. String(字符串)
-
-
Python中的字符串用單引號(‘***‘)、雙引號("***")、三引號(‘‘‘***‘‘‘)或三雙引號("""***""")括起來,使用反斜杠(\)轉義特殊字符
-
字符串的截取的語法格式是:變量[頭下標:尾下標], 索引值從0開始,-1為從末尾的開始位置
-
字符串的連接符是加號(+),星號(*)表示復制當前字符串,如‘abc‘ * 3,緊跟的數字表示字符串復制的次數
-
str = ‘abcde‘ print (str) # 輸出字符串 print (str[0]) # 輸出字符串第一個字符 print (str[0:-1]) # 輸出第一個到倒數第二個的所有字符 print (str[1:4]) # 輸出從第2個開始到第4個的字符 print (str[2:]) # 輸出從第三個開始的後的所有字符 print (str * 3) # 輸出字符串3次 print (str + "fgh") # 連接字符串 print (‘------end------‘) 輸出結果: abcde a abcd bcd cde abcdeabcdeabcde abcdefgh ------end------
-
Python 中使用反斜杠(\)轉義特殊字符,如果不想讓反斜杠轉義,可以在字符串前面添加一個r,表示原始字符串
-
print("abcde\fgh") 輸出結果: abcde fgh print(r"abcde\fgh") 輸出結果: abcde\fgh
-
另外,反斜杠(\)可以作為續行符,表示下一行是上一行的延續。也可以使用 """...""" 或者 ‘‘‘...‘‘‘ 跨越多行。
註意,Python 沒有單獨的字符類型,一個字符就是長度為1的字符串。
-
與 C 字符串不同的是,Python 字符串不能被改變。向一個索引位置賦值,比如word[0] = ‘m‘會導致錯誤。
-
2.5. Sets(集合)
-
-
集合(set)是一個無序不重復元素的序列。
-
基本功能是進行成員關系測試和刪除重復元素。
-
可以使用大括號 { } 或者 set() 函數創建集合。
-
註意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。
-
創建格式:
-
parame = {value1, value2, ...} 或 set(value)
- 實例:
-
student = {‘Alex‘, ‘Jim‘, ‘Tom‘, ‘Mary‘, ‘Alex‘, ‘Jack‘} print(student) # 輸出集合,重復的元素被自動去掉 # 成員測試 if(‘Tom‘ in student) : print(‘Tom 在集合中‘) else : print(‘Tom 不在集合中‘) # set可以進行集合運算 a = set(‘abcdebaeba‘) b = set(‘ahbcdm‘) print(a) print(a - b) # a和b的差集 print(a | b) # a和b的並集 print(a & b) # a和b的交集 print(a ^ b) # a和b中不同時存在的元素 print(‘------end------‘) 輸出結果: {‘Jack‘, ‘Alex‘, ‘Jim‘, ‘Tom‘, ‘Mary‘} Tom 在集合中 {‘d‘, ‘a‘, ‘b‘, ‘c‘, ‘e‘} {‘e‘} {‘d‘, ‘h‘, ‘a‘, ‘b‘, ‘c‘, ‘m‘, ‘e‘} {‘d‘, ‘a‘, ‘b‘, ‘c‘} {‘e‘, ‘m‘, ‘h‘} ------end------
- 例子:
-
2.6. Tuple(元組)
-
- 元組(tuple)與列表類似,不同之處在於元組的元素不能修改。元組寫在小括號 () 裏,元素之間用逗號隔開。
-
tup1 = () # 空元組 tup2 = (20,) # 一個元素,需要在元素後添加逗號 tup2[0] = 10 # 修改元組元素的操作是非法的 終端錯誤提示: Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> tup2[0] = 10 TypeError: ‘tuple‘ object does not support item assignment
- 元組中的元素類型也可以不相同:
- 元組與字符串類似,可以被索引且下標索引從0開始,-1 為從末尾開始的位置。也可以進行截取。
- 其實,可以把字符串看作一種特殊的元組。
- 實例:
-
tuple1 = ( ‘abc‘, 123 , 1.23, ‘dashen‘, 45.6 ) tuple2 = (123, ‘dashen‘) print (tuple1) # 輸出完整元組 print (tuple1[0]) # 輸出元組的第1個元素 print (tuple1[1:3]) # 輸出從第2個元素開始到第3個元素 print (tuple1[1:]) # 輸出從第2個元素開始的所有元素 print (tuple2 * 3) # 輸出3次元組 print (tuple1 + tuple2) # 連接兩個元組 print(‘------end------‘) 輸出結果: (‘abc‘, 123, 1.23, ‘dashen‘, 45.6) abc (123, 1.23) (123, 1.23, ‘dashen‘, 45.6) (123, ‘dashen‘, 123, ‘dashen‘, 123, ‘dashen‘) (‘abc‘, 123, 1.23, ‘dashen‘, 45.6, 123, ‘dashen‘) ------end------
-
- 雖然tuple的元素不可改變,但它可以包含可變的對象,比如list列表。
- 構造包含 0 個或 1 個元素的元組比較特殊,所以有一些額外的語法規則:
-
tup1 = () # 空元組 tup2 = (20,) # 一個元素,需要在元素後添加逗號
-
- string、list和tuple都屬於sequence(序列)。
- 註意:
- 1、與字符串一樣,元組的元素不能修改。
- 2、元組也可以被索引和切片,方法一樣。
- 3、註意構造包含0或1個元素的元組的特殊語法規則。
- 4、元組也可以使用+操作符進行拼接。
2.7. List(列表)
-
- List(列表)是 Python 中使用最頻繁的數據類型。
- 列表可以完成大多數集合類的數據結構實現。列表中元素的類型可以不相同,它支持數字,字符串甚至可以包含列表(所謂嵌套)。
- 列表是寫在方括號([])之間、用逗號分隔開的元素列表。
- 和字符串一樣,列表同樣可以被索引和截取,列表被截取後返回一個包含所需元素的新列表。
- 列表截取的語法格式如下:
-
變量[頭下標:尾下標]
-
- 索引值以 0 為開始值,-1 為從末尾的開始位置。
- 加號(+)是列表連接運算符,星號(*)是重復操作。
- 實例
-
list1 = [‘abc‘, 123 , 1.23, ‘dashen‘, 45.6 ] list2 = [123, ‘dashen‘] print (list1) # 輸出完整列表 print (list1[0]) # 輸出元組的第1個元素 print (list1[1:3]) # 輸出從第2個元素開始到第3個元素 print (list1[1:]) # 輸出從第2個元素開始的所有元素 print (list2 * 3) # 輸出3次列表(list2) print (list1 + list2) # 連接兩個列表 print(‘------end------‘) 輸出結果: [‘abc‘, 123, 1.23, ‘dashen‘, 45.6] abc [123, 1.23] [123, 1.23, ‘dashen‘, 45.6] [123, ‘dashen‘, 123, ‘dashen‘, 123, ‘dashen‘] [‘abc‘, 123, 1.23, ‘dashen‘, 45.6, 123, ‘dashen‘] ------end------
-
- 與Python字符串不一樣的是,列表中的元素是可以改變的:
- 實例
-
>>> a = [1, 2, 3, 4, 5, 6] >>> a[0] = 7 >>> a[2:5] = [8, 9, 10] >>> a [7, 2, 8, 9, 10, 6] >>> a[2:] = [] #將對應的元素值置為[] >>> a [7, 2] >>>
-
- List內置了有很多方法,例如append()、pop()等等,我們把這些方法稱為魔法,後面繼續學。
- 註意:
- 1、List寫在方括號之間,元素用逗號隔開。
- 2、和字符串一樣,list可以被索引和切片。
- 3、List可以使用+操作符進行拼接。
- 4、List中的元素是可以改變的。
2.8. Dictionary(字典)
-
- 字典(dictionary)是Python中另一個非常有用的內置數據類型。
- 列表是有序的對象集合,字典是無序的對象集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
- 字典是一種映射類型,字典用"{ }"標識,它是一個無序的鍵 : 值(key: value)對集合。
- 鍵(key)必須使用不可變類型,在同一個字典中,鍵(key)必須是唯一的。
- 實例
-
dict1 = {} #建一個空字典 dict1[‘key1‘] = "Python" dict1[1] = "study" dict2 = {‘name‘: ‘shw‘, ‘age‘:18, ‘home‘: ‘chongqing‘} print (dict1[‘key1‘]) # 輸出鍵為 ‘key1‘ 的值 print (dict1[1]) # 輸出鍵為 1 的值 print (dict1) # 輸出完整的字典dict1 print (dict2) # 輸出完整的字典dict2 print (dict2.keys()) # 輸出所有鍵 print (dict2.values()) # 輸出所有值 print(‘------end------‘) 輸出結果: Python study {‘key1‘: ‘Python‘, 1: ‘study‘} {‘name‘: ‘shw‘, ‘age‘: 18, ‘home‘: ‘chongqing‘} dict_keys([‘name‘, ‘age‘, ‘home‘]) dict_values([‘shw‘, 18, ‘chongqing‘]) ------end------
-
- 構造函數 dict() 可以直接從鍵值對序列中構建字典如下:
- 實例
-
#終端命令行運行 >>> dict(name = ‘shw‘, age = 18, home = ‘chongqing‘) {‘name‘: ‘shw‘, ‘age‘: 18, ‘home‘: ‘chongqing‘} >>> dict([(‘name‘, ‘shw‘), (‘age‘, 18), (‘home‘, ‘chongqing‘)]) {‘name‘: ‘shw‘, ‘age‘: 18, ‘home‘: ‘chongqing‘} >>> {x: x**3 for x in (2, 3, 4)} {2: 8, 3: 27, 4: 64}
-
- 字典類型也有一些內置的函數,例如clear()、keys()、values()等等,我們叫這樣的方法為魔法。
- 註意:
- 1、字典是一種映射類型,它的元素是鍵值對。
- 2、字典的關鍵字必須為不可變類型,且不能重復。
- 3、創建空字典使用 { }。
3. Python數據類型轉換
-
- 有時候,我們需要對數據內置的類型進行轉換,數據類型的轉換,你只需要將數據類型作為函數名即可。
- 下面的一些內置的函數可以執行數據類型之間的轉換。這些函數返回一個新的對象,表示轉換的值。
函數 | 描述 |
---|---|
int(x [,base]) |
將x轉換為一個整數 |
float(x) |
將x轉換到一個浮點數 |
complex(real [,imag]) |
創建一個復數 |
str(x) |
將對象 x 轉換為字符串 |
repr(x) |
將對象 x 轉換為表達式字符串 |
eval(str) |
用來計算在字符串中的有效Python表達式,並返回一個對象 |
tuple(s) |
將序列 s 轉換為一個元組 |
list(s) |
將序列 s 轉換為一個列表 |
set(s) |
轉換為可變集合 |
dict(d) |
創建一個字典。d 必須是一個序列 (key,value)元組。 |
frozenset(s) |
轉換為不可變集合 |
chr(x) |
將一個整數轉換為一個字符 |
ord(x) |
將一個字符轉換為它的整數值 |
hex(x) |
將一個整數轉換為一個十六進制字符串 |
oct(x) |
將一個整數轉換為一個八進制字符串 |
Day2----Python學習之路筆記(2)