變數以及八大資料型別介紹
1 變數
1.1 學習變數的目的
# 學習變數有助於我們在程式中儲存和運算元據,提高程式碼質量,更方便我們操作和修改資料。
1.2 學習基本資料型別的目的
#是在不同的場景下使用對應的資料型別來運算元據
2 八大資料型別介紹
- 【1】數字型別
- (1)整數型別
- (2)浮點數型別
- 【2】字串型別
- 【3】列表型別
- 【4】字典型別
- 【5】布林型別
- 【6】元組型別
- 【7】集合型別
2.1 數字型別(int)
2.1.1 整數型別(int)
# (1)用途
# 用來標識整數,最廣泛使用的資料型別之一
# (2)語法
# 語法 :
# 變數名 = 數字
age = 18
# 可以檢視當前變數的變數型別
print(type(age)) # <class 'int'>
# (3)使用場景
# 可以用來進行加減乘除的運算
2.1.2 浮點數型別(float)
# (1)用途
# 可以用來表示帶小數的數值
# (2)語法
# 變數名 = 浮點數
weight = 88.00
print(type(weight)) # <class 'float'>
# (3)場景
# 取款的時候你會發現取款金額和餘額都不是整數
# 100.00
2.2 字串型別(str)
# 【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 dream ,
I'm 18 years old,
hope you 'wonderful!'
'''
print(sentence, type(sentence)) # <class 'str'>
在三引號內部,如果第一行和最後一行不寫內容預設存在一個換行
想取消掉只需要把內容移上去即可
# 【3】使用方法
# (1)字串加法
print(1 + 1) # 2
# 字串 + 字串 = 字串
print("1" + "1", type("1" + "1")) # 11 <class 'str'>
# (2)字串乘法
print(1 * 9) # 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
# 支援索引取值
word = "Hello World"
# 索引取值的語法 字串[索引座標]
# 取出來的值還是字串
print(word[0]) # w
print(word[5], type(word[5])) # <class 'str'>
print(word[10]) # d
# 支援負索引取值
# 索引的意思就是座標 -3 -2 -1 0 1 2 3
# H e l l o W o r l d
# -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
print(word[-1]) # d
print(word[-6], type(word[-6])) # 第六位是空格 雖然不顯示但是確實是有 <class 'str'>
# 計算當前字串的總字元數
# 計算當前字串的總字元數
print(len(word), type(len(word))) # 11 <class 'int'>
# 當我們使用正索引取值的時候,索引是從 0 開始 0 - 10
print(word[len(word) - 1]) # d
# 如果是負索引取值,從 -1 開始 ,可以取到 -11
print(word[-len(word)])
# 【4】字串的格式化輸出
# myself_sentence = "my name is dream,my age is 18,"
# myself_sentence = "my name is hope,my age is 18,"
# 變數可以用來儲存值
name = "hope"
age = 18
# myself_sentence = "my name is name,my age is age"
# (1)%佔位輸出法
# myself_sentence = "my name is %s,my age is %s" % (name, age)
# %s : string字串型別的資料
# %d : int數字型別的資料
# myself_sentence = "my age is %d,my name is %s" % (name, age)
# TypeError: %d format: a real number is required, not str(這裡報錯是因為程式執行最後還是name, age)
name = "hope"
age = 18
myself_sentence = "my name is %s,my age is %d" % (name, age)
print(myself_sentence) # my name is hope,my age is 18
# (2)f + {}
# myself_sentence = f"my name is {name},my age is {age}"
# (3)format輸出語法
# 按照位置傳值
# myself_sentence = "my name is {},my age is {}".format(name, age)
# 按照關鍵字傳值
myself_sentence = "my age is {age},my name is {name}".format(name=name, age=age)
print(myself_sentence) #my age is 18,my name is hope
# \ 在python中屬於是轉移符號
# name = "dream \n"
name = "dream\\" # dream\
print(name)
print(age)
2.3 列表型別(list)
# 【1】作用
# 可以在列表中存放從多個值,不限制資料型別
# 比如我用一個列表儲存很多學生的名字
# 【2】語法
name_list = ["dream", "hope"]
print(name_list, type(name_list)) # ['dream', 'hope'] <class'list'>
# 【3】放了值是為了方便使用
# (1)索引取值
# 索引取值正向從 0 開始,負向 -1 開始
print(name_list[0]) # dream
print(name_list[-1]) # hope
# 【4】索引支援巢狀
info_list = [ "dream", ["15", ["上海"]]]
print(info_list) # ['dream', ['15', ['上海']]]
print(info_list[1]) # ['15', ['上海']]
print(info_list[1][1]) # ['上海']
print(info_list[1][1][0]) # 上海
2.4 字典型別
# 【1】作用
# 可以記錄多個值,並且這些值帶有各自及的名字
# 字典資料儲存的方式 是 key:value
# 【2】語法
# 裡面存的每一個值都是 key:value 的 kv鍵值對
infO_data = {
"name": "dream",
"age": 18,
"hobby": ["music", "run", "make girlfriends"]
}
# 【3】放就是為了方便取
# (1)索引取值
# 字典不支援索引取值!
# print(infO_data[0])
# (2)根據鍵取值
print(infO_data["name"]) # dream
# [key] 取值,如果字典中不存在當前 鍵 就會報錯
# print(infO_data["addr"]) # KeyError: 'addr'
# (3).get(鍵)取值
print(infO_data.get("name")) # dream
# .get(key) 取值,如果字典中不存在鍵對應的值不會報錯,而是反悔了一個 None
print(infO_data.get("addr"), type(infO_data.get("addr"))) # None <class 'NoneType'>
info = {
'name': 'Dream',
'addr': {
'國家': '中國',
'info': [
666,
{'age': 18},
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")
# 從 info 字典中 獲取到 addr 對應的 字典 ,再 從字典中獲取 鍵 國家 對應的值
location = info["addr"].get("國家")
age = info["addr"]["info"][1].get("age")
id = info["addr"]["info"][3].get("編號")
hobby = info["addr"]["info"][-1].get("hobby")[0] + '-' + info["addr"]["info"][-1].get("hobby")[1] + '-' + \
info["addr"]["info"][-1].get("hobby")[2]
# sentence = f"""my name is {name} ,
# my age is {age} ,
# my id is {id} ,
# my location is {location} ,
# my hobby is {hobby}
# """
sentence = f"""my name is {info.get("name")} ,
my age is {info["addr"]["info"][1].get("age")} ,
my id is {info["addr"]["info"][3].get("編號")} ,
my location is {info["addr"].get("國家")} ,
my hobby is {info["addr"]["info"][-1].get("hobby")[0] + '-' + info["addr"]["info"][-1].get("hobby")[1] + '-' + info["addr"]["info"][-1].get("hobby")[2]}
"""
print(sentence)
2.5 布林型別(bool)
# 就是我們生活中的真或假
# 真 True
# 假 Flase
is_right = True
print(is_right, type(is_right)) # True <class 'bool'>
# 在python中典型的真或假的情況
# 哪些情況是真?
# 數字 1 為真
# 哪些情況是假?
# 不存在的情況:空值為假,空的字串、空的列表、空的字典、空的元組、數字 0
name = ""
name = []
name = {}
name = 2
# name = False
print(bool(name)) # False
name = "11"
print(bool(name)) #true
2.6 元素型別
# 【1】用來儲存不變的元素
name = ["dream"]
name[0] = "hope"
print(name) #["hope"]
# 特別注意:元組中有一個元素的時候一定要加 ,
# 特別注意:元組中有一個元素的時候一定要加 ,
# 特別注意:元組中有一個元素的時候一定要加 ,
name = ("dream")
print(name, type(name)) # dream <class 'str'>
name = ("dream",)
print(name, type(name)) # ('dream',) <class 'tuple'>
# name[0] = "hope"
# print(name)
# 元組的解包 ; 解壓賦值
info = ("dream", 18)
print(info[0])
print(info[1])
name, age = ("dream", 18)
print(name)
print(age)
2.7 集合型別
# 集合 : 無序且去重 在集合裡面看不到重複的元素
# {key:value} : 字典
# {key} : 集合
num = {1, 2, 3, 4, 5, 5, 5, 5, 5, 5}
print(num, type(num)) #{1, 2, 3, 4, 5} <class 'set'>
# 集合型別中不能存放的元素型別是 字典和列表 : 因字典和列表是可變資料型別不能被 hash
num = {1, 2, 3, 'name', 'dream', 4, 1.11, 5, 5, 5, 5, 5, 5}
print(num)
# {1, 2, 3, 4, 1.11, 5, 'dream', 'name'}
# {1, 'name', 3, 2, 4, 1.11, 5, 'dream'}
# {'name', 2, 3, 4, 1, 1.11, 5, 'dream'} 體現了集合的無序性,要是放的全是數字就一直不會改變