python全棧開發【第四篇】Python流程控制
十二 流程控制之if…else
既然我們編程的目的是為了控制計算機能夠像人腦一樣工作,那麽人腦能做什麽,就需要程序中有相應的機制去模擬。人腦無非是數學運算和邏輯運算,對於數學運算在上一節我們已經說過了。對於邏輯運算,即人根據外部條件的變化而做出不同的反映,比如
1 如果:女人的年齡>30歲,那麽:叫阿姨
age_of_girl=31 if age_of_girl > 30: print(‘阿姨好‘)
2 如果:女人的年齡>30歲,那麽:叫阿姨,否則:叫小姐
age_of_girl=18 if age_of_girl > 30: print(‘阿姨好‘) else: print(‘小姐好‘)
3 如果:女人的年齡>=18並且<22歲並且身高>170並且體重<100並且是漂亮的,那麽:表白,否則:叫阿姨
age_of_girl=18 height=171 weight=99 is_pretty=True if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True: print(‘表白…‘)else: print(‘阿姨好‘) 在表白的基礎上繼續: 如果表白成功,那麽:在一起 否則:打印。。。 age_of_girl=18 height=171 weight=99 is_pretty=True success=False if age_of_girl >= 18 and age_of_girl < 22 and height > 170 and weight < 100 and is_pretty == True: if success: print(‘表白成功,在一起‘) else: print(‘什麽愛情不愛情的,愛nmlgb的愛情,愛nmlg啊…‘) else: print(‘阿姨好‘)
4 如果:成績>=90,那麽:優秀
如果成績>=80且<90,那麽:良好
如果成績>=70且<80,那麽:普通
其他情況:很差
score=input(‘>>: ‘) score=int(score) if score >= 90: print(‘優秀‘) elif score >= 80: print(‘良好‘) elif score >= 70: print(‘普通‘) else: print(‘很差‘) if 條件1: 縮進的代碼塊 elif 條件2: 縮進的代碼塊 elif 條件3: 縮進的代碼塊 …… else: 縮進的代碼塊
!/usr/bin/env python name=input(‘請輸入用戶名字:‘) password=input(‘請輸入密碼:‘) if name == ‘egon‘ and password == ‘123‘: print(‘egon login success‘) else: print(‘用戶名或密碼錯誤‘)
練習一:用戶登陸驗證
#!/usr/bin/env python #根據用戶輸入內容打印其權限 ‘‘‘ egon --> 超級管理員 tom --> 普通管理員 jack,rain --> 業務主管 其他 --> 普通用戶 ‘‘‘ name=input(‘請輸入用戶名字:‘) if name == ‘egon‘: print(‘超級管理員‘) elif name == ‘tom‘: print(‘普通管理員‘) elif name == ‘jack‘ or name == ‘rain‘: print(‘業務主管‘) else: print(‘普通用戶‘) 練習二:根據用戶輸入內容輸出其權限
# 如果:今天是Monday,那麽:上班 # 如果:今天是Tuesday,那麽:上班 # 如果:今天是Wednesday,那麽:上班 # 如果:今天是Thursday,那麽:上班 # 如果:今天是Friday,那麽:上班 # 如果:今天是Saturday,那麽:出去浪 # 如果:今天是Sunday,那麽:出去浪 #方式一: today=input(‘>>: ‘) if today == ‘Monday‘: print(‘上班‘) elif today == ‘Tuesday‘: print(‘上班‘) elif today == ‘Wednesday‘: print(‘上班‘) elif today == ‘Thursday‘: print(‘上班‘) elif today == ‘Friday‘: print(‘上班‘) elif today == ‘Saturday‘: print(‘出去浪‘) elif today == ‘Sunday‘: print(‘出去浪‘) else: print(‘‘‘必須輸入其中一種: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ‘‘‘) #方式二: today=input(‘>>: ‘) if today == ‘Saturday‘ or today == ‘Sunday‘: print(‘出去浪‘) elif today == ‘Monday‘ or today == ‘Tuesday‘ or today == ‘Wednesday‘ or today == ‘Thursday‘ or today == ‘Friday‘: print(‘上班‘) else: print(‘‘‘必須輸入其中一種: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ‘‘‘) #方式三: today=input(‘>>: ‘) if today in [‘Saturday‘,‘Sunday‘]: print(‘出去浪‘) elif today in [‘Monday‘,‘Tuesday‘,‘Wednesday‘,‘Thursday‘,‘Friday‘]: print(‘上班‘) else: print(‘‘‘必須輸入其中一種: Monday Tuesday Wednesday Thursday Friday Saturday Sunday ‘‘‘) 練習三
十三 流程控制之while循環
1 為何要用循環
上節課我們已經學會用if .. else 來猜年齡的遊戲啦,但是只能猜一次就中的機率太小了,如果我想給玩家3次機會呢?就是程序啟動後,玩家最多可以試3次,這個怎麽弄呢?你總不會想著把代碼復制3次吧。。。。
age_of_oldboy = 48
guess = int(input(">>:"))
if guess > age_of_oldboy :
print("猜的太大了,往小裏試試…")
elif guess < age_of_oldboy :
print("猜的太小了,往大裏試試…")
else:
print("恭喜你,猜對了…")
第2次
guess = int(input(">>:"))
if guess > age_of_oldboy :
print("猜的太大了,往小裏試試…")
elif guess < age_of_oldboy :
print("猜的太小了,往大裏試試…")
else:
print("恭喜你,猜對了…")
第3次
guess = int(input(">>:"))
if guess > age_of_oldboy :
print("猜的太大了,往小裏試試…")
elif guess < age_of_oldboy :
print("猜的太小了,往大裏試試…")
else:
print("恭喜你,猜對了…")
即使是小白的你,也覺得的太low了是不是,以後要修改功能還得修改3次,因此記住,寫重復的代碼是程序員最不恥的行為。
那麽如何做到不用寫重復代碼又能讓程序重復一段代碼多次呢? 循環語句就派上用場啦
2 條件循環:while,語法如下
while 條件:
循環體
如果條件為真,那麽循環體則執行,執行完畢後再次循環,重新判斷條件。。。
如果條件為假,那麽循環體不執行,循環終止
打印0-10
count=0
while count <= 10:
print(‘loop‘,count)
count+=1
打印0-10之間的偶數
count=0
while count <= 10:
if count%2 == 0:
print(‘loop‘,count)
count+=1
打印0-10之間的奇數
count=0
while count <= 10:
if count%2 == 1:
print(‘loop‘,count)
count+=1
3 死循環
import time
num=0
while True:
print(‘count‘,num)
time.sleep(1)
num+=1
4 循環嵌套與tag
tag=True
while tag:
……
while tag:
……..
while tag:
tag=False
練習,要求如下:
1 循環驗證用戶輸入的用戶名與密碼
2 認證通過後,運行用戶重復執行命令
3 當用戶輸入命令為quit時,則退出整個程序
實現一:
name=‘egon‘
password=‘123‘
while True:
inp_name=input(‘用戶名: ‘)
inp_pwd=input(‘密碼: ‘)
if inp_name == name and inp_pwd == password:
while True:
cmd=input(‘>>: ‘)
if not cmd:continue
if cmd == ‘quit‘:
break
print(‘run <%s>‘ %cmd)
else:
print(‘用戶名或密碼錯誤‘)
continue
break
實現二:使用tag
name=‘egon‘
password=‘123‘
tag=True
while tag:
inp_name=input(‘用戶名: ‘)
inp_pwd=input(‘密碼: ‘)
if inp_name == name and inp_pwd == password:
while tag:
cmd=input(‘>>: ‘)
if not cmd:continue
if cmd == ‘quit‘:
tag=False
continue
print(‘run <%s>‘ %cmd)
else:
print(‘用戶名或密碼錯誤‘)
4 break與continue
break用於退出本層循環
while True:
print "123"
break
print "456"
continue用於退出本次循環,繼續下一次循環
while True:
print "123"
continue
print "456"
5 while+else
與其它語言else 一般只與if 搭配不同,在Python 中還有個while …else 語句,while 後面的else 作用是指,當while 循環正常執行完,中間沒有被break 中止的話,就會執行else後面的語句
count = 0
while count <= 5 :
count += 1
print("Loop",count)
else:
print("循環正常執行完啦")
print("-----out of while loop ------")
輸出
Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
循環正常執行完啦
-----out of while loop ------
如果執行過程中被break啦,就不會執行else的語句啦
count = 0
while count <= 5 :
count += 1
if count == 3:break
print("Loop",count)
else:
print("循環正常執行完啦")
print("-----out of while loop ------")
輸出
Loop 1
Loop 2
-----out of while loop ------
6 while循環練習題
- 使用while循環輸出1 2 3 4 5 6 8 9 10
- 求1-100的所有數的和
- 輸出 1-100 內的所有奇數
- 輸出 1-100 內的所有偶數
- 求1-2+3-4+5 … 99的所有數的和
- 用戶登陸(三次機會重試)
7:猜年齡遊戲
要求:
允許用戶最多嘗試3次,3次都沒猜對的話,就直接退出,如果猜對了,打印恭喜信息並退出
8:猜年齡遊戲升級版
要求:
允許用戶最多嘗試3次
每嘗試3次後,如果還沒猜對,就問用戶是否還想繼續玩,如果回答Y或y, 就繼續讓其猜3次,以此往復,如果回答N或n,就退出程序
如何猜對了,就直接退出
題一
count=1
while count <= 10:
if count == 7:
count+=1
continue
print(count)
count+=1
count=1
while count <= 10:
if count != 7:
print(count)
count+=1
題目二
res=0
count=1
while count <= 100:
res+=count
count+=1
print(res)
題目三
count=1
while count <= 100:
if count%2 != 0:
print(count)
count+=1
題目四
count=1
while count <= 100:
if count%2 == 0:
print(count)
count+=1
題目五
res=0
count=1
while count <= 5:
if count%2 == 0:
res-=count
else:
res+=count
count+=1
print(res)
題目六
count=0
while count < 3:
name=input(‘請輸入用戶名:‘)
password=input(‘請輸入密碼:‘)
if name == ‘egon‘ and password == ‘123‘:
print(‘login success‘)
break
else:
print(‘用戶名或者密碼錯誤‘)
count+=1
題目七
age_of_oldboy=73
count=0
while count < 3:
guess=int(input(‘>>: ‘))
if guess == age_of_oldboy:
print(‘you got it‘)
break
count+=1
題目八
age_of_oldboy=73
count=0
while True:
if count == 3:
choice=input(‘繼續(Y/N?)>>: ‘)
if choice == ‘Y‘ or choice == ‘y‘:
count=0
else:
break
guess=int(input(‘>>: ‘))
if guess == age_of_oldboy:
print(‘you got it‘)
break
count+=1
十四 流程控制之for循環
1 叠代式循環:for,語法如下
for i in range(10):
縮進的代碼塊
2 break與continue(同上)
3 循環嵌套
for i in range(1,10):
for j in range(1,i+1):
print(‘%s%s=%s‘ %(i,j,ij),end=‘ ‘)
print()
for+else
python全棧開發【第四篇】Python流程控制