Python保姆級教程 數據類型—新手小白入門必看系列

来源:https://www.cnblogs.com/xw-01/archive/2023/07/14/17555170.html
-Advertisement-
Play Games

推薦使用壓縮軟體和殺毒軟體 7 - zip 使用火絨 # 一、基本數據類型與變數(上) ### 2.1 註釋 優點: 1. 代碼說明 沒註釋的代碼 有註釋的代碼 1. 不讓解釋器執行註釋的那句話 ### 2.2 單行註釋 單行註釋快捷鍵:ctrl + ? ### 2.3多行註釋 """""" (三個 ...


推薦使用壓縮軟體和殺毒軟體


7 - zip

使用火絨

一、基本數據類型與變數(上)

2.1 註釋

優點:

  1. 代碼說明

沒註釋的代碼

有註釋的代碼

  1. 不讓解釋器執行註釋的那句話

2.2 單行註釋

單行註釋快捷鍵:ctrl + ?

2.3多行註釋

"""""" (三個雙引號)

2.4 字面量變數

字面量是已經被定義好的量
在程式中可以直接使用的字面量:1,2,3,4,5,6

185730213551

什麼是變數:可以改變的量

電腦用來存貯數據的盒子,想用這個數據,就直接那盒子就好了

變數名 = 值

a = 10
print(a)

10

不要把賦值語句的等號等同於數學的等號:

x = 10
x = x +2
a = 'abc'
b = a
a = 'edg'
print(b)

abc

說明:

1.變數就是可以變化的量,可以隨時進行修改
2.程式是使用來處理數據的,而變數就是用來存貯數據的
3.變數就是一個存貯數據時,當前數據所在的記憶體地址的名字

多個變數賦值

a, b, c = 1, 2, 'd'
print(a)
print(b)
print(c)

1
2
d

a = b = c = 1
print(a)
print(b)
print(c)

1
1
1

2.5 標識符和關鍵字

規則如下:

  • 由數字,字母,下劃線組成
  • 不能以數字開頭
  • 不能使用內置的關鍵字
  • 嚴格區分大小寫

2.6命名規範

  • 標識符命名要做到見名知意

name ,age ,

遵守命名規範

  • 駝峰命名法:大駝峰和小駝峰命名法
  • 大駝峰:每一個單詞的首字母都採用大寫字母

First Name, Last Name

  • 小駝峰:第一個單詞以小字母開始;第二個單詞的首寫字母大寫

myName , youName

2.7關鍵字

具有特殊功能的的標識符,就是關鍵字

關鍵字不能聲明為變數名

#列印python的所有關鍵字
import keyword
print(keyword.kwlist)

['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']

2.8 基本數據類型初始

數值類型

2.8.1 整數類型 int

1 ,2 ,3, 100, 200, -300, 0

n = 78
print(n)

78

a = 1000_0000_0000_0000
b = 1000000000000000
print(a)
print(b)

1000000000000000
1000000000000000

2.8.2 浮點類型 float

1.23×10^9

12.3×10^8

1.23 , 3.14, -9.1

1.23e9, 12.3e8, 0.000012==》1.2e-5

rount

兩種方式表示浮點數

  • 十進位形式 ,1.2 , 1.23 , 12.3
  • 指數形式 (科學計數法)
aen 或者 aEn
a為尾數部分,n是指數部分,E或e是固定的字元,用於分割尾數部分和指數部分
2.1e5 = 2.1×10^5 其中2.1是尾數,5是指數
3.7E-2 = 3.7×10^-2 其中3.7是尾數,-2是指數
0.5E7 = 0.5×10^7 其中0.5是尾數, 7是指數
14E3 = 14×10^3  其中14是尾數,3是指數

print(14E3)

float1 = 0.0000000000000000000847
print(float1)

14000.0
8.47e-20

2.8.3 布爾值 bool

只有True 和False 兩種值,註意大小寫

True 表示真(表示條件滿足或者成立) ==》1

False 表示假(表示條件不滿足或者不成立) == 》0

print(3>2)
print(2>3)

True
False

2.8.4 字元串 str

不屬於數值類型,它是序列類型

以單引號,雙引號,三引號括起來的任意文本,abc , xyz

基本使用

name = 'python'
age = 18
jiaxiang = '湖北'
print(name+jiaxiang)  # 相加就是簡單的字元串拼接
print(name*5) # 相乘就相當於將字元串和自己相加了5次

python湖北
pythonpythonpythonpythonpython

兩種取值順序:

  • 從左到右索引預設0開始,最大範圍是字元串長度少1
  • 從右往左索引預設-1開始,最大範圍是字元串的開頭
str3 = 'abcdefg'
print(str3[2])
print(str3[6])
print(str3[-1])

c
g
g

子字元串[初始位置:結束位置],包頭不包尾 ,左閉右開
str3 = 'abcdefg'
print(str3[1:6])
print(str3[:6])
print(str3[3:])

bcdef
abcdef
defg

2.9 查看數據類型

  • 變數沒有類型,數據才有類型

