while循环
while条件表达式:语句块
while语句的条件表达式是循环条件,常用的是关系表达式或者逻辑表达式,语句块是循环执行的语句。
n=1p=1num=int(input("input n="))whilen
n=n+1print("{0}的阶乘是{1}".format(num,p))
input n=66的阶乘是120
在python中while语句,可以有else语句,else语句会在循环正常执行完的情况下(不管是否执行循环体),但是通过break跳出循环体时,else不会被执行。
num=int(input("put into number="))qnum=num
count=0while(num!=0):if(num==68):breakcount+=1num//=10else:ifcount!=0:print("while循环执行完成")else:print("num输入为0")ifnum==68:print("break 语句执行,没有执行else语句")ifnum==0:count=1print("%d是%d位数字"%(qnum,count))ifnum==68:count=2print("%d是%d位数字"%(qnum,count))
put intonumber=888while循环执行完成888是3位数字put intonumber=0num输入为00是1位数字put intonumber=68break语句执行,没有执行else语句68是2位数字
while循环合并2个有序的数组,这是归并排序的重点
defsort(arr1,arr2):i,j,k=0,0,0arr3=[]while(i
1234567878
for循环
for语句首行定义了赋值目标和遍历的序列对象,后面需要重复执行的语句块,语句块语句需要向右缩进,且缩进量要一致。
for赋值目标in序列对象:语句块
for通过遍历任意序列的元素进行建立循环,针对序列的每一个元素执行一次循环体,列表,字符串,元组都是序列,可以利用它们建立循环。
列表
char=['a','b','c']forch inchar:print(" ",ch,end=" ")
a b c
字符串
char="abcdefgh"forch inchar:print(ch,end="-")
a-b-c-d-e-f-g-h-
元组
char=(1,2,3,4)forch inchar:print(ch,end="-")
1-2-3-4-
for循环的循环次数显然就是序列中的元素的个数,即序列的长度,可以利用序列的长度来控制循环的次数,这时关注的不是序列元素的值,而是元素的个数。
计算输入的元素和,与range无关。
sum=0fork inrange(6):num=int(input("put into numbers:"))sum+=num
print("sum=",sum)
结果是:
put intonumbers:1put intonumbers:2put intonumbers:3put intonumbers:4put intonumbers:5put intonumbers:6sum=21
计算1+.....6的和,和序列的元素有关。
sum=0fori inrange(7):sum+=i;print("the sum=",sum)
the sum=21
for语句也支持一个可以选择的else块,它 的功能就像在while循环中一样,如果没有碰到break语句,就会执行else块,也就是序列所有的元素都被访问过了之后,执行else块。
string=input("input char:")forch instring:ifch=='e':breakelse:print(" bo break stance")ifch=='e':print("不会执行break语句")else:print("会执行break语句")
input char:abcd
bo breakstance
会执行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循环。
defseek(targe=66,arr=[11,22,33,68],left=0,right=3):whilelefttarge:right=mid-1#seek(targe,arr,left,right)else:left=mid+1#seek(targe,arr,left,right)return-1
for循环,在循序查找的使用。
defseekxunxu(targe=66,arr=[11,22,33,68],left=0,right=3):count=0fori inarr:count+=1ifi==targe:returncount
ifcount==len(arr):return-1
for是计数循环,while是条件循环,python中,for循环有点诡异,for循环和while可以转换。