一,for循環
for 變量 in 可迭代對象 :
循環體語句
注意:for循環其實是將可迭代對象依此賦給變量。包含range迭代器
用for循環遍歷可迭代對象,代碼如下:
for i in [1,2,3]:
print(i)
1
2
3
>>> for i in (1,2,3):
print(i)
1
2
3
>>> for i in {1,2,3}:
print(i)
1
2
3
>>> d={1:2,2:3}
>>> for i in d:
print(i)
1
2
>>> for i in d.items():
print(i)
(1, 2)
(2, 3)
>>> for i in '123':
print(i)
1
2
3
練習:
1,計算0到100的總和,奇數和,以及偶數和
sum=0
sum_odd=0
sum_even=0
for i in range(101):
sum+=i
if i%2==1:
sum_odd+=i
else:
sum_even+=i
print(sum)
print(sum_even)
print(sum_odd)
print('0到100的總和爲{0},奇數和爲{1},偶數和爲{2}'.format(sum,sum_odd,sum_even))
2,打印9*9乘法表
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()
3,用字典打印一個表格
r1=dict(name='g1',age=18,salary=30000)
r2=dict(name='g2',age=19,salary=20000)
r3=dict(name='g3',age=20,salary=10000)
q=[r1,r2,r3]
for i in q:
print(i)
#複習
for i in range(3):
print(q[i].get('name'),'\t',q[i].get('age'),'\t',q[i].get('salary'),'\t')
二,其他語句
1,break語句:跳出循環,只能跳出一層循環
2,continue語句:結束本次循環,立即開始下一次循環
3,else語句:跟在循環體後面,則循環體正常結束的時候執行該語句,若遇break則不執行。
練習,從鍵盤上輸入員工工資,按q或Q結束,最後統計員工數,平均薪資並打印各自的薪資
num=0
salarys=[]
salarysum=0
while True:
salary=input('請輸入一個員工的薪資(按q或Q結束):')
if salary.upper()=='Q':
print('輸入結束')
break
if salary.isdigit()==0:
print('請輸入正數或Q')
continue
else:
num+=1
salarys.append(salary)
salarysum+=float(salary)
print('總人數爲{0},薪資爲{1},平均薪資爲{2}'.format(num,salarys,salarysum/num))
三,循環代碼優化問題
1,儘量減少循環內部不必要的運算,儘量放在循環外
2,儘量減少內層循環的計算,放在外層循環
3,儘量使用局部變量,局部變量查詢快
4,連接多個字符時使用join(),而不用+號
5,儘量在列表尾部進行操作
四,zip()並行迭代
注意:tuple()創建元組,裏面爲可迭代對象
names=('g1','g2','g3','g4')
ages=(18,19,20,21)
for name,age in zip(names,ages):
print(tuple([name,age]))
五,推導式創建序列
1,推導式創建列表
注意:條件前加if,列表等集合不能沒定義就使用
a=[x*2 for x in range(50) if x%5==0]
print(a)
# 普通方法
b=[]
for i in range(50):
if i%5==0 :
b.append(i*2)
print(b)
a=[(x,y) for x in range(5) for y in range(5) if x%2==0 and y%2==0]
print(a)
2,字典用推導式實現
text='123452133124132'
dict1={c:text.count(c) for c in text}
print(dict1)
#普通代碼實現
a={}
for i in text:
c=text.count(i)
a[i]=c
print(a)
統計數字出現次數
3,集合推導式
字典推導式取消值對象即可
4,生成器推導式(元組推導式)
a=(x for x in range(5))
print(tuple(a))
#生成生成器
for x in a :
print(x)
第二次打印爲空,因爲指針已經偏移
六,海歸繪圖
用t=turtle.Pen()可用t代替turtle前綴
但t.done()不可行,要用turtle.done()
t.speed()可調整速度。0最快,1最慢
例子:畫一個18*18的棋盤
import turtle
t=turtle.Pen()
t.speed(0)
for i in range(19):
t.penup()
t.goto(-180,180-20*i)
t.pendown()
t.goto(180,180-20*i)
for i in range(19):
t.penup()
t.goto(-180+20*i,180)
t.pendown()
t.goto(-180+20*i,-180)
turtle.done()
2,生成十個同心圓。
import turtle
t=turtle.Pen()
t.speed(0)
t.width(5)
color=['red','yellow','blue','black','green']
for i in range(10):
t.penup()
t.goto(0,-20*i)
t.pendown()
t.color(color[i%5])
t.circle(10+20*i)
turtle.done()
七,函數(可重用的代碼段)
1,python函數分類:(1)內置函數:如str(),len()
(2)標準庫函數:直接用import()引入
(3)第三方庫函數:下載後用import()引入
(4)用戶自定義函數
2,函數定義與調用
def sum(a,b):
c=a+b
return c%7
sum=sum(10,20)
print(sum)
def sum(a,b):
c=a+b
return [c,a,b]
sum=sum(10,20)
print(sum)
要點:(1)形參與實參
(2)返回值:return語句,結束函數並返回值兩個功能。
返回多個返回值用集合儲存起來。
(3)文檔字符串:用來說明函數功能。可用help(函數名.doc)查看
注意文檔字符串雖然爲註釋但一定要縮進,不然程序會 報錯。
def sum(a,b):
'''求和'''
c=a+b
return [c,a,b]
sum1=sum(10,20)
print(sum1)
x=help(sum.__doc__)
print(x)