type(變數的名字)==》查看數據類型

a = 'ab'
b = 123
c = 1.23

print(type(a))
print(type(b))
print(type(c))

<class 'str'>
<class 'int'>
<class 'float'>

2.9.1 轉義字元 \

\n ==》 換行

\t ==》 製表符, 一個tab鍵,也就是四個空格

\ \ ==》\

轉義符 必須寫在引號內,轉義就是把他變蠢了

print('床前明月光,\n疑是地上霜')
print('床前明月光,\t疑是地上霜')

床前明月光,
疑是地上霜
床前明月光,	疑是地上霜

print('\\\n\\')

\
\
height = 175.0
print('您的身高是:'+height) # 報錯
print('您的身高是:'+str(height))

i = int('123')
print(i)
ii = ('123個')
print(ii)


您的身高是:175.0
123
123個

看到這裡給大家留一個彩蛋,初學作業

1.用變數給自己建立個角色信息,要輸出出來
    姓名
    年齡
    身高
    家鄉
    興趣
    是否有編程基礎
2.有一個字元串變數  s = '人生苦短,我學python'
    通過下標索引,分別輸出 苦,學 o 這幾個字元


二、數據類型(下)

1.1 列表生成式

list [1,2,3,4,5,6,7,8,9]

list1 = [1,2,3,4,5,6,7,8,9]
print(list1)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list(range(1,10)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

1.1.1 普通的列表生成式

# 普通寫法
li = []
for i in range(1,10):
    li.append(i)
print(li)

# 列表生成式寫法
print([i for i in range(1,10)])
[1*1,2*2,3*3,4*4,...,9*9]
# 普通寫法
li = []
for i in range(1,10):
    li.append(i*i)
print(li)

# 列表生成式
print([i*i for i in range(1,10)])
[1*2,2*3,3*4,...,9*10]
# 普通寫法
li = []
for i in range(1,10):
    li.append(i*(i+1))
print(li)

# 列表生成式
print([i*(i+1) for i in range(1,10)])

[2, 6, 12, 20, 30, 42, 56, 72, 90]
[2, 6, 12, 20, 30, 42, 56, 72, 90]
# 求偶數 ,普通寫法
li = []
for i in range(1,11):
    if i % 2 == 0:
        li.append(i)
print(li)

# 帶if的列表生成式
print([i for i in range(1,11) if i % 2 == 0])

[2, 4, 6, 8, 10]
[2, 4, 6, 8, 10]

使用兩層迴圈,生成一切組合可能(ABC和123)

# 普通寫法
li = []
for i in 'ABC':
    for j in '123':
        li.append(i+j)
print(li)

# 雙層迴圈寫法
print([i+j for i in 'ABC' for j in  '123'])

['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

1.2 元組 tuple

元組通常使用一對小括弧將所有元素包圍起來,但是小括弧不是必須的

tuple1 = 'python教程', 'Java'
print(tuple1)
print(type(tuple1))

1.2.1 查

count()
tuple2 = (123, 'Google', 'JD', 'Taobao', 123)
print(tuple2.count(123))  # 2
print(tuple2.count('JD'))

2
1
index()
檢索某個元素的下標值
t = (123, 'Google', 'JD', 'Taobao', 123)
print(t.index(123))
print(t.index(123,1))

0
4

1.2.2 功能

1相加,兩個元組相加生成一個新的元組
data = ('張三', '李四') + ('王五', '趙六')
print(data)
('張三', '李四', '王五', '趙六')

2.相乘
data = ('張三', '李四')*2
print(data)
('張三', '李四', '張三', '李四')

3.獲取長度
data = ('張三', '李四')
print(len(data))
2
4.索引
data = ('張三', '李四', '王五', '趙六')
print(data[0])
print(data[1])
print(data[2])
print(data[3])

張三
李四
王五
趙六

5.切片
data = ('張三', '李四', '王五', '趙六')
print(data[0:3])
('張三', '李四', '王五')

6.步長,隔多少取值
data = ('張三', '李四', '王五', '趙六')
print(data[1:4:2]) # 1是開始位置,4是結束位置,2是步長
('李四', '趙六')

7.for迴圈
data = ('張三', '李四', '王五', '趙六')
for i in data:
    if i == '李四':
        continue  # 結束本次迴圈 ,繼續執行下一次迴圈
    print(i)
    
張三
王五
趙六

元組的本身是不可變的,如果元組中包含其他可變元素,這些可變元素就可以改變

1.3字元串格式化輸出

你好某某某 我叫某某某 再見某某某
name = 'python'
age = 18
print('大家好, 我叫'+name+', 我今年'+str(age)+'歲')

1.3.1% 方法(占位符)

%s = 字元串 ==》只能放在字元串裡面
%d = 整數 ==》 只能放整數
%f = 小數 ==》預設保留六位小數
	%.1f ==> 保留一位小數
    %.2f ==> 保留兩位小數
語法:('xx%dxxx%s'%(變數1,變數2))# 或者帶入變數數據
name = 'python'
age = 18
height = 175.0
print('你好,我叫%s, 今年%d歲了, 身高%f'%(name,age,height))
print('你好,我叫%s, 今年%d歲了, 身高%.1f'%(name,age,height))
print('你好,我叫%s, 今年%d歲了, 身高%.2f'%(name,age,height))

你好,我叫python, 今年18歲了, 身高175.000000
你好,我叫python, 今年18歲了, 身高175.0
你好,我叫python, 今年18歲了, 身高175.00

s = '我叫%s, 今年%d歲了, 身高%f'
print(s%('python', 15, 175.0))

我叫python, 今年15歲了, 身高175.000000

1.3.2 format()

語法:
name = 'python'
age = 18
height = 175.0
print('你好, 我叫{},今年{}歲了,身高{}'.format(name,age,height))

傳入的數據類型是不限的,字元串,元組,列表都行
數據跟{}順序從左到右一一對應
直接傳數據
傳入多個數據:
'{}{}{}'.format(數據1,數據2,數據3)
print('你好,我叫{},今年{}歲了,身高{}'.format('python',18,175.0))
自定義數據:
'{下標}{下標}'.format(數據1,數據2)
print('你好,我叫{0},今年{2}歲了,身高{1}'.format('python',175.0,18))

1.3.3 f-format

語法:在字元串裡面加上一個f/F,把要輸出的變數用大括弧{}包裹
name = 'python'
age = 18
height = 175.0
print(f'大家好,我叫{name},我今年{age}歲了,身高是{height}')
print(f'大家好,我叫{name[0]},我今年{age+1}歲了,身高是{height-10}')

大家好,我叫python,我今年18歲了,身高是175.0
大家好,我叫p,我今年19歲了,身高是165.0




三 數據類型進階(上)

2.1散列類型

1.數據類型:int , float , bool ==>存儲一個數值

2.序列類型: str, list , tuple ==》存儲多個數據

3.散列類型

無序 內部元素不重覆 沒有下標

2.1.1字典 dict

用來保存一些有典型的對應關係的數據類型,特點是使用鍵值對的方式來存儲數據

key === > 鍵 value===> 值

鍵值對的語法:key:value

表現形式:

{},不過大括弧裡面如果存儲的是鍵值對,那麼就是字典

通過鍵查找值

字典名[鍵]

字典的key不可以是重覆的,如果重覆則取最後一個重覆鍵的值

call = {'python':'11234', 'look':'11235', '阿爾法':'11236'}
user = {'姓名':'python', '年齡':18, '工作':'python講師'}

print(call['python'])
print(user['工作'])

dict1 = {'a':1, 'b':2, 'a':3, 'a':4}
print(dict1)

11234
python講師
{'a': 4, 'b': 2}

可變性

dict1 = {'a':1, 'b':2, 'a':3, 'a':4}
dict1['b'] = 100
print(dict1)
{'a': 4, 'b': 100}

當我們想要表示一組固定信息的時候,用字典就可以更加的直觀

字典包含多個鍵值對,key是字典的關鍵數據,程式對字典的操作都是基於key的
- 通過key訪問value
- 通過key添加key-value對
- 通過key刪除key-value對
- 通過key修改key-value對
- 通過key判斷指定key-value對是否存在
通過key訪問value
scores = {'語文':89}
print(scores['語文'])

如果腰圍字典添加key-value對,就只需要為不存的key賦值就可以了
scores['數學'] = 93
scores[92] = 8.4
print(scores)

如果要刪除字典中的鍵值對,就可以使用del語句
del scores['語文']
del scores['數學']
print(scores)

對存在的鍵值對賦值,新的值會覆蓋原來的值
cars = {'bmw':88, 'benchi':83, 'tesila':95}
cars['benchi'] = 4.3
cars['tesila'] = 3.8
print(cars)

判斷字典是否包含指定的key,使用in或者not in
in  not in # in 包含   not in 不包含
cars = {'bmw':88, 'benchi':83, 'tesila':95}
print('tesila' in cars)
print('baoshijie' in cars)
print('BYD' not in cars)

字典的key可以是任意的不可變類型

字典允許直接對不存在的key賦值,這樣就可以增加一個鍵值對

常用方法

字典方法
print(dir(dict))

['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 
 
 
 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

2.1.1.1 clear()

用於清空點中所有的鍵值對

cars = {'bmw':88, 'benchi':83, 'tesila':95}
print(cars)
cars.clear()
print(cars)

{'bmw': 88, 'benchi': 83, 'tesila': 95}
{}

2.1.1.2 get()

根據key獲取value的

cars = {'bmw':88, 'benchi':83, 'tesila':95}
print(cars.get('bmw'))
print(cars.get('baoshijie'))
print(cars['baoshijie'])

88
None
    print(cars['baoshijie']) # 報錯
KeyError: 'baoshijie'

翻車的地方 (元組)

data = (99,88,77,['左手',18],33,22,11)

data[3] [0] = 'look'

print(data)

元素不可變 但是元素內部有可變的類型 就可以改變 但只限於元組內部 可變元素

彩蛋

# 1.將列表數據[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]去重

# 2.有字典 dic = {"k1":"v1","k2":"v2","k3":"v3"},實現以下功能:
(1)、遍歷字典 dic 中所有的key
(2)、遍歷字典 dic 中所有的value
(3)、迴圈遍歷字典 dic中所有的key和value
(4)、添加一個鍵值對"k4","v4",輸出添加後的字典 dic
(5)、刪除字典 dic 中的鍵值對"k1" "v1",並輸出刪除後的字典 dic
(6) 獲取字典 dic中“k2"對應的值
# 3.students =[
{'name':'go','age':18,'score':98,'tel':'18888888888', gender':'female'},
{'name''Java'age :20 'score':95."tel’: 18888888889' 'aender'.'unkown'},
{'name':'python' 'age' 18 'score':88.'tel':'18888888810' 'gender':'male'},
{'name':'php','age':16,'score':58,'tel':'18888888811', 'gender':'unkown'},
{'name':'c' 'age':19.'score':78.'tel':'18888888812' 'gender': male'},
{'name':'c++' 'age':17.'score':92,'tel':'18888888813','gender':'male'},
]

#(1)統計及格學生的個數
#(2)列印不及格學生的名字和對應的成績
# #(3)刪除性別不明的所有的學生



四、數據類型進階(中)

1.1 update()

可以使用一個字典所包含的鍵值對來更新已經有的字典,如果被更新的字典包含對應的鍵值對,那麼原來的值會被覆蓋,如果不包含,就會被添加進去

cars = {'bmw':88, 'benchi':83,'tesila':95}
cars.update({'bmw':4.5,'baoshijie':9.3})
print(cars)
{'bmw': 4.5, 'benchi': 83, 'tesila': 95, 'baoshijie': 9.3}

1.2 items(), keys(), values()

dict_items,dict_keys,dict_values對象,python不希望用戶直接操作這幾個方法,但是可以通過list()函數把他們轉成列表

items()==》取鍵值對
cars = {'bmw':88, 'benchi':83,'tesila':95}
ims = cars.items()
print(ims)
print(type(ims))
print(list(ims))
print(list(ims)[1])

dict_items([('bmw', 88), ('benchi', 83), ('tesila', 95)])
<class 'dict_items'>
[('bmw', 88), ('benchi', 83), ('tesila', 95)]
('benchi', 83)

keys()==> 取鍵
cars = {'bmw':88, 'benchi':83,'tesila':95}
kys = cars.keys()
print(kys)
print(type(kys))
print(list(kys))
print(list(kys)[1])

dict_keys(['bmw', 'benchi', 'tesila'])
<class 'dict_keys'>
['bmw', 'benchi', 'tesila']
benchi

cars = {'bmw':88, 'benchi':83,'tesila':95}
vals = cars.values()
print(vals)
print(type(vals))
print(list(vals))
print(list(vals)[1])

dict_values([88, 83, 95])
<class 'dict_values'>
[88, 83, 95]
83

程式調用字典的三個方法後,都需要調用給他們轉成列表,這樣就可以吧這三個方法的返回值轉成列表

1.3 pop()

用於獲取指定的key對應的value值,並且刪除這個鍵值對

cars = {'bmw':88, 'benchi':83,'tesila':95}
print(cars.pop('tesila'))
print(cars)

95
{'bmw': 88, 'benchi': 83}

1.4 setdefault()

能返回指定的key對應的value值,如果鍵值對不存在,就會先為這個鍵設置預設的值,再返回這個鍵對應的值

cars = {'bmw':88, 'benchi':83,'tesila':95}
print(cars.setdefault('baoshijie',92))#兩個參數,第二個是設置預設值,如果不存在就會新增鍵值對
print(cars)

92
{'bmw': 88, 'benchi': 83, 'tesila': 95, 'baoshijie': 92}

2.1 字典

2.1.1公共功能

長度

info = {'age':12, 'shengming':True, 'name':'fe'}
data = len(info)
print(data)

3

索引(鍵)

info = {'age':12, 'shengming':True, 'name':'fe'}
print(info['name']) # fe  字典 通過鍵 查找值
print(info['age'])  #12
print(info['xxx'])  # 報錯  如果鍵不存在會報錯

fe
12
報錯

value = info.get('xxx') # 使用get方法獲取值如果不存在就列印None
print(value)
None

for迴圈

info = {'age':12, 'shengming':True, 'name':'fe'}
#直接遍歷這個字典,可以獲取所有的鍵
for item in info:
    print(item)  #所有鍵
    
age
shengming
name
#使用keys方法
for item in info.keys():
    print(item)  # 所有鍵
    
#使用values方法
for item in info.values():
    print(item)  # 所有值
    
#使用items方法
for key,value in info.items():
    print(key,value)  #  獲取所有的鍵值

2.2 集合

元素都是唯一的,互不相同的

{name1, name2, .....name n}
語法:
集合名 = {數據1,數據2,數據3,。。。。數據n}#如果有重覆的數據,是不會被添加到記憶體空間裡面

無法存儲列表,字典,集合這些數據類型,否則會報錯

#報錯
print({{'a':1}})
print({[1,2,3]})
print({{1,2,3}})

要註意的是:集合中的數據必須保證是唯一的,集合對於美中數據元素,只會保留一份,也就是去重

s = {1,2,1,(1,2,3),'c','c'}
print(s)

{1, 2, (1, 2, 3), 'c'}

python中set是沒有順序的,每次輸出時順序都有可能不同

set1 = {1,2,3,4,5,5,1,2,3,4,5,6,7,9,1}
print(set1)
# print(set1[1])
print(type(set1))

{1, 2, 3, 4, 5, 6, 7, 9}
<class 'set'>

註意 :創建空集合的時候必須要使用set()而不是{},因為{}預設是空字典

li1 = [] # 空列表
tu1 = () # 空元組
str1 = '' # 空字元串
dict1 = {} # 空字典
set1 = set() #空集合
# 去重並轉為列表輸出
li = [1,2,3,4,5,6,7,89,41,1,1,1]
# li1 = set(li)
# li2 = list(li1)
# print(li1)
# print(li2)

print(list(set(li)))
[1, 2, 3, 4, 5, 6, 7, 41, 89]

2.2.1 集合的數學運算

運算符操作 python運算符 含義
交集 & 取兩集合公共的元素
並集 | 取兩集合全部的元素
差集 - 取一個集合中另一集合沒有的元素
成員運算 in 和 not in 判斷某個元素是否在或者不在集合中
集合1 & 集合2——》判斷交集
集合2 | 集合1——》判斷並集
集合1 - 集合2——》判斷差集

交集:兩個集合裡面共同有的數據
並集:兩個集合裡面的全部數據(不包括重覆數據,集合本身也不能重覆)
差集:集合1 - 集合2  減去共有的,剩下的就是差集


set1 = {1,2,3}
set2 = {3,4,5}
print(set1 & set2)
print(set1 | set2)
print(set1 - set2)# 差集{1, 2} 取一個集合中另一個集合沒有的元素,將set1中屬於set2的元素刪除
print(set2 - set1)# 4,5
print(3 in set2)

{3}
{1, 2, 3, 4, 5}
{1, 2}
{4, 5}
True

集合的作用:

  1. 存儲非重覆數據
  2. 用於將序列類型去重,邏輯判斷(交集,並集,差集)

2.2.2 增

add() 參數為要添加的對象,通過多次添加數據可以發現添加後的元素位置不確定

語法: 集合名.add(元素)
s = {'Java'}
s.add('python')
print(s)
s.add('go')
print(s)
s.add('c')
print(s)
s.add('c++')
print(s)

{'Java', 'python'}
{'go', 'Java', 'python'}
{'go', 'Java', 'python', 'c'}
{'c', 'c++', 'go', 'python', 'Java'}

update() 參數為序列類型,會將每一個元素迭代添加到序列中(隨機添加)

s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)

{'3', '2', 'fe', '1'}
{'2', 4, 5, 6, '3', '1', 'fe'}

2.2.3 刪

pop()隨機刪除一個元素

實際上在進行代碼實驗的時候並不是隨機的
僅僅是在集合元素是字元串類型時,並且在cmd運行的時候才會隨機刪除,pycharm中預設保持刪除第一個元素
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
s.pop()
print(s)
s.pop()
print(s)

{'2', '1', 'fe', '3'}
{'1', 4, 'fe', 5, 6, '2', '3'}
{4, 'fe', 5, 6, '2', '3'}
{'fe', 5, 6, '2', '3'}

remove(參數)有參數,參數就是要刪除的元素,如果元素不存在就報錯

集合名.remove(元素)
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
s.remove('1')
print(s)
s.remove('2')
print(s)
s.remove('8')
print(s)

{'1', 'fe', '2', '3'}
{4, 5, 6, '3', '1', '2', 'fe'}
{4, 5, 6, '3', '2', 'fe'}
{4, 5, 6, '3', 'fe'}
報錯

discard()跟remove相似,但是元素不存在也不會報錯

s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
s.discard('aaa')
print(s)

{'3', '1', 'fe', '2'}
{4, 5, 6, '3', 'fe', '1', '2'}
{4, 5, 6, '3', 'fe', '1', '2'}

clear() 清空集合中的元素

s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
s.clear()
print(s)

{'1', '3', '2', 'fe'}
{'2', 4, 5, 6, 'fe', '3', '1'}
set()

del () 集合名(),刪除集合

# 整個吧盒子(變數)刪除了,所以會報錯,先刪除了盒子,再去列印這個s就會報錯顯示盒子s不存在
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
del s
print(s)

2.2.4 改

由於set中的數據沒有索引,也沒有辦法去定位一個元素,所以沒辦法直接修改
先刪除在添加
s = {'A', 'B', 'C', 'D'}
# 把A改為E
s.remove('A')
s.add('E')
print(s)

{'B', 'E', 'C', 'D'}

2.2.5查

set是一個可迭代對象,可以通過for迴圈進行遍歷查詢
s = {'A', 'B', 'C', 'D'}
for i in s:
    print(i)
    
A
C
D
B
複習鞏固 練習題
 在終端中獲取顏色(RGBA),列印描述信息,否則提示顏色不存在
    "R" -->"紅色"
    "G" -->"綠色"
    "B" -->"藍色"
    "A" -->"透明度"
# 1.將列表數據[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]去重
li1 = [1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]
li2 = []
for i in li1:
    if i not in li2:
        li2.append(i)
print(li2)
#或者
print(list(set(li1)))

# 2.有字典 dic = {"k1": "v1", "k2": "v2", "k3": "v3"},實現以下功能:
# (1)、遍歷字典 dic 中所有的key
dic = {"k1": "v1", "k2": "v2", "k3": "v3"}
for key in dic.keys():
    print(key)
# (2)、遍歷字典 dic 中所有的value
for value in dic.values():
    print(value)
 # (3)、迴圈遍歷字典 dic 中所有的key和value
for key,value in dic.items():
    print(key,value)
# (4)、添加一個鍵值對"k4","v4",輸出添加後的字典 dic
dic['k4'] = 'v4'
print(dic)
# (5)、刪除字典 dic 中的鍵值對"k1","v1",並輸出刪除後的字典 dic
dic.pop('k1')
print(dic)
# (6)、獲取字典dic中“k2”對應的值
print(dic.get('k2'))

students = [
    {'name': 'Java', 'age': 18, 'score': 98, 'tel': '18888888888', 'gender': 'female'},
    {'name': 'c', 'age': 20, 'score': 95, 'tel': '18888888889', 'gender': 'unkown'},
    {'name': 'python', 'age': 18, 'score': 88, 'tel': '18888888810', 'gender': 'male'},
    {'name': 'c++', 'age': 16, 'score': 58, 'tel': '18888888811', 'gender': 'unkown'},
    {'name': 'php', 'age': 19, 'score': 78, 'tel': '18888888812', 'gender': 'male'},
    {'name': 'go', 'age': 17, 'score': 92, 'tel': '18888888813', 'gender': 'male'},
]
# (1)統計及格學生的個數
count = 0 #初始化一個值
for d in students:
    if d['score'] >= 60:
        count += 1
print(count)

# (2)列印不及格學生的名字和對應的成績
for d in students:  #d是字典
    if d['score'] < 60:
        print(d['name'],d['score'])
# (3)刪除性別不明的所有的學生
for d in students:
    if d['gender'] == 'unkown':
        #pop根據下標  remove根據值刪除  clear 清空  del 列表名[下標]
        students.remove(d)  # 刪除性別不明
print(students)





複習鞏固答案

1.編寫一個程式,檢查任意一個年份是否是閏年
- 如果一個年份可以被4整除不能被100整除,或者可以被400整除,這個年份就是閏年
year = int(input('請輸入一個年份:'))
if year % 4 == 0 and year % 100 != 0 or year %400 == 0:  # != 不相等
    print(year,'是閏年')
else:
    print(year,'是平年')

2.從鍵盤輸入小明的期末成績:
	當成績為100時,'獎勵一輛BMW'
    當成績為(80-99)時,'獎勵一臺iphone'
    當成績為(60-79)時,'獎勵一本參考書'
    其他時,獎勵棍子一根

3.計算1+2+3+...+100(使用while迴圈)

num = 1
sum = 0  # 初始化一個累計的變數
while num < 101:
    sum += num
    num += 1  # num1 =num + 1
print('num=',sum)

4.列印99乘法表:
1*1=1
1*2=2	2*2=4
1*3=3	2*3=6	3*3=9
1*4=4	2*4=8	3*4=12	4*4=16
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81

for i in range(1,10):
    for j in range(1,i+1):
        print(i,'*',j,'=',i*j,end='\t')
    print()



五 數據類型進階(下)

python的數據類型可以分為三類:數值類型,序列類型,散列類型

數值類型:int , float , bool

2.1 序列類型

元素1  元素2   元素3  元素4 元素。。。。 元素n
 0      1      2       3    4         n-1
-n

# 元素下麵的是索引取值
s = 'CSDN博客論壇'
print(s[0],'=',s[-8])
print(s[-1],'=',s[7])

C = C
壇 = 壇

2.2 字元串 str

字元串是一個有序的字元集和,用於存貯和表示基本的文本信息

2.2.1 常用方法

操作數據最本質的行為是什麼?== 》增刪改查

字元串.方法名

2.2.1.1 find

find的作用:範圍性查找子串,返回索引值,沒有則返回-1

語法:

str.find(str,beg=0,end=len(string))
  • str==> 指定檢索的字元串
  • beg==》開始的索引,預設值為0
  • end==》結束的索引,預設為字元串的長度

find常用於檢測字元串中是否包含子字元串str

s = 'hello world'
print(s.find('o'))  #o 的索引值就是4
print(s.find('hello')) # 找到hello則返迴首個字元的索引
print(s.find('worldd')) # 找不到返回-1

s = ('python,helloworld,java,php')
print(s.find('h'))  # 返回的是首個h的下標
print(s.find('h',4))  # 從下標為4的地方開始找
print(s.rfind('h'))  # 從後往前找

2.2.1.2 index()

檢測字元串中是否包含子字元串str,如果指定beg和end範圍,則檢查是否包含在指定範圍內,和find差不多,只不過如果子str不在str中會報錯

s = ('python,helloworld,java,php')
print(s.index('world'))  # 12 索引值
print(s.index('worldd'))  # 報錯

2.2.1.3 count()

返回找到的子串個數

s = ('python,helloworld,java,php')
print(s.count('h'))  # 3 h的個數

2.2.1.4 strip()

去除字元串兩邊的空格,換行符,製表符,得到的是一個新的字元串

code = input('請輸入4位的驗證碼:')
data = code.strip()
if data == 'ABCD':
    print('驗證碼正確')
else:
    print('驗證碼錯誤')

2.2.1.5 startswith(), endswith()

  • 判斷字元串是否已xx開頭,得到一個布爾值
dizhi = input('請輸入住址:')
if dizhi.startswith('北京市'):
    print('北京人口')
else:
    print('非北京人口')
  • 判斷字元串是否已xx結尾,得到一個布爾值
dizhi = input('請輸入住址:')
if dizhi.endswith('村'):
    print('農業戶口')
else:
    print('非農業戶口')
s = '北京市朝陽區'
print(s.startswith('北京市'))

2.2.1.6 isdigit()

  • 判斷字元串是否是數字組成,返回的結果是布爾值
v1 = input('請輸入第一個值:')
v2 = input('請輸入第二個值:')
if v1.isdigit() and v2.isdigit():
    data = int(v1)+int(v2)
    print(data)
else:
    print('請輸入正確的數字')

2.2.1.7lower() 和 upper()

字元串變大寫/小寫,得到一個新的字元串

lower()==》轉小寫

upper()==》轉大寫

s = 'C'
print(s)
s1 = s.lower()
print(s1)
s2 = s1.upper()
print(s2)

C
c
C

2.2.1.8 split()

切分字元串,將字元串類型轉成列表,預設以空格切分,也可以指定字元切分

s = 'my name is zuoshou'
print(s.split())
s1 = 'python,helloworld,java,php'
print(s1.split(','))

['my', 'name', 'is', 'zuoshou']
['python', 'helloworld', 'java', 'php']

2.2.1.9 replace()

字元串內容的替換,得到一個新的字元串

s = input('請輸入評論信息:')
s1 = s.replace('草','*')
print(s1)

2.2.1.10 join()

用於將序列中的元素以指定的字元串連接生成一個新的字元串

常用於將列表轉為字元串

a = ['Java', '和', 'python', '是', '好朋友']
print(''.join(a))  # 常用於轉化列表為字元串時使用
print('-'.join(a))

Java和python是好朋友
Java-和-python-是-好朋友

2.2.2 字元串的公共功能

2.2.2.1正向取(從左往右),反向取(從右往左,負號)

s = 'hello python'
# 正向取值
print(s[0])  #  取值為 h
print(s[5])  #  空格,空格也算是字元串里的一個字元
# 反向取值
print(s[-4]) # 取值為 t

len的用法
len 是從1開始數  計量字元串長度
print(s[len(s)-1])  # 最後一個值
print(len(s))   # len  計算字元串的長度
print(s[-len(s)])  # len 前面加負號 是從右到左取值

2.2.2.2 切片(顧頭不顧尾,步長)

s = 'hello python'
print(s[::2])

hlopto

步長:0:9:2 第三個參數2代表步長,會從下標0開始,每次累加一個2就可以
print(s[0:9:2])

hlopt

print(s[::-1]) # 從右到左依次取值 反向取值 步長為負數就是從右到左 首尾不給值就是取所有
nohtyp olleh

2.3 列表 list

可以存放多個不同類型的元素,記錄多個同種屬性的值

列表:存貯同一個類別的數據,方便操作

字元串,不可變類型:創建好之後內部無法修改[內置功能都是新創建一份數據]
name = 'java'
data = name.upper()
print(name)
print(data)

java
JAVA  
列表,可變類型:創建好之後內部元素可以修改[獨有功能基本上都是直接操作列表內部的,不會創建一份新的數據]

list1 = ['車子', '房子']
list1.append('妹子')  # append  ’添加‘的方法
print(list1)

['車子', '房子', '妹子']

列表的創建

列表名 = []

2.3.1 增

1.append:添加一個數據,添加到列表的最後一位
   語法: 列表名.append('python')
li..append('python')
print(li)
[2, 3, 4, 5, 6, 7, 8, 9, 10, 'python']

2.insert: 添加一個數據到指定位置
    語法:列表名.insert(下標位置,內容)
   li.insert(0,'look')
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'python']

3.extend:添加一個序列類型到最後一位,並且吧序列類型拆分
    語法:列表名.extend(序列類型)
  li.extend('吸血鬼')
print(li)
li.extend(['吸血鬼'])
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼', '吸血鬼']

2.3.2 刪

pop:刪除一個值,預設從最後一個開始刪,也可以指定位置
    語法:列表名.pop()
    列表名.pop(下標)
    li.pop(-1)
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'python', '吸', '血', '鬼']

remove:刪除一個指定的值,如果有多個,從第一個開始刪
    語法:列表名.remove(刪除對象)
    li.remove(3) # 刪除對象
print(li)

['look', 2, 4, 5, 6, 7, 8, 9, 10, 'python', '吸', '血', '鬼']

clear :清空列表裡面的所有數據
    語法:列表名.clear()
    li.clear()
print(li)

[]
del : 全局刪除,可以刪除一個變數
    語法:del 列表名[下標]
del li[3]  # 下標
print(li)

['look', 2, 4, 6, 7, 8, 9, 10, 'python', '吸', '血', '鬼']

2.3.3 改

單個修改:直接通過下標進行修改
語法:列表名[下標] = 內容
li[1] = '阿爾法'
print(li)
['look', '阿爾法', 4, 6, 7, 8, 9, 10, 'python', '吸', '血', '鬼']

多個修改:通過切片的方式進行修改
語法: 列表名[起點:終點] = 數值1, 數值2
li[1:3] = 70,20
print(li)
['look', 70, 20, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']

2.3.4查

index:根據內容獲取指定數據的下標
    語法:列表名。index(要找的內容)
    print(li)
print(li.index(8)) 
5
列表名。index(要找的內容,起點值)
print(li.index(20,5)) #報錯,顯示20不在列表中

count:統計數據出現的次數
    語法:列表名.count(要找的內容)
    print(li.count(10))
          1

2.3.5 其他

排序(全int的列表才可以排序)
sort:讓列表的內容按照降序/升序的方式來排序
    列表名.sort()——》升序
li1 = [1,85,6,8,61,3,45321,1965]
li1.sort()
print(li1)

[1, 3, 6, 8, 61, 85, 1965, 45321]

    列表名.sort(reverse=True)——》降序
li1 = [1,85,6,8,61,3,45321,1965]
li1.sort(reverse=True)
print(li1)

[45321, 1965, 85, 61, 8, 6, 3, 1]

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ![](https://img2023.cnblogs.com/blog/3076680/202307/3076680-20230711162608661-1958587529.png) # 1. 一個季度的開始日期和結束日期 ## 1.1. 以yyyyq格式(前面4位是年份,最後1位是季度序號)給 ...
  • 原文地址:https://blog.csdn.net/zhanglei5415/article/details/131434931 ## 一、問題 當對含有中文的url字元串,進行NSURL對象包裝時,是不能被識別的。 不會得到期望的NSURL對象,而是返回一個nil 值 ; ```objectiv ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 本文的起因是有在代碼倉庫發包後,同事問我“為什麼package.json 里的版本還是原來的,有沒有更新?”,這個時候我意識到,我們完全沒有必要在每次發佈的時候還特意去關註這個倉庫的版本號,只要在發佈打tag的時候同步一下即可,於是有了本 ...
  • ![你真的瞭解bind嗎](https://guizimo.oss-cn-shanghai.aliyuncs.com/img/%E4%BD%A0%E7%9C%9F%E7%9A%84%E4%BA%86%E8%A7%A3bind%E5%90%97.png) # 引言 ## 內容速遞 > 看了本文您能瞭解 ...
  • 對於各種類型的埋點來說,曝光埋點往往最為複雜、需要用到的技術也最全面、如果實現方式不合理可能造成的影響也最大,因此本文將重點介紹曝光埋點尤其是長列表(或滾動視圖)內元素曝光埋點的實現思路及避坑技巧 ...
  • # window.localStorage.setItem 和 localStorage.setItem 有什麼區別 - 在JavaScript中,localStorage.setItem和window.localStorage.setItem實際上是相同的, - 它們是對瀏覽器的本地存儲(Loca ...
  • 基於tauri+vite4+pinia2跨端後臺管理系統應用實例TauriAdmin。 tauri-admin 基於最新跨端技術 Tauri Rust webview2 整合 Vite4 構建桌面端通用後臺管理解決方案。搭載輕量級ve-plus組件庫、支持多視窗切換管理、vue-i18n多語言包、動 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 最近剛剛學習了Echarts的使用,於是想做一個小案例來鞏固一下。項目效果如下圖所示: 話不多說,開始進入實戰。 創建項目 這裡我們使用vue-cli來創建腳手架: vue create app 這裡的app是你要創建的項目的名稱, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...