本文主要向大家介绍了Python语言循环结构,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

while循环

while 条件表达式:

语句块

while语句的条件表达式是循环条件,常用的是关系表达式或者逻辑表达式,语句块是循环执行的语句。

n=1
p=1
num=int(input("input n="))
while n
p*=n
n=n+1
print("{0}的阶乘是{1}".format(num,p))
input n=6

6的阶乘是120

在python中while语句,可以有else语句,else语句会在循环正常执行完的情况下(不管是否执行循环体),但是通过break跳出循环体时,else不会被执行。

num=int(input("put into number="))
qnum=num
count=0
while (num!=0):
if(num==68):
break
count+=1
num//=10
else:
if count!=0:
print("while循环执行完成")
else:
print("num输入为0")
if num==68:
print("break 语句执行,没有执行else语句")
if num==0:
count=1
print("%d是%d位数字"%(qnum,count))
if num==68:
count=2
print("%d是%d位数字"%(qnum,count))
put into number=888

while循环执行完成

888是3位数字

put into number=0

num输入为0

0是1位数字

put into number=68

break 语句执行,没有执行else语句

68是2位数字

while循环合并2个有序的数组,这是归并排序的重点

def sort(arr1,arr2):
i,j,k=0,0,0
arr3=[]
while(i
if arr1[i]
arr3.insert(k,arr1[i])
i+=1
k+=1
else:
arr3.insert(k,arr2[j])
j+=1
k+=1
while i
arr3.insert(k,arr1[i])
i+=1
k+=1
while j
arr3.insert(k,arr2[j])
j=j+1
k=k+1
for elem in arr3:
print(elem,end=" ")
arr1=[1,3,5,7]
arr2=[2,4,6,8,78]
sort(arr1,arr2)
1 2 3 4 5 6 7 8 78

for循环

for语句首行定义了赋值目标和遍历的序列对象,后面需要重复执行的语句块,语句块语句需要向右缩进,且缩进量要一致。

for 赋值目标 in 序列对象:

语句块

for通过遍历任意序列的元素进行建立循环,针对序列的每一个元素执行一次循环体,列表,字符串,元组都是序列,可以利用它们建立循环。

列表

char=['a','b','c']
for ch in char:
print(" ",ch,end=" ")
a b c

字符串

char="abcdefgh"
for ch in char:
print(ch,end="-")
a-b-c-d-e-f-g-h-

元组

char=(1,2,3,4)
for ch in char:
print(ch,end="-")
1-2-3-4-

for循环的循环次数显然就是序列中的元素的个数,即序列的长度,可以利用序列的长度来控制循环的次数,这时关注的不是序列元素的值,而是元素的个数。

计算输入的元素和,与range无关。

sum=0
for k in range(6):
num=int(input("put into numbers:"))
sum+=num
print("sum=",sum)

结果是:

put into numbers:1
put into numbers:2
put into numbers:3
put into numbers:4
put into numbers:5
put into numbers:6
sum= 21

计算1+.....6的和,和序列的元素有关。

sum=0
for i in range(7):
sum+=i;
print("the sum=",sum)
the sum= 21

for语句也支持一个可以选择的else块,它 的功能就像在while循环中一样,如果没有碰到break语句,就会执行else块,也就是序列所有的元素都被访问过了之后,执行else块。

string=input("input char:")
for ch in string:
if ch=='e':
break
else:
print(" bo break stance")
if ch=='e':
print("不会执行break语句")
else:
print("会执行break语句")
input char:abcd
bo break stance

会执行break语句

input char:abcde

不会执行break语句

range函数,经常用在for循环中,看看其功能吧。

>>> list(range(6))
[0, 1, 2, 3, 4, 5]
>>> list(range(1,6))
[1, 2, 3, 4, 5]

for循环的运用。

二分查找,使用for循环。

def seek(targe=66,arr=[11,22,33,68],left=0,right=3):
while left
mid=(left+right)//2
i=arr[mid]
if i==targe:
return mid+1
elif i>targe:
right=mid-1
#seek(targe,arr,left,right)
else:
left=mid+1
#seek(targe,arr,left,right)
return -1

for循环,在循序查找的使用。

def seekxunxu(targe=66,arr=[11,22,33,68],left=0,right=3):
count=0
for i in arr:
count+=1
if i==targe:
return count
if count==len(arr):
return -1

for是计数循环,while是条件循环,python中,for循环有点诡异,for循环和while可以转换。