python基礎,控制語句與函數

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