python中的循環語句包括for循環語句和while循環語句,但是python中是沒有do...while循環語句的。
while循環語句
while循環語句的一般格式為;
while condition:loop body
condition是循環判斷條件,loop?body是循環體。
當循環條件成立時,就執行循環體中的語句,循環條件不成立時,跳出循環。
下面是一個簡單的實例:
# #計算0到100的和
sum=0
i=0
while i<=100:sum=sum+ii=i+1
print('0到100的整數和為:%d'%sum)
無限循環:
當我們設置條件表達式永遠不為 false時,可以實現無限循環
#無限循環
while True:height=input('請輸入你的身高(cm):')height=float(height)print('你的身高對應標準體重為:%fkg'%(height-105))
可以按終止按鈕來退出死循環
無限循環在服務器上客戶端的實時請求非常有用
while...else語句
while condition:loop body
else:CodeBlock
如果while后面的條件表達式(condition)成立,那么執行循環體中(loop body)的語句,不成立時,就執行else后面的(CodeBlock)語句。
簡單實例如下:
#隨機才一個0到10的整數
num=random.randint(0,10) #隨機生成一個0到10之間的整數
num2=int(input('請輸入你猜想的數字(整數):')) #輸入猜想的數字
i=1 #i用于計算猜數的次數
while num2!=num: #條件表達式print('猜錯了,再猜一次')num2 = int(input('請輸入你猜想的數字(整數):'))i = i + 1
else:print('一共猜了%d次猜對啦!'%i) #條件表達式不成立就執行這條語句
如果while的循環體中只有一條語句的話,可以將這條語句和while寫在同一行
flag=1
while flag:print('這是一個無限循環')
for循環語句
for循環的一般格式如下:
for <variable> in <sequence>:<statements1>
variable是一個變量名,sequence是變量范圍,當變量在變量范圍內時,執行statements1里面的語句,否則執行statements2中的語句
下面是簡單的實例:
for num in range(1,5): #range(1,5)表示1到5的整數print(num,end='\t') #end='\t'表示制表符,也就是4個空格
print('\n') #\n是換行符str1='hello' #字符串
for str in str1:print(str,end='\t')
print('\n')list1=[1,2,3] #列表
for num in list1:print(num,end='\t')
print('\n')tuple1=(4,5,6) #元組
for num in tuple1:print(num,end='\t')
print('\n')#注意:集合是無序的,所以打印出來的數據也是無序的
set1={'t1','t2','t3'} #集合
for str in set1:print(str,end='\t')
print('\n')dict1={'name':'風之海藍','sex':'男','age':33} #字典
for str in dict1.values():print(str,end='\t')
print('\n')
需要注意的是,對于集合,打印出來的結果并不是有序的
for...else
它的一般格式為:
for <variable> in <sequence>:<statements1>
else:<statements2>
statements1是循環主體,statements2是循環結束后執行的語句
一個簡單實例:
for num in range(5):print(num,end='\t')
else:print('end')
range()函數
如果需要遍歷數字序列,可以使用內置 range() 函數。它會生成數列,就像上面的實例一樣。
我們可以指定區間值,也可以指定步長
for num in range(0,10,2): #0到10的整數,步長為2print(num,end='\t')
print('\n')
for num in range(0,10,3): #0到10的整數,步長為3print(num,end='\t')
print('\n')
for num in range(0,-10,-3): #0到-10的整數,步長為-3print(num,end='\t')
print('\n')
for num in range(-10,0,3): #-10到0的整數,步長為3print(num,end='\t')
可以看到,range的區間可以是正數區間,也可以是負數區間,區間的右邊界值不被包含在內,步長也可以是正數或者負數。但是要注意的是,區間如果是從小到大,那么步長的數值要為正,區間如果是從大到小,那么步長的數值要為負數,否則會取不到數值。
我們可以結合 range() 和 len() 函數來遍歷一個序列的索引,如下所示:
list1=['t1','t2','t3']
for i in range(len(list1)):print(list1[i])
break和continue
在循環語句中,我們常常要用到break語句和continue語句,它們是用來跳出循環的,但是兩者又有區別。
break:跳出整個循環。它可以跳出 for 和 while 的循環體,如果從 for 或 while 循環中使用break終止,那么對應的循環 else 塊將不執行。
continue:跳出當前循環。也就是在當前循環中,continue后面的語句不執行了,直接進入下一輪循環。
以下是簡單實例:
#for循環中使用break
for num in range(1,10):if num==5:breakprint(num,end='\t')
print('結束')#for循環中使用continue
for num in range(1,10):if num == 5:continueprint(num,end='\t')
print('結束')#while中使用break
num = 10
while num > 0:num = num - 1if num == 5:breakprint('當前變量值為 :', num, end='\t')
print('結束')#while中使用continue
num = 10
while num > 0:num = num - 1if num == 5:continueprint('當前變量值為 :', num, end='\t')
print('結束')
可以看到,無論是在for循環中,還是在while循環中,如果使用的是break,那么它會跳出整個循環,后面的循環語句都不會執行了(如果有else子句,else子句里面的語句也不會執行)。但是如果用的是continue,那么只有當前循環中的剩余語句不會執行,后面循環中的語句以及else子句中的語句都會執行。
如果是在嵌套循環語句中,執行break,那么會跳出當前的整個循環,不會跳出外層循環
下面是一個簡單的實例:
for n in range(2, 10):for x in range(2, n):if n % x == 0:print(n, '等于', x, '*', n // x)breakelse:# 循環中沒有找到元素print(n, ' 是質數')
pass語句
?pass是一個空語句,使用它是為了保持程序結構的完整性。pass 不做任何事情,一般用做占位語句。
以下是一個實例:
list1=['花花','殼哥','颯颯','絨絨','海鷗哥哥']
for str in list1:if str=='颯颯':passprint('這是%s'%str)print(str)
print('結束')
可以看到pass不會對程序造成影響,不影響程序的正常運行,只作占位使用