神奇的循環知識
-
流程控制之if判斷
-
流程控制之while循環
-
流程控制之for循環
if語法:
if條件:(if條件形成後,/n後會縮進四個空格)
代碼1
代碼2
代碼3
----------------------------------------------------------------------------
語法一:
cls=‘human‘
sex=‘famele‘
ale=22
if cls==‘human‘ and sex==‘famele‘ and ale>18 and ale<30 : (如果條件成立)
print(‘表白‘) (條件成立運行該行代碼)
print(‘end.....‘) (無論條件是否成立,最後都會運行該行代碼)
----------------------------------------------------------------------------------
語法二:
cls=‘human‘
sex=‘famele‘
ale=22
if cls==‘human‘ and sex==‘famele‘ and ale>23 and ale<50: (如果條件成立)
print(‘表白‘) (條件成立運行該行代碼)
else: (前面條件不成立的話)
print(‘阿姨好‘) (前面條件不成立的話,運行該行代碼)
print(‘end.....‘) (最後執行該行代碼)
--------------------------------------------------------------------------------------
如果:成績>=90,那麽:優秀
如果成績>=80且<90,那麽:良好
如果成績>=70且<80,那麽:普通
cj=input(‘請輸入分數:‘)
cj=int(cj) (如果不輸入該行,那麽系統會提示str不能和下面的int做大小對比,所以必須把填入的分數,字符串轉換成整形)
if cj >=90:
print(‘優秀‘)
elif cj >=80 and cj<90:
print(‘良好‘)
elif cj >=70 and cj<80:
print(‘普通‘)
——————————————————————————————————
name=‘huanghua‘
paw=‘123‘
name1=input(‘請輸入用戶名:‘)
paw1=input(‘請輸入密碼:‘)
if name==name1 and paw==paw1:
print(‘輸入正確‘)
else:
print(‘輸入錯誤‘)
其中我自犯過的錯:我首先寫成paw=123,結果在輸入界面輸入123後,顯示(‘輸入錯誤’);這是應為paw=123 顯示為int,int無法與str做
對比,所以兩種解決模式:1.paw=‘123‘ 這樣的話表示paw之後是str,str能和str之間做對比;2.在paw=input(‘請輸入密碼’)的下一行輸入
paw=int(paw1),目的是將用戶之後輸入的str自動轉換成int模式。
————————————————————————————————————————————————
cls=‘human‘
sex=‘famele‘
ale=22
bb=False
if cls==‘human‘ and sex==‘famele‘ and ale==22:
print(‘表白‘)
if bb:
print(‘在一起‘)
else:
print(‘我逗你玩的‘)
else:
print(‘阿姨好‘)
print(‘end.....‘)
這裏面采用了一個嵌套模式,就是在if後面再增加if判斷,新增一個bb=False,也是條件之一,表示在完成第一個if後,在嵌套下一個if條件,
條件不成立顯示(表白)(我逗你玩的);
如果bb=True,在第一個條件成立夠,第二個if bb:表示條件成立,顯示(表白)(在一起)
但是如果第一個if條件不成立的話,它將直接跳到else,顯示(阿姨好),之前的if bb條件將直接跳過,因為它是在第一個if 大框架之下,和else沒有關系。
—————————————————————————————————————————————————————————————
while
while的語法,while的循環又稱為條件循環。
name=‘huanghua‘
paw=‘123‘
while True:
name1=input(‘請輸入姓名:‘)
paw1=input(‘請輸入密碼:‘)
if name==name1 and paw==paw1:
print(‘輸入正確‘)
else:
print(‘輸入錯誤‘)
while True:循環的條件為True,表示循環的條件為對的情況下;但是運行後出現了死循環,就是我輸入賬號,密碼無論對錯都在循環,並沒有在輸入對的情況下結束循環。
—————————————————————————————————————————————————————————————
while+break:
break 的意思是終止掉當前層的循環,執行其他代碼。
name=‘huanghua‘
paw=‘123‘
while True:
name1=input(‘請輸入賬號:‘)
paw1=input(‘請輸入密碼:‘)
if name==name1 and paw==paw1:
print(‘輸入正確‘)
break
else:
print(‘輸入錯誤‘)
這次程序中添加了break,但是添加的很巧妙,它是在第一條條件成立後面加的break,表示如果第一條條件成立後將結束本次循環,後面都不循環.
—————————————————————————————————————————————————————————————
while+continue
continue的意思是終止掉本次循環,直接進入下一次循環。
記住:continue一定不要加到循環體最後一步執行的代碼。
n=1
while n<11:
print(n)
n+=1
1 2 3 4 5 6 7 8 9 10
n等於1
while循環條件是:n要循環小於11的數字
打印以上條件的n值
在每次n循環後都要+1,後再在顯示+1後的值(n=1,n+1=2顯示2,以上n=2的基礎上再+1=3,以此類推,直到小於11,等於10)
——————————————————————————————————————————————————————————
n=1
while n<11
if n==8 :
n+=1
continue
print(n)
n+=1
顯示1 2 3 4 5 6 7 9 10
邏輯是:和之前一樣n=1,while循環的條件是n要循環小於11的數,(如果n在循環到等於8的條件下,繼續按照沒循環後面加1,當循環到8的時候,結束本次8的循環,接著打印之後的數字,之後一直循環到小於11的數字之前都要在循環數值情況加加1)。
這裏面重點是:
if n==8:
n+=1
continue
裏面很多都會忘記增加n+=1,因為以為最後一步有了就不需要了。如果少這位代碼的話,出來的值就運行到7之後就停止運行了,原因是系統是從上到下運行,他在達到條件等於8後它就跳過本次循環了直接循環打印8之前的數值,最後的n+=1達不到效果。
————————————————————————————————————————————————————————————
while True:
if條件1:
code1
code2
continue (如果這裏加continue是正確的,因為加在這裏表示程序運行到這裏後將結束code3 code4的程序,這裏加comtinue是正確的)
code3
code4
continue (如果將continue加在這裏是毫無意義的,應為程序運行到這裏本來已經結束了,這裏加是錯的)
————————————————————————————————————————————————————————-————
while 嵌套:
name=‘huanghua‘
paw=‘123‘
while True:
name1=input(‘請輸入賬號:‘)
paw1=input(‘請輸入密碼:‘)
if name==name1 and paw==paw1:
print(‘輸入正確‘)
while True:
cmd=input(‘輸入執行的功能:‘)
if cmd==‘q‘:
break
print(‘%s功能執行中....:‘%cmd)
break
else:
print(‘輸入錯誤‘)
當中有兩個while循環,嵌套作用,主要是引申在賬號,密碼輸入正確後,之後的操作再次循環,當在輸入執行功能中要求輸入q後,要求退出所有循環,所有此代碼中有兩次break,break是代表時終止掉當前循環,第一個break是代表輸入q後,當前break是只對應if的條件等於q時,結束掉後面所有操作,返回輸入賬號,密碼的界面,再次while循環;第二次的break輸入在與第一次if對齊,表示到此行後,結束所有的while循環的if條件。
——————————————————————————————————————————————————————————————————————————————————————————
while+True:
name=‘huanghua‘
paw=‘123‘
tag=True:
while tag:
name1=input(‘請輸入賬號:)
paw1=input(‘請輸入密碼‘)
if name==name1 and paw==paw1:
print(‘輸入正確")
while tag:
cmd=inpurt(‘請輸入命令:)
if cmd==‘q‘
tag=False
else:
print(‘%s功能執行中....‘%cmd)
else:
print(‘輸入錯誤‘)
該代碼增加了tag=True,這是個變量的關系,相當於tag等於True這個值,之前代碼中while True:這個可更改為while tag,意思是一樣的,
其次之前在cmd==‘q’後面需要加bresk,但是在該代碼中都取消了break,後面增加tag=False後,將之前所以tag=True 的值全部更改為False,
在while循環中值為真,就能循環,只為假就停止循環,True為真能循環,False為假,都不能循環,所以之後如果cmd=‘q’後,增加tag值為False,它就跳到第二個while tag ,發現該值為False,假的不循環,再跳到第一個while tag後同上,就全部停止循環。
——————————————————————————————————————————————————————————
while+else:
n=1
whil n<5:
if n==3:
break
print(n)
n+=1
else:
print(‘=====")
顯示1 2.
因為當n==3時,加了個break後,後面的代碼就不執行了。
——————————————————————————————————————————————
n=1
while n<5:
print(n)
n+=1
else:
print(‘=======‘)
顯示1 2 3 4 ==========
————————————————————————————————————————————————
for 循環:
names=[‘egon‘,‘asb‘,‘wsb‘,‘lsb‘,‘csb‘]
n=0
while n<len(names):
print(names[n])
n+=1
顯示:egon asb wsb lsb csb
我們剖析下以上步驟:
取列表裏面的值,首先把列表裏面的值定義個n,因為n是要取值我們從最左邊開始計算,最左邊電腦取值都是0開始,所以我們用0計算,
然後我們用while 循環模式取值,給n一個定義,n要小於列表的長度,長度定義為len,len後面必須標註列表的變量名,接著我們開始打印names的列表值,names的列表值,我們用n來定義過,所以在打印names的值,需要在後面加個n,最後在標註n值在每次輸出時候都要
進一位。
————————————————————————————————————————————————————————————
info={‘name‘:‘egon‘,‘age‘:18,‘sex‘:‘male‘}
取字典info中key的值和key,valse值
for k in info:
print(k)
顯示name,age,sex
字典中name是key值,egon是valse值。
for k in info:
print(k,info[k])
顯示name engon; age 18; sex male
其中字典中取key值或valse值需要套用一個公式:
for key名 in 字典變量名:
print(key名)
取到的是key!
for key值 in 字典名:
print(key名,字典名[key名])
就能取到key值和valse值。
names=[‘egon‘,‘asb‘,‘wsb‘,‘lsb‘,‘csb‘]
取列表中的值:
for k in names:
print(k)
顯示engo,asb,wsb,lsb,csb
通過for循環定義同時也能取到列表值
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
for+range :
range : 範圍
for k in range (1,10): for 循環1開始到10結束,顧頭不顧尾
print(k)
顯示1 2 3 4 5 6 7 8 9
————————————————————————————————————————
for k in range(10): (10)只寫10的話,那麽他起始默認值就是0,顧頭不顧尾
print(k)
顯示0 1 2 3 4 5 6 7 8 9
——————————————————————————————————————————
for k in range (1,10,2): (1,10,2)循環1到10之間的值,顧頭不顧尾,最後的2代表每打印第一個數後跨過之後的數字取第三數字,以
print(k) 此類推,如果不寫默認的值是1)
顯示1 3 5 7 9
————————————————————————————————————————————
name=[‘egno‘,‘axx‘,‘wxx‘,‘’lxx‘,‘hxx‘]
for k in range (5):
print(k,name[k])
顯示0,engo 1,axx 2,wxx 3,lxx 4hx
for循環通過索引來找出0,1,2,3,4, 在按照key ,valse的方式取出valse值
for k in range (len(name)): 用(len(列表名)) 就能直接取出列表的長度
print(k,name[k])
————————————————————————————————————————————
嵌套for循環使用:
for k in range(4):
print(‘-----第一層%s-----‘%k)
for i in range(3):
print(‘ 第二層%s‘%i)
顯示-----第一層0-----
第二層0
第二層1
第二層2
------第一層1------
第二層0
第二層1
第二層2
------第二層2-----
第二層0
第二層1
第二層2
------第一層3------
第二層0
第二層1
第二層2
其中就是for循環嵌套使用,其中有兩次for循環,第一次為大循環,第二次為小循環,for循環嵌套使用,遵循以一次最外面的for循環執行一次,接著執行一次裏面的小循環,如果裏面的循環嵌套多次,就保證將裏面的小循環執行好多次後,在繞回來再一次執行外面的大循環,再執行裏面的小循環。以此類推。
——————————————————————————————————————————————————————————
for+break:
name=[‘engo‘,‘lxx‘,‘wxx‘,‘hww‘,‘yrr‘]
for k in name:
if k==‘wxx‘
break
print(k)
顯示:engo lxx
但for 循環滿足的if的條件後,用break,代表終止本層循環,後面不再執行,就顯示前面的值。
依次類推,如果把break,更改為continue的話,但if條件滿足後,跳掉滿足條件的那一條,其他照樣執行。
————————————————————————————————————————————————————
for+else
a=[1,2,3,4,5]
for k in a:
print(k)
else:
print(‘end.....‘)
顯示1 2 3 4 5 end..........
說明for循環和else是可以嵌套使用的。
a=[1,2,3,4,5]
for k in a:
if k==3:
break
else:
print(‘end.....‘)
顯示1 2
為什麽不顯示後面的數字和else對應的打印條件呢?應為在k值等於3時,就會被break,後面的所有都無法執行。
神奇的循環知識