官方站點:http://www.python.org
IDE:集成開發環境
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qA8upgBq-1584409255959)(C:\Users\daiyajie\AppData\Roaming\Typora\typora-user-images\1584352090231.png)]
Location: 項目目錄,即代碼文件存放的路徑
Project Interpreter:解釋器采用虛擬環境,相當於是把系統的python程序拷貝到了一個文件夾中,以後安裝
python軟件都安裝到這個文件夾。將來項目完成了,不需要這個環境了,只要把虛擬環境目錄刪除即可。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ISIULfav-1584409255960)(C:\Users\daiyajie\AppData\Roaming\Typora\typora-user-images\1584352199928.png)]
# 創建虛擬環境
[[email protected] ]# python3 -m venv ~/nsd1903
# 使用虛環境時,需要激活它
[[email protected] ]# source ~/nsd1903/bin/activate (nsd1903)
[[email protected] ]# python --version
Python 3.6.7
File -> Settings -> Project: Day01 -> Project Interpreter -> 點右上角的齒輪 -> Add Local -> Existing Enviroment -> 點 擊… -> 輸入/root/nsd1903/bin/python
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-nJUsyKBR-1584409255962)(C:\Users\daiyajie\AppData\Roaming\Typora\typora-user-images\1584352291851.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-MFEefgEZ-1584409255965)(C:\Users\daiyajie\AppData\Roaming\Typora\typora-user-images\1584352302945.png)]
File -> Settings -> Editor -> font -> size 修改大小
[[email protected] devops0101]# source ~/nsd1903/bin/activate
(nsd1903) [[email protected] devops0101]# python
>>> print("hello world!")
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
# vim hi.py
print("Hello World!")
(nsd1903) [[email protected] day01]# python hi.py
Hello World!
# 字符串必須寫在引號中,單雙引號沒有區別
>>> print('hello world!')
# 一個print語句中,可以打印多項,123沒有引號,表示數字。默認各項間用空格分隔
>>> print('hao', 123, 'world')
hao 123 world
# 輸出時,也可以指定各項之間的分隔符
>>> print('hao', 123, 'world', sep='_')
hao_123_world
>>> print('hao', 123, 'world', sep='***')
hao***123***world
# 字符串可以使用+拼接
>>> print('hello' + 'world')
helloworld
# 通過input獲取鍵盤輸入,input括號中的字符串是屏幕提示符,把用戶輸入的結果保存在變量num中,num是變量,使 用時不用像shell那樣加$前綴。
>>> num = input("number: ")
number: 100
>>> num
'100'
# 只要通過input讀取,都是字符類型,字符不能和數字進行四則運算
>>> num + 10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not int
# 可以通過int函數把num轉換成整數,再和數字進行運算
>>> int(num) + 10
110
會變化的量。常量不會變,表示字面本身含義的量不會變。100,'abc'這樣的量是字面量,表示看到的字面本身含義。
為什麼要用變量:方便,變量可以用有意義的名字。
>>> 2a = 10 # Error
>>> _a = 5 # OK, 不常用
>>> abc-1 = 10 # Error
# 以下的兩個變量是不一樣的
>>> a = 10
>>> A = 100
# 變量使用之前必須先賦值
>>> print(a) # a沒有定義,所以報名字錯誤
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> counter = 0
# 賦值運算自右向左運算。以下代碼含義是將counter的值取出並加1,然後再賦值給變量counter
>>> counter = counter + 1
# 上面代碼可以簡寫為
>>> counter += 1
# python之禅
>>> import this Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
……
美勝丑,明勝暗,簡勝繁
>>> 5 / 3
1.6666666666666667
>>> 5 // 3 # 只保留商
1
>>> 5 % 3 # 只保留余數
2
>>> divmod(5, 3) # divmod函數可以同時返回商和余數
(1, 2)
>>> a, b = divmod(5, 3) # 商和余數分別保存在a和b中
>>> a
1
>>> b
2
>>> 2 ** 3 # 2的3次方
8
# 比較運算的結果是True或False
# 字符串比較時,逐個字符進行比較,一旦出現結果就不再繼續了。字母按ASCII值比較。
>>> 'x' > 'abc'
True
# 在python中,支持連續比較
>>> 20 > 15 > 10
True
>>> 20 > 10 < 15 # 相當於20 > 10 and 10 < 15
True
# and兩邊的表達式都為真,結果才為真
>>> 10 > 5 and 10 < 20
True
# or兩邊的表達式只要一邊為真,結果就是真
>>> 10 > 5 or 10 < 3
True
# not顛倒真假
>>> 10 > 5
True
>>> not 10 > 5
False
>>> 10 < 5
False
>>> not 10 < 5
rue
# python默認以10進制輸出,沒有任何前綴的數字都認為是10進制數
>>> 23 # 10進制
23
>>> 0o23 # 0o開頭表示8進制數
19
>>> 0O23
19
>>> 0x23 # 0x開頭表示16進制
35
>>> 0X23
35
>>> 0b11 # 0b開頭表示2進制
3
>>> 0B11
3
>>> 0x234
564
>>> 2 * 16 * 16 + 3 * 16 + 4
564
# 應用
>>> import os
>>> os.chmod('login.py', 755)
(nsd1903) [[email protected] day01]# ll login.py
--wxrw--wt. 1 root root 87 7月 31 11:45 login.py
>>> os.chmod('login.py', 0o755) # linux系統權限是8進制數,不是10進制
(nsd1903) [[email protected] day01]# ll login.py
-rwxr-xr-x. 1 root root 87 7月 31 11:45 login.py
# s1和s2分別用了單又引號,它們表示了完全相同的含義
>>> s1 = 'hello world'
>>> s2 = "hello world"
# 將字符串tom賦值給變量name
>>> name = 'tom'
# s3中的name就是字面本身含義name
>>> s3 = "hello name"
>>> s3
'hello name'
# s4中的%s用後面變量name的值替換
>>> s4 = "hello %s" % name
>>> s4
'hello tom'
>>> "%s is %s years old" % ('tom', 22)
'tom is 22 years old'
>>> words = "hello\nwelcome\ngreet" >
>> print(words) # 打印時,\n轉義為回車
hello
welcome
greet
>>> words # 內部存儲時,回車保存為\n
'hello\nwelcome\ngreet'
# 三引號只是在輸入時可以保留回車等輸入時的樣式,但是內部存儲沒有什麼特殊
>>> wordlist = """hello
... welcome
... greet"""
>>> print(wordlist)
hello
welcome
greet
>>> wordlist
'hello\nwelcome\ngreet'
>>> py_str = 'python'
>>> len(py_str) # 計算字符串的長度
6
>>> py_str[0] # 取出第一個字符,下標為0
'p'
>>> py_str[5]
'n'
>>> py_str[6] # 如果下標超出范圍,將會出現錯誤
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
# 下標為負數,表示從右向左取
>>> py_str[-1]
'n'
>>> py_str[-6]
'p'
# 切片,切取片段
>>> py_str[2:4] # 包含起始下標對應的字符,不包含結束下標對應的字符
'th'
>>> py_str[2:6] # 取切片時,下標超出范圍不會報錯
'thon'
>>> py_str[2:6000]
'thon'
>>> py_str[2:] # 結束下標不寫,表示取到結尾
'thon'
>>> py_str[:2] # 起始下標不寫,表示從開頭取
'py'
>>> py_str[0:2]
'py'
>>> py_str[:] # 從開頭取到結尾
'python'
>>> py_str[::2] # 步長值為2
'pto'
>>> py_str[1::2]
'yhn'
>>> py_str[::-1] # 步長為負表示自右向左取
'nohtyp'
# 成員關系著斷
>>> 't' in py_str # t在字符串中嗎?
True
>>> 'th' in py_str
True
>>> 'to' in py_str # to雖然在字符串中,但不是連續的,返回False
False
>>> 'to' not in py_str # to不在字符串中嗎?
True
# 字符串通過+實現拼接
>>> 'hao' + '123'
'hao123'
>>> str(123) # 內建函數str可以把數字轉成字符串
'123'
>> 'hao' + str(123)
'hao123'
# 字符串重復
>>> '*' * 30
'******************************'
>>> '#' * 30
'##############################'
>>> 'ab' * 30
'abababababababababababababababababababababababababababababab'
使用[]表示列表。列表是容器類型的,它裡面可以存儲各種數據。
>>> alist = [10, 20, 30, 'tom', 'jerry']
>>> len(alist)
5
>>> alist[0]
10
>>> alist[-1]
'jerry'
>>> 30 in alist
True
>>> alist[3:]
['tom', 'jerry']
# 列表支持修改內容
>>> alist[2] = 300
>>> alist
[10, 20, 300, 'tom', 'jerry']
# 通過append方法,可以向列表追加數據
>>> alist.append('bob')
>>> alist
[10, 20, 300, 'tom', 'jerry', 'bob']
>>> alist * 2
[10, 20, 300, 'tom', 'jerry', 'bob', 10, 20, 300, 'tom', 'jerry', 'bob']
>>> alist + 100 # 報錯,列表不能和數字拼接
>>> alist + [100] # 列表拼接
元組可以認為是不可變的列表,其余完全一樣。
>>> atuple = (10, 20, 300, 'tom', 'jerry', 'bob')
>>> len(atuple)
6
>>> atuple[0]
10
>>> atuple[2:4]
(300, 'tom')
>> atuple[0] = 100 # 報錯,不能修改
# 單元素元組,必須有逗號,否則不是元組。
>>> a = (10)
>>> a # a不是元組,而是數字
10
>>> b = (10,)
>>> b
(10,)
>>> len(b)
1
字典是無序的,所以不能像字符串那樣取下標和切片。
>>> adict = {'name': 'tom', 'age': 22}
>>> len(adict)
2
>>> 'tom' in adict # 'tom'是字典的key嗎?
False
>>> 'name' in adict
True
>>> adict['name'] # 字典通過key取出value
'tom'
# 字典的key不能重復,賦值時,key存在則修改val,key不存在則新增
>>> adict['age'] = 25
>>> adict
{'name': 'tom', 'age': 25}
>>> adict['email'] = '[email protected]'
>>> adict
{'name': 'tom', 'age': 25, 'email': '[email protected]'}