python循环结构

while循环

while 条件表达式:
    语句块

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

n=1
p=1 num=int(input("input n=")) while n<num: 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循环执行完成 8883位数字 put into number=0 num输入为0 01位数字 put into number=68 break 语句执行,没有执行else语句 682位数字

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

def sort(arr1,arr2): i,j,k=0,0,0 arr3=[] while(i<len(arr1) and j<len(arr2)): if arr1[i]<arr2[j]: arr3.insert(k,arr1[i]) i+=1 k+=1 else: arr3.insert(k,arr2[j]) j+=1 k+=1 while i<len(arr1): arr3.insert(k,arr1[i]) i+=1 k+=1 while j<len(arr2): 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<right: 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可以转换。byd 叉车

转载于:https://www.cnblogs.com/xyou/p/8888359.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值