一、字典與集合
(1)字典
dict_test = {'name':'syd','age':24}
print('姓名'+ dict_test['name'])
print('年齡'+ str(dict_test['age']))
姓名syd
年齡24
for v,k in dict_test.items():
print(v + ':' + str(k))
name:syd
age:24
# 只取鍵
for k in dict_test.keys():
print(k)
name
age
# 只取值
for v in dict_test.values():
print(v)
syd
24
(2)集合
set_test = {1,7,3,4,5,6}
# 添加
set_test.add("syd")
print(set_test)
{1, 3, 4, 5, 6, 7, 'syd'}
# 刪除
set_test.remove("syd")
print(set_test)
{1, 3, 4, 5, 6, 7}
# 求交併差集
set_a = {1,2,3,4}
set_b = {3,4,5,6}
print("交" + str(set_a&set_b))
print("並" + str(set_a|set_b))
print("差" + str(set_a-set_b))
# ***** 集合是無序的,不支持排序,也不支持索引
交{3, 4}
並{1, 2, 3, 4, 5, 6}
差{1, 2}
(3)小技能 模糊查找
dict_test = {'syd':'1234567',
'lqy':'234235256',
'wyb':'21312356'}
while(True):
Str_name = input("請輸入查找人姓名(可模糊查找)")
for k,v in dict_test.items():
if k.startswith(Str_name):
print(k + ':' + v)
i = input("是否繼續查找(y/n)")
if i == 'n':
break
# startswith函數用於檢擦字符串是否以指定子字符串開頭,有返回Ture
# startswith(str,beg,end)
請輸入查找人姓名(可模糊查找)s
syd:1234567
是否繼續查找(y/n)y
請輸入查找人姓名(可模糊查找)b
是否繼續查找(y/n)l
請輸入查找人姓名(可模糊查找)s
syd:1234567
是否繼續查找(y/n)l
請輸入查找人姓名(可模糊查找)l
lqy:234235256
是否繼續查找(y/n)y
請輸入查找人姓名(可模糊查找)b
是否繼續查找(y/n)y
請輸入查找人姓名(可模糊查找)w
wyb:21312356
是否繼續查找(y/n)
請輸入查找人姓名(可模糊查找)n
是否繼續查找(y/n)n
二、類和對象
(1) 基本介紹
類
- 類變量
- 類方法
類生成對象,對象調用類方法
(2)創建類,對象,調用類方法
- 創建類:class關鍵字,根據縮進確定類範圍
- 創建對象: 對象 = 類名(變量) 如:t0 = Myclass()
- 調用類方法:對象名.類方法名(參數) 如:t0.myfunction()
# 創建類
class Myclass():
# 創建類變量
my_variable = 'sunyongdi'
# 創建類函數
def my_function(self):
print("hello world")
# 創建類對象
my_object = Myclass()
# 調用類變量
print(my_object.my_variable)
# 調用類函數
my_object.my_function()
sunyongdi
hello world
(3) 最重要的init__()函數
# 創建類
class Myclass():
# 創建類變量
my_variable = 'sunyongdi'
def __init__(self,input_variable):
self.my_variable = input_variable
print("hello python")
# 創建類函數
def my_function(self):
print("hello world")
# 創建類對象
my_object = Myclass('哈哈')
# 調用類變量
print(my_object.my_variable)
# 調用類函數
# my_object.my_function()
hello python
哈哈
三、生成器
一邊循環一邊計算的機制
# 一般生成
def get_fibos(n):
"""
根據n生成Fibonacci,生成量由n決定
比如:n=10,就會生成10個Fibonacci數,一次性
"""
a=b=1
i = 0
while i<n:
i=i+1
a,b = a+b,a
print(a)
get_fibos(10)
2
3
5
8
13
21
34
55
89
144
def get_fibos(n):
"""
根據n生成Fibonacci,生成量由n決定
比如:n=10,就會生成10個Fibonacci數,一次性
"""
a=b=1
i = 0
while i<n:
i=i+1
a,b = a+b,a
yield a
t0 = get_fibos(10)
print(t0)
for i in t0:
print(i)
# ***yield
<generator object get_fibos at 0x0000022794669930>
# 生成整數範圍內的奇數
def get_odd_num(n):
i = 1
m = 0
while m<n:
yield i
i += 2
m += 1
for i in get_odd_num(10):
print(i)
1
3
5
7
9
11
13
15
17
19
# 自己生成隨機數
from time import time
def get_rand(n):
m = 0
# 隨機選擇兩個比較大的素數
p1 = 1200556037
p2 = 2444555770
# 限定最大隨機數範圍
max_rand = 2**32
# 獲取隨機數種子
r0 = int(time()*1000)
while m<n:
n = r0
n *= p2
n %= p1 # 第一次增強隨機性
n += r0
n *= p2
n %= p1 # 第二次增強
n %= max_rand
r0 = n
m += 1
yield n
for i in get_rand(10):
print(i)
## __next__()
```python
# fibos數
def get_fibos(n):
a = b = 1
i = 0
while i<n:
i = i+1
a,b = a + b ,a
yield a
t0 = get_fibos(5)
print(t0.__next__())
print(t0.__next__())
print(t0.__next__())
print(t0.__next__())
print(t0.__next__())
2
3
5
8
13