有過C/C++/java基礎,雖然都是皮毛…開始自學python 總會順利一些。
環境:win+R > python --version
Python 3.6.5 :: Anaconda, Inc.
環境搭建就不說了 搭好環境後
cmd控制檯輸入python 進入命令行交互式編程
可直接用cmd或者IDEL或者pycharm做解釋器
因爲想要開始快一些,暫時能上手,然後在項目中查缺補漏。
收集資料:
參考了此處https://www.jianshu.com/p/5e69417ed9d2
python3官方文檔中文版 很不錯:http://www.pythondoc.com/pythontutorial3/index.html
Awesome Python 最全的python資源,找項目練手:https://github.com/vinta/awesome-python
中文版移步:https://github.com/jobbole/awesome-python-cn
笨方法學python,最受歡迎的python入門教程。PDF地址:鏈接:https://pan.baidu.com/s/1i4YiHZv 密碼:t5i4
廖雪峯教程:https://www.liaoxuefeng.com/wiki/1016959663602400
簡明python教程:鏈接: https://pan.baidu.com/s/1iI9gbyNkSlrMQIslH9aahQ 提取碼: nuah
晚輩暫時計劃看一遍菜鳥教程的基礎,再一遍官方文檔,穿插做小項目。
python特點:
一種解釋型、交互式、面向對象、跨平臺的語言
優點:
1.易於閱讀和維護
2.有一個廣泛的標準庫
3.python支持壞人各種主流數據庫之間的交互
4.可擴展性和可移植性
5.GUI編程【圖形化界面】
6.可嵌入型【可以將python程序嵌入到c++中】
缺點:
1.運行速度慢
2.代碼不能加密
編碼
默認情況下,Python 3 源碼文件以 UTF-8 編碼,所有字符串都是 unicode 字符串。 當然你也可以爲源碼文件指定不同的編碼:
# -*- coding: cp-1252 -*-
保留字(關鍵字)
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
標識符
- 第一個字符必須是字母表中字母或下劃線 _ 。
- 標識符的其他的部分由字母、數字和下劃線組成。
- 標識符對 大小寫敏感。
python區分大小寫很重要,如 True,False是關鍵字,而true,false是用戶可定義的變量
在 Python 3 中,非 ASCII 標識符也是允許的了。
註釋 (# ‘’’ ‘’’ “”" “”")
單行註釋 相當於 C/C++的 //
#!/usr/bin/python3
多行註釋 相當於 /**/
'''
第三註釋
第四註釋
'''
"""
第五註釋
第六註釋
"""
python 基本數據類型
變量
python變量不需要聲明。每個變量在使用前都必須賦值,變量賦值以後該變量就會被創建。
在 Python 中,變量就是變量,它沒有類型,我們所說的"類型"是變量所指的內存中對象的類型。
a,b,c = 1,2,"hello" #允許爲多個變量同時賦值
width = 1080
height = 1920
name = "hello"
print(width,height,name)
#換行輸出
print(width)
print(height)
print(name)
#不換行輸出
print(width,height,name)
#或者 這樣不換行輸出
print(width,end=" ")
print(height,end=" ")
print(name,end=" ")
Python3 有六個標準數據類型中:
- 不可變數據(3 個):Number(數字)、String(字符串)、Tuple(元組);
- 可變數據(3 個):List(列表)、Dictionary(字典)、Set(集合)。
1. Number(數字)
Python3 支持 int、float、bool、complex(複數)。
只有一種整數類型 int,表示爲長整型,沒有Long
可用內置type() 函數查詢變量的數據類型,或者 isinstance(object,type)方法判斷。
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
name = "hello world"
flag = isinstance(name,str)
print(flag)
isinstance 和 type 的區別在於:
- type()不會認爲子類是一種父類類型。
- isinstance()會認爲子類是一種父類類型。
>>> class A:
... pass
...
>>> class B(A):
... pass
...
>>> isinstance(A(), A)
True
>>> type(A()) == A
True
>>> isinstance(B(), A)
True
>>> type(B()) == A
False
**注意:**在Python3 中,把 True 和 False 定義成關鍵字,但它們的值還是 1 和 0,它們還可以和數字相加。
您可以通過使用del語句刪除單個或多個對象。例如:
del var
del var_a, var_b
pi = 3.1415926
del pi
print(pi) #無任何輸出,pi對象已被刪除
數值運算
基本的+ - * / %可以直接使用,//表示floor(),整除,**表示乘方運算
>>> 2 // 4 # 除法,得到一個整數
0
>>> 2 ** 5 # 乘方
32
複數
Python還支持複數,複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型
2. String(字符串) - 不可變數據
要理解: 索引 截取 + *
截取的語法格式和字符串一樣:變量[頭下標:尾下標]
索引值以 0 爲開始值,-1 爲從末尾的開始位置。
加號 + 是列表連接運算符,星號 * 是重複操作
line = "You're never wrong to do the right thing"
str = "you are right"
print(line[0:1]) #Y 從下標爲0的元素開始 截取到下標爲1的光標前
print(line[1:3]) #ou 從第2個元素開始,輸出到第3個元素 或者說 從下標爲1元素開始 輸出到下標爲3的元素之前
print(line * 2) # 重複 輸出字符串兩次
print(line[7:12] * 2) #nervernerver 輸出截取的字符串 兩次
print(line + str) #連接
string是不可變數據,line[0] = ‘1’ 錯誤,不能修改字符串的值
3. List(列表)-可變數據
List(列表) 是 Python 中使用最頻繁的數據類型。
列表可以完成大多數集合類的數據結構實現。列表中元素的類型可以不相同,它支持數字,字符串甚至可以包含列表(所謂嵌套)。
列表是寫在方括號 [] 之間、用逗號分隔開的元素列表。
列表的索引和截取的語法和字符串一樣,列表被截取後返回一個包含所需元素的新列表。
截取的語法格式和字符串一樣:變量[頭下標:尾下標]
索引值以 0 爲開始值,-1 爲從末尾的開始位置。
加號 + 是列表連接運算符,星號 * 是重複操作
以上列表的使用語法和字符串基本完全一樣
區別在於
- string數據不可變,而List是可變數據
- List截取有三個參數,第三個參數設置截取的步長,第三個參數爲負表示反向截取
print("==================List(列表) - 可變數據===================")
#列表的使用和字符串string基本一樣
List = ['abcd', 678, 1.23, 'runoob', 79.321, 0.0]
Love = ["I love U"]
print(List)
print(List[0])
print(List[1:3]) #從第2個元素開始,輸出到第3個元素 #或者說 從下標爲1元素開始 輸出到下標爲3的元素之前
print(List[2:])
print(List*2) # *是重複操作
print(List + Love) # + 是連接操作
print("與string不同 列表可以改變數據")
List[0] = 0 #直接改變某下標的數據
List[1:4] = [1,2,3] #改變截取一段的數據
print(List)
List[4:6] = [] #將對應的數據設置爲[],相當於刪除數據
print(List) # 0,1,2,3
List[1:2] = []
print(List[0:]) #0,2,3
print("與string的截取不同 列表截取有三個參數,第三個參數設置步長")
arrayList = [0,1,2,3,4,5,6,7]
print(arrayList[1:5:2]) #每兩步長 截取一次 隔一個數截取一次
print(arrayList[1:8:2]) #1 3 5 7
print(arrayList[-1::-2]) #第三個參數步長爲2 負號表示反向截取 截取的起始位置是 -1,第二個參數表示截取到末尾
簡單應用List - 字符串翻轉
如,list = [1,2,3,4]
其中,list[0] = 1,list[3] = 4
則list[0] = list[-1] 就是置換
list = list[-1::-1] #則逆向從尾截取到頭 賦值給原list 就達到翻轉的翻轉的效果
#應用 翻轉字符串
def reverseWords(input):
# 通過空格將字符串分隔符,把各個單詞分隔爲列表
inputWords = input.split(" ")
inputWords = inputWords[-1::-1] #直接賦值 逆向 相當於每個元素的頭尾置換
output = ' '.join(inputWords) # ['coding', 'like', 'I']
return output
if __name__ == "__main__":
input = "I like coding"
rw = reverseWords(input)
print(rw)
輸出:
coding like I