迴圈_推導式_繪製棋盤_函式
for迴圈
#元組
for x in (10,20,30):
print(x*30)
#字串
for y in 'abcdef':
print(y)
#字典
d = {'name':'wy','age':18,'job':'stu'}
for z in d:
print(z)
for z in d.keys():
print(z)
for z in d.values():
print(z)
for z in d.items():
print(z)
range物件
range(start,stop,step)
一個小練習:計算累加和
#利用for迴圈,計算1-100之間數字的累加和;計算1-100之間偶數的累加和;計算1-100之間奇數的累加和
#方法一
sum_all=0
for i in range(1,101):
sum_all+=i
print("累加和",sum_all)
sum_all=0
for i in range(1,101,2):
sum_all+=i
print("奇數的累加和",sum_all)
sum_all=0
for i in range(2,101,2):
sum_all+=i
print("偶數的累加和",sum_all)
#方法二
sum_all = 0
sum_ou = 0
sum_ji = 0
for i in range(1,101):
sum_all+=i
if i%2 == 0:
sum_ou+=i
elif i%2 != 0:
sum_ji += i
print("1-100的累加和為{0},偶數的累加和為{1},奇數的累加和為{2}".format(sum_all,sum_ou,sum_ji))
巢狀迴圈
for i in range(5):
for j in range(5):
print(i,end='\t')
print() #起到換行的作用
#列印九九乘法表
for m in range(1,10):
for n in range(1,m+1):
print("{0}*{1}={2}".format(m,n,(m*n)),end='\t')
print()
#用列表和字典儲存資訊
tb = []
r1 = dict(name='wy',salary='30000',city='bj')
r2 = dict(name='wa',salary='20000',city='ss')
r3 = dict(name='wb',salary='10000',city='rr')
tb = [r1,r2,r3]
for x in tb:
if int(x.get('salary'))>15000:
print(x)
break 和continue
break
跳出最近的一次迴圈
continue
結束本次迴圈,繼續下一次
while True:
a = input("請輸入一個字元(輸入Q或q的時候退出):")
if a == 'q' or a == 'Q':
print("迴圈結束,退出")
break
else:
print(a)
#輸入員工薪資,若薪資小於0則重新輸入,最後列印出錄入員工的數量和薪資明細
empNum = 0
salarySum = 0
salarys = []
while True:
s = input("請輸入員工的薪資(按Q或qjie)")
if s.upper()=='Q':
print("錄入完成,退出")
break
if float(s)<0:
continue
empNum += 1
salarys.append(float(s))
salarySum += float(s)
print("員工數{0}".format(empNum))
print("錄入薪資:",salarys)
print("平均薪資{0}".format(salarySum/empNum))
else語句
#方法一
while 條件表示式:
迴圈體
else:
語句塊
#方法二
for i in 可迭代物件:
迴圈體
else:
語句塊
一個小例子
salarySum = 0
salarys = []
for i in range(4):
s = input("請輸入4名員工的薪資(按Q或q中途結束)")
if s.upper()=='Q':
print("錄入完成,退出")
break
if float(s)<0:
continue
salarys.append(float(s))
salarySum += float(s)
else:
print("您已經全部錄入4名員工的薪資")
print("錄入薪資:",salarys)
print("平均薪資{0}".format(salarySum/4))
迴圈程式碼的優化
- 儘量減少迴圈內部不必要的計算
- 巢狀迴圈中,儘量減少內層迴圈的計算,儘可能向外提
- 區域性變數查詢較快,儘量使用區域性變數
- 連線多個字串,使用join()而不使用+
- 列表進行元素插入和刪除,儘量在尾部操作
zip並行迭代
names=("a","b","c","d")
ages=(18,79,56,53)
jobs = ('dd','ss','se')
for a,b,c in zip(names,ages,jobs):
print("{0}--{1}--{2}".format(a,b,c))
for i in range(3):
print("{0}--{1}--{2}".format(names[i],ages[i],jobs[i]))
推導式
- 列表推導式
列表推導式生成列表物件,語法如下:
[表示式 for item in 可迭代物件 if 條件判斷]
>>> [x for x in range(1,5)]
[1, 2, 3, 4]
>>> [x*2 for x in range(1,5)]
[2, 4, 6, 8]
>>> y = [x*2 for x in range(1,50) if x%5==0]
>>> y
[10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> cells = [(row,col)for row in range(1,10)for col in range(1,10)]
>>> cells
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (5, 7), (5, 8), (5, 9), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6), (6, 7), (6, 8), (6, 9), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 6), (7, 7), (7, 8), (7, 9), (8, 1), (8, 2), (8, 3), (8, 4), (8, 5), (8, 6), (8, 7), (8, 8), (8, 9), (9, 1), (9, 2), (9, 3), (9, 4), (9, 5), (9, 6), (9, 7), (9, 8), (9, 9)]
- 字典推導式
{key_expression: value_expression for 表示式 in 可迭代物件}
#字典推導式
my_text = 'i love you,i love sxt,i love wy'
#統計文字中各個字元出現的次數
char_count={c:my_text.count(c) for c in my_text}
print(char_count)
#使用普通迴圈實現上面字典推導式
ls1 = []
for i in range(len(my_text)):
ls1.append(my_text[i])
ls2 = list(set(ls1))
for j in range(len(ls2)):
print(str(ls2[j])+":"+str(my_text.count(ls2[j])),end='\t')
- 集合推導式
b = [x for x in range(1,100) if x%9==0]
print(b)
- 生成器推導式
#生成器推導式(生成元組)一個生成器只能執行一次
gnt = (x for x in range(4))
for x in gnt: #gnt是生成器物件,生成器是可迭代的物件,只能使用一次
print(x,end=',')
繪製棋盤
#例子:繪製圓
'''
import turtle
t = turtle
my_colors = ("red","green","yellow","black")
t.width(4)
t.speed(0)
for i in range(10): #0,1,2,3,4
t.penup()
t.goto(0,-i*10) #0,-100,-200,-300,-400
t.pendown()
t.color(my_colors[i%len(my_colors)])
t.circle(15+i*10) #100,200,300,400,500
turtle.done() #程式執行完,視窗仍然在
'''
#繪製棋盤 18*18
import turtle
t = turtle
t.width(1)
t.speed(0)
for i in range(18): #0,1,2,3,4...
t.goto(i, 0)
t.goto(i,100)
t.penup()
t.goto((i+1)*10,0)
t.pendown()
t.goto((i+1)*10, 100)
t.penup()
t.goto(0,0)
t.pendown()
for j in range(19):
t.goto(0,(100/18)*j)
t.pendown()
t.goto(180,(100/18)*j)
t.penup()
turtle.done()
#(0,0)(0,100)
#(10,0)(10,100)
#(20,0)(20,100)
#(0,0)(180,0)
#(0,(100/18)*1)(180,(100/18)*1)
#(0,(100/18)*2)(180,(100/18)*2)
函式用法和底層分析
- 可重用的程式程式碼塊
- 代表一個功能
(1)內建函式
(2)標準庫函式
(3)第三方庫函式
(4)自定義函式
def 函式名(引數列表):
“文件字串”
函式體/若干語句
def test01():
print("*"*10)
print("@"*10)
test01()
test01()
test01()
for i in range(10):
test01()
引數列表
- 圓括號內是形式引數列表,有多個引數則用逗號隔開
- 形式引數不需要宣告型別,也不需要指定函式返回值型別
- 無引數,也必須保留空的圓括號
- 實參列表必須與形參列表一一對應
return
- 如果函式體中包含return語句,則結束函式執行並返回值
- 如果函式體中不包含return語句,則返回None值
形參和實參
形參:定義函式時使用,英文逗號隔開
實參:具體用函式時
實參和形參必須一一對應
def printMax(a,b):
if a>b:
print(a,"較大值")
else:
print(b,"較大值")
printMax(10,20)
printMax(45,96)
函式的註釋
def printMax(a,b):
'''用於比較函式的大小,列印較大值 '''
if a>b:
print(a,"較大值")
else:
print(b,"較大值")
printMax(10,20)
printMax(45,96)
help(printMax.__doc__)
返回值
返回值,結束函式
def add(a,b):
print("計算兩個數的和:{0},{1},{2}".format(a,b,(a+b)))
return a+b
def test02():
print("a")
print("b")
return
print("hello")
def test03(x,y,z):
return [x*10,y*10,z*10]
c = add(30,40)
test02()
print(test03(1,2,3))
相關文章
- 函式的遞迴及科赫曲線繪製函式遞迴
- 分段函式圖形繪製函式
- turtle繪製國際象棋棋盤
- PyThon range()函式中for迴圈用法Python函式
- Python推導式(列表推導式、元組推導式、字典推導式和集合推導式)Python
- Matplotlib 系列之【繪製函式影象】函式
- Matplotlib 系列之【繪製函式影像】函式
- python嶺跡圖繪製函式Python函式
- 生成器 推導式 內建函式函式
- 動畫函式的繪製及自定義動畫函式動畫函式
- Matplotlib呼叫imshow()函式繪製熱圖函式
- Python繪製正餘弦函式影像Python函式
- day10-內建函式和推導式函式
- 三角函式公式推導函式公式
- for迴圈批量註冊事件處理函式事件函式
- 雜篇:Android繪製函式圖象及正弦函式的介紹Android函式
- 第 8 節:函式-匿名函式、遞迴函式函式遞迴
- 函式表示式–遞迴函式遞迴
- Python簡單函式迴圈綜合例項Python函式
- 迴圈單連結串列建構函式、解構函式C++實現函式C++
- JS函式表示式——函式遞迴、閉包JS函式遞迴
- Python 函式進階-遞迴函式Python函式遞迴
- 遞迴函式遞迴函式
- 函式遞迴與生成式函式遞迴
- 三大分佈密度函式推導函式
- python 推導式Python
- 列表推導式
- Python推導式Python
- 函式的遞迴函式遞迴
- 函式之遞迴函式遞迴
- 使用Python的enumerate()函式編寫更Pythonic的迴圈Python函式
- 自定義雙向迴圈連結串列基本函式介面函式
- Go語言入門教程系列——函式、迴圈與分支Go函式
- Kotlin 迴圈與函式詳解:高效程式設計指南Kotlin函式程式設計
- C++模板函式實現型別推導C++函式型別
- 演算法金 | 推導式、生成器、向量化、map、filter、reduce、itertools,再見 for 迴圈演算法Filter
- python 生成器 和生成器函式 以及各種推導式Python函式
- python——列表推導式Python