Day1 Day2 Day3 Day4 Day5 ...待續 html
1.1. 咱們寫好的.py文件頭沒有加# -*- coding:utf-8 -*-這樣的聲明,那麼在Windows終端中調用Python2解釋器運行時,文件中的中文會顯示亂碼,爲什麼?原來咱們Windows終端是以GBK編碼來讀的,而Python2中不是默認的utf8的編碼格式。調用Python3解釋器就沒問題,有中文就不會出現亂碼,由此引出Python3的編碼格式。python
1.2. Python3中是沒有字符這種編碼類型的,默認都是字節編碼,也就是沒有Unicode這種類型,但本質上它又全是Unicode,只是你看着它是字符編碼這種類型。(這句話有點拗口)shell
1.3. Python3的內部機制:utf-8形式寫入文件---->utf-8讀到內存中轉爲Unicode的編碼形式---->Windows終端以GBK形式去讀的時候,Unicode轉換爲GBK形式給顯示出來。(因此說Python3中沒編碼聲明# -*- coding:utf-8 -*-,中文不會亂碼)數據結構
1.4. utf-8和GBK編碼並不能直接轉換,中間要藉助Unicode編碼做爲橋樑,其實現原理能夠用下面的圖表示:app
1.5. 在文件內部用一種形式的編碼格式寫和存,但咱們看的時候通常用另外一種編碼格式去看的。eclipse
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
算數運算符
加 | 減 | 乘 | 除 | 乘方 | 取餘 | 取商 |
---|---|---|---|---|---|---|
+ | - | * | / | ** | % | // |
邏輯運算符
等於 | 大於 | 小於 | 大於等於 | 小於等於 | 不等於 | 不等於 |
---|---|---|---|---|---|---|
== | > | < | >= | <= | != | <> |
與 | 或 | 非 | ||||
and | or | not |
PS:布爾(bool)邏輯條件判斷(與或非等)的順序:and/or/not沒有優先級,有括號先算括號裏面的邏輯表達式計算出布爾值,而後從前到後依次計算判斷
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'>
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'會致使錯誤。
集合(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------
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
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------
tup1 = () # 空元組
tup2 = (20,) # 一個元素,須要在元素後添加逗號
變量[頭下標:尾下標]
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------
>>> 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]
>>>
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(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}
函數 | 描述 |
---|---|
將x轉換爲一個整數 |
|
將x轉換到一個浮點數 |
|
建立一個複數 |
|
將對象 x 轉換爲字符串 |
|
將對象 x 轉換爲表達式字符串 |
|
用來計算在字符串中的有效Python表達式,並返回一個對象 |
|
將序列 s 轉換爲一個元組 |
|
將序列 s 轉換爲一個列表 |
|
轉換爲可變集合 |
|
建立一個字典。d 必須是一個序列 (key,value)元組。 |
|
轉換爲不可變集合 |
|
將一個整數轉換爲一個字符 |
|
將一個字符轉換爲它的整數值 |
|
將一個整數轉換爲一個十六進制字符串 |
|
將一個整數轉換爲一個八進制字符串 |