今日練習
1.如何書寫python的註釋語法
【1】 單行註釋
-
單行註釋是指只對一行進行註釋,一旦換了一行就不生效了
-
註釋方法: # 註釋內容
-
快速註釋單行程式碼
【2】多行註釋
-
多行註釋適用於程式碼塊
-
註釋方法: 英文狀態下的三個單引號或者雙引號,頭尾皆需要
-
"""內容"""
-
'''內容'''
【3】快速註釋
- Ctrl + /
2.變數的基本使用,以及底層原理
- 變數就用來代表隨時可能會發生改變的狀態或者值
- 變數名 = 變數值
3.變數的命名規範
-
英文字母(大寫字母和小寫字母)
-
數字(0-9)
-
下劃線(_)
-
變數名又不能隨便宣告
-
符合一定的規範
(1)可以字元+數字+下劃線任意組合
- a_1 = 1
(2)不能用數字開頭
- 1_a = 1
(3)不能將Python中的關鍵字作為變數名
-
以後我們可能會用到規定好的已經具有特定含義和功能的單詞
-
if = 1 # 如果
else elif
def class int float ...
['and', 'as', 'assert', 'break',
'class', 'continue', 'def', 'del',
'elif', 'else', 'except', 'exec',
'finally', 'for', 'from','global',
'if', 'import', 'in', 'is', 'lambda',
'not', 'or', 'pass', 'print',
'raise', 'return', 'try', 'while',
'with', 'yield']
4.python直譯器的版本有哪些,推薦使用的版本是哪個
-
1989年,Guido開始寫Python語言的編譯器。
-
1991年,第一個Python編譯器誕生。
- 它是用C語言實現的,並能夠呼叫C語言的庫檔案。
- 從一出生,Python已經具有了:類,函式,異常處理,包含表和詞典在內的核心資料型別,以及模組為基礎的擴充系統。
-
Python 2.7 - July 3, 2010
-
Python 3.6 - 2016-12-23 釋出python3.6.0版
- Python3.10版本我們學
-
最新版本的直譯器不穩定存在bug
5.python直譯器的多版本共存是怎麼做到的,環境變數的查詢順序是如何的
(1)查詢環境變數,首先看使用者變數中也沒有python,沒有的話檢視系統變數中的path,需要用哪個版本的直譯器就將之上移
(2)找到python快捷方式所在的資料夾,複製一份副本,修改成指定版本名,再去系統環境變數中上移所要用的版本
昨日內容回顧
【一】補充Python知識點
【1】pip換源
(1)臨時換源
- pip install 第三方模組 -i 第三方源
(2)永久換源
-
如果不換源,預設使用的是Python官網的源 ---> 訪問Python官網的時候發現很慢
-
為了解決安裝模組慢的問題 ---> 選擇換源 ---> 可以從國內的映象源庫拉取第三方模組下載
-
直接複製命令 ---> 因為這隻會在安裝完Python直譯器後第一次用
-
如果電腦中安裝了多個版本的Python直譯器,給一個換源,其他的直譯器也會同事生效
【2】系統直譯器環境和虛擬環境
(1)系統環境
-
就是你點選安裝包安裝在電腦本地的環境
-
隨時隨地都能使用的環境
(2)虛擬環境
- 虛擬環境就是每一次基於已經安裝的系統直譯器環境在建立出來的新的直譯器環境
- 只在當前資料夾下生效
- 建立好的虛擬環境 ---> Scripts ---> python.exe
(3)系統環境和虛擬環境
- 我們正常開發使用系統直譯器環境就可以了
- 如果開發一個成品的大專案時,建議使用虛擬環境(將當前專案使用的包和系統中的隔開)
【二】pycharm相關知識
【1】判斷當前使用的版本號
- 右下角會顯示當前使用的python直譯器的版本
【2】新增直譯器環境
【3】快捷鍵
- CTRL + d 快速複製一行
- Ctrl + c 複製
- Ctrl + v 貼上
- Ctrl + x 剪下
- Ctrl + alt + L 快速格式化程式碼
- Ctrl + / 快速註釋點名
【4】漢化
- settings --- plugins ---> chinese
【5】自定義檔案頭
【6】檢視系統直譯器
- setting ---> projiects ---> python interperter
【三】Python中的註釋語法
【1】單行註釋
- 井號 空格 內容
【2】多行註釋
- 語法:三個引號(可以是單引號也可以是雙引號)
【3】快速註釋
- 最常用的註釋方法
- Ctrl + /
【四】變數和常量
【1】常量
- 常量就是固定不變的量
- 即使是常量也是可以更改的,但在其他語言中常量是不允許更改的
【2】變數
- 變數就是表示能夠變化的狀態和值
- 如人的年齡,身高,體重
【3】程式碼中同樣有名字來表示相應的值和狀態
-
身份證上的地址:常量表示
-
年齡:變數表示
【五】變數的語法
- 變數名 = 變數值
【1】變數名的命名規範
- 可以使用數字 + 字母 + 下劃線表示變數名
- 可以任意組合
- 不能數字開頭
- Python中的關鍵字不能作為變數名 如:if def else
【2】變數名的命名風格
- 駝峰體
- 大駝峰: 每一個單詞的首字母都大寫 UserName
- 小駝峰: 第一個單詞的首字母小寫其他首字母大寫 userName
- 組合風格:任意數字 + 字母 --->下劃線拼接 user_name
【六】變數的三大特性
【1】變數值 變數型別 變數記憶體地址
- 實際存在的值 值的型別 實際存在的空間地址
- 變數名 = 變數值 內部的原理
- 變數值:就是在記憶體空間中開闢一塊空間儲存指定的值
【2】如何檢視三大特性
-
變數值:直接透過列印變數名
-
變數型別:type()
-
變數的記憶體空間地址:ID()
今日內容
【一】學習變數的目的
- 學習變數有助於在程式中儲存和運算元據,提高程式碼質量
- 有了質量以後能夠更加的方便操作和修改資料
【二】學習基本資料型別的目的
- 是為了在不同的場景下使用對於的資料型別來運算元據
【三】八大基本資料型別介紹
- 數字型別
- 整數型別
- 浮點數型別
- 字串型別
- 列表型別
- 字典型別
- 布林型別
- 元組型別
- 集合型別
【四】數字型別
# 【1】整數型別
# (1)用途
# 用來標識整數,最廣泛使用的資料型別之一
# (2)語法
# 語法:變數名 = 數字
age = 18
# 可以檢視當前變數的變數型別
print(tpye(age)) <class 'int'>
# (3)使用場景
# 可以用來表示帶小數的數值
# 【2】浮點數型別
# (1)用途
# 可以用來表示帶小數的數值
# (2)語法
# 變數名 = 浮點數
weight = 90.00
print(type(weight)) <class 'float'>
# (3)場景
# 取款的時候金額和餘額都不是整數
#100.00
【五】字串型別
# 【1】用途
# 用來標識文字資訊
# 【2】語法
# 變數名 = 變數值(加引號 ,一個單引號,一個雙引號,三個單引號,三個雙引號)
name = "dream"
print(name, type(name)) # dream <class 'str'>
name = 'Dream'
print(name, type(name)) # Dream <class 'str'>
name = '''Dream'''
print(name, type(name)) # Dream <class 'str'>
name = """Dream"""
print(name, type(name)) # Dream <class 'str'>
# 如果單雙引號進行混用
name = "'name'" # 雙引號中混用的單引號
print(name, type(name)) # 'name' <class 'str'>
name = '"name"' # 單引號中混用的雙引號
print(name, type(name)) # "name" <class 'str'>
# 測試在雙引號記憶體出現單獨的單引號
name = "name'"
print(name, type(name)) # name' <class 'str'>
name = 'name"'
print(name, type(name)) # name" <class 'str'>
sentence = "my name is dream ,I'm 18 years old,hope you 'wonderful!'"
# 中間的 ' 產生了歧義 按照正常的字串語法 單雙引號應該成對出現
# 所以在單引號內部不能出現單獨單引號,但是單引號內部可以出現單獨的雙引號
# sentence = 'my name is dream ,I'm 18 years old,hope you "wonderful!"'
# 所以在雙引號內部不能出現單獨雙引號,但是雙引號內部可以出現單獨的單引號
# sentence = "my name is dream ,I"m 18 years old,hope you 'wonderful!'"
# 在三引號內部,如果第一行不寫內容預設存在一個換行
sentence = '''
my name is yang,
I'm 22 year old,
hope you 'wonderful!'
'''
print(sentence,type(sentence))
#
# my name is yang,
# I'm 22 year old,
# hope you 'wonderful!'
# <class 'str'>
# 【3】使用方法
# (1)字串加法
print(1 + 1)
# 字串 + 字串 = 字串
print("1" + "1",type("1" + "1")) # 11 <class 'str'>
# (2)字串乘法
print(1 * 9)
print("1" * 9) # 111111111
# 字串 * 數字 = 當前字串重複出現幾次
# (3)可以索引取值
# 索引的意思就是左邊 -3 -2 -1 0 1 2 3
# h e l l o w o r l d
# 0 1 2 3 4 5 6 7 8 9 10
# 支援索引取值
world = "hello world"
# 索引取值的語法 字串[索引座標]
print(world[0])
print(world[5],type(world[5])) # <class 'str'>
# 雖然輸出的內容是空白,但其實輸出的就是空格,他也是字串
# 支援負索引取值
print(world[-1], type(world[-1]))
# 計算當前字串的總字元數
print(len(world)) # 11
# 當我們使用正索引取值的時候,索引是從0開始的所以取不到第11個
print(world[11])
print(world[len(world) - 1])
# 如果是負索引取值,從 -1 開始,可以取到 -11
print(world[-len(world) + 2])
# 【4】字串的格式化輸出
# 這樣修改整條語句太麻煩
myself_sentence = "my name is gdy ,my age is 22,"
myself_sentence = "my name is hyt ,my age is 24,"
# (1) %佔位輸出法
myself_sentence = "my name is %s,my age is %s"%(name,age)
name = "gdy"
age = 22
# myself_sentence = "my name is name,my age is age"
# %s : string字串型別的資料
# %d : int型別的資料
myself_sentence = "my name is %s,my age is %s"%(name,age)
print(myself_sentence)
# (2)f + {}輸出法
name = "gdy"
age = 22
myself_sentence = f"my name is {name},my age is {age}"
print(myself_sentence)
# (3)format輸入語法
name = "gdy"
age = 22
# 按照位置傳值
myself_sentence = "my name is {},my age is {}".format(name,age)
print(myself_sentence)
# 按照關鍵字傳值
myself_sentence = "my age is {age},my name is {name}".format(name=name,age=age)
print(myself_sentence)
# \在Python中屬於是轉義符號
name = "gdy \n"
age = 22
names = "gdy\\" #想要輸出dream\
print(name)
print(age)
print(names)
【六】列表型別
# 【1】作用
# 可以在列表中存放多個值,不限制資料型別
# 例如用一個列表儲存很多名字
# 【2】語法
name_list =["gdy","hyt"]
print(name_list,type (name_list))
# ['gdy', 'hyt'] <class 'list'>
# 【3】放了值是為了方便使用
# (1)索引取值
# 索引取值正向從0開始,負向 -1 開始
name_list =["gdy","hyt"]
print(name_list[0]) # gdy
print(name_list[-1]) # hyt
# 【4】索引支援巢狀
info_list = [
"gdy",["22",["上海"]]
]
# 如果想要取最後一層,從0開始,一層一層
print(info_list[1][1][0]) # 上海
【七】字典型別
# 【1】 作用
# 可以記錄多個值,並且這些值帶有各自的名字
# 字典資料儲存方式是 key:value
# 裡面存的每一個值都是 key:value 的kv鍵值對
info_data ={
"name":"gdy",
"age":18,
"hobby":["music","run"]
}
# 【3】放就是為了取的時候方便
#(1)索引取值
# 字典不支援索引取值!
# (2)根據鍵取值
print(f"以下是字典型別")
print(info_data["name"]) #gdy
# (3).get(鍵)取值
print(info_data.get("name")) #gdy
練習
info = {
'name': 'gdy',
'addr': {
'國家': '中國',
'info': [
666,
{'age': 22},
999,
{'編號': 466722, 'hobby': ['read', 'study', 'music']}
]
}
}
# 格式化輸出
sentence = "my name is name ,my age is age ,my id is id ,my location is location , my hobby is music-read-study"
# 從info字典中獲取name鍵對應的值
name = info.get("name")
age = info["addr"]["info"][1].get("age")
id = info["addr"]["info"][3].get("編號")
# 從info字典中獲取到addr對應的字典,在從字典中獲取 鍵 國家 對應的值
location = info["addr"].get("國家")
hobby =info["addr"]["info"][3].get("hobby")[0] + '-' + info["addr"]["info"][3].get("hobby")[1] + '-' + info["addr"]["info"][3].get("hobby")[2]
sentence = f'''my name is {name},
my age is {age}
my id is id {id},
my location is {location}
my hobby is {hobby}
'''
print(sentence)
#最後整合起來
sentence = f'''my name is {info.get("name")},
my age is {info["addr"]["info"][1].get("age")}
my id is id {info["addr"]["info"][3].get("編號")},
my location is {info["addr"].get("國家")}
my hobby is {info["addr"]["info"][3].get("hobby")[0] + '-' + info["addr"]["info"][3].get("hobby")[1] + '-' + info["addr"]["info"][3].get("hobby")[2]
}
'''
print(sentence)
#輸出結果
# my name is gdy,
# my age is 22
# my id is id 466722,
# my location is 中國
# my hobby is read-study-music
【八】布林型別
# 就是我們生活中的真或假
# 真 true
# 假 false
is_right = True
print(is_right,type(is_right)) # True <class 'bool'>
# 【二】在Python中典型的真或假的情況
# 哪些情況是真?
# 哪些情況是假?0為假,空的字串,空的列表,空的字典,空的元組
# 不存在的情況,空值為假
name = ""
print(bool(name)) # False
names = ("11")
print(bool(names)) # True
【九】元組型別
# 【1】用來儲存不變的元素
name = ["gdy"]
name[0] = "hyt"
print(name[0])
# 特別注意,元組中只有一個元素的時候一定要加 ,
name = ("gdy") # 不加逗號
print(name,type(name)) # gdy <class 'str'>
name = ("gdy"), # 加逗號
print(name,type(name)) # ('gdy',) <class 'tuple'>
name[0] = "hyt" # 原組無法替換元素
print(name)
# 元組可以解包,解壓賦值
info = ("gdy",22)
print(info[0])
print(info[1])
name,age = ("gdy",22)
print(name)
print(age)
【十】集合型別
# 無序,在集合中看不到重複的元素
# {key:value}:字典
# {key}:集合
num ={1,2,3,4,5,6,7,8,9,10,10,10}
print(num,type(num))
# 每一次輸出的順序都會變,除非集合中只有數字或者只有字母
# 集合型別中不能存放字典和列表,因為字典和列表是可變資料
num = {1,2,3,"name","gdy",4,1.11,4,4,4}
print(num)