python基礎(轉)

一、字典與集合

(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) 基本介紹

  1. 類變量
  2. 類方法

類生成對象,對象調用類方法

(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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章