前言1.傳入多個數字,求和。
2. 判斷兩個數字較小的乙個。
3. 函式:輸入1個可迭代物件,將裡面的元素以_相連拼接成字串。
4. 寫函式,傳入n個值,返回字典。
5. 寫函式,輸入n,返回n的階乘。
6. 寫函式返回乙個撲克牌列表,每一項都是乙個元組,需要用到笛卡爾積。
7. 列印9*9乘法表。(這個曾經自己在小學的時候用vb寫出來過,但是當時沒意識到自己有這個天賦。。。。)
**
#1.傳入多個數字,求和#法1def sum_func(*args):
sum = 0
for i in args:
sum += i
return sum
print(1,sum_func(1,2,3,4,5,6,7,8,9,10))
#法2def sum1_func(*args):
return sum(args)#法二2,3,4,5,6,7,8,9,10))
#2.判斷兩個數字較小的乙個
def judge(a,b):
return a if a=1即可
if n>0:
sum *= n
n -=1
elif n == 0:
break
else:
print('minus is not allowed')
return 'error'
return sum
print(5,factorial(5))
#6. 寫函式返回乙個撲克牌列表,每一項都是乙個元組,需要用到笛卡爾積.
def pocker():
pocker_1 =
huase = ['黑桃','紅心','方塊','草花']
dianshu = [2,3,4,5,6,7,8,9,10,'j','q','k','a','2']
for i in huase:
for e in dianshu:
return pocker_1
print(6,pocker())
def extendlist(val,list=):#若預設引數可變的資料型別,函式載入的時候就被定義了,那麼每次執行都不會給它分配新的儲存空間.只有變數每次執行完函式會消亡.
return list
list1=extendlist(10)
list2 = extendlist(10,)
list3 = extendlist('c')#list1和3指向同乙個列表(list預設值被修改),而list不使用預設值新建立了乙個列表.
print('list1=%s'%list1)
print('list2=%s'%list2)
print('list3=%s'%list3)
#7.列印9*9乘法表
def multiplication():
for i in range(10):
for t in range(1,i+1):
print('%s*%s='%(i,t),i*t,end=' ')
print('')
multiplication()
閉包:在內層函式中訪問外層函式的變數
閉包的作用:
1.可以保護你的變數不受侵害
2.讓乙個變數常駐記憶體
例子
a = 10#此時變數不安全,容易被函式的global改變.def outer():
a = 10#此時變數安全,無法在另乙個函式中改。對外界是不開放的。
def inner():
nonlocal a
a = 20
print(a)
return inner#保證a常駐記憶體
outer()()#inner什麼時候呼叫不確定,必須保證a常駐記憶體,為了inner執行的時候a有值.
閉包應用例子-超簡易爬蟲
from urllib.request import urlopendef outter():
s = urlopen('').read()#常駐記憶體,第一次拿很慢,後面拿就快了。
def getcontent():#閉包
return s#讀出一堆資料
return getcontent#保證s常駐記憶體
#pa = outter()#如果**更新得重新跑一次這個
pa()
檢視是否閉包
#檢視爬蟲是否閉包def outter():
a = 10
def inner():
print('我是inner')
#print(a)
print(inner.__closure__)#檢視是否閉包的函式
outter()#輸出none,說明inner不是閉包
迭代器一些概念
展示
diedaiqi = 'dadadada'.__iter__()print(1,dir(diedaiqi))#有__iter__和__next__
迭代器的基本特質
1.只能向前不能向後
2.幾乎不占用記憶體,節省記憶體(和生成器處知識鏈結)
3.可用for迴圈提取資料
4.惰性機制(面試題,難度係數較高)
迭代器模擬for迴圈
#迭代器模擬for迴圈lst = ['a','b','c','d']
for el in lst:#底層用的是迭代器
print(el)
相當於it = lst.__iter__()
while 1:
try:
el = it.__next__()
print(el)
except stopiteration:
break
迭代器的判斷#法1
#可以通過dir來判斷資料是否可迭代的,以及資料是否是迭代器(__next__ in dir(xx))野路子#法2#判斷迭代器和迭代物件,官方方案.
from collections import iterator
from collections import iterable
print(3,isinstance(it,iterable))#判斷某個物件是不是某個例項。(華為t30為手機的乙個例項).
list(引數)會把引數進行迴圈迭代
s = list(diedaiqi)#相當於將迭代器轉化成列表,在list函式中一定存在for迴圈->一定存在__next__
print(s)#['d','a','d','a','d','a'.....]
環境小碩的轉行之路 24 大作業 編寫電腦程式
法一 老師的標準答案 import re def atom cal exp 原子性計算 if in exp a,b exp.split return str float a float b 計算乘法 elif in exp a,b exp.split 計算除法 return str float a ...
環境小碩的轉行之路 21 序列化
序列 列表 元組 字串 bytes.序列化裡面的序列特指的就是字串和bytes.把其它的資料型別轉換成字串和bytes的過程就是序列化的過程.直接序列化的乙個例子 dic print str dic dic 序列化 主要內容 import json 為什麼要把其它資料型別轉換成字串?轉字串的過程不就...
小碩之路 01
趁導師出差的這段時間,終於有時間來做一些自己的事。從之前的專案中發現了許多自己欠缺的模組。作為乙個專科直接讀研的人,並且還是學的機械相關專業的。對於現在所從事的數位化方向,有很多需要學習的地方。做乙個記錄吧 記錄一下三年的生活,希望自己能堅持 之前的部落格也做的不是很到位。如果發現文章中的問題 希望...