美文网首页程序员
python循环综合运用

python循环综合运用

作者: 知识学者 | 来源:发表于2018-04-20 10:13 被阅读16次

    循环很重要,计算机很蠢,唯一的优势就是按照指令不停的执行,所以决定在说一下。

    break语句,用在循环体中,迫使循环立即终止,即跳出所在循环体,继续执行循环体后面的语句。

    sum=0
    i=1
    while i:
        sum+=i
        i+=1
        if i>=101:
            break
    print(" the 1+2+..100={}".format(sum))
    
     the 1+2+..100=5050
    

    break 经常和if语句使用,满足条件跳出循环体,但是据大佬说,循环中不建议使用break语句,跳来跳出逻辑容易出现问题。就像被抛弃的goto

    def maxys(m,n):
        r=m%n
        while r!=0:
            m=n
            n=r
            r=m%n
        return n
    
    >>> maxys(33,11)
    11
    >>> maxys(6,5)
    

    continue语句,与break语句不同,在循环中执行continue语句,并不会退出循环语句,而是立即结束本次循环,重新开始下一次循环

    def printthreenum(n):
        for i in range(1,n+1):
            if i%3==0:
                continue
            print(" %d"%(i),end=" ")
                
    
    >>> printthreenum(20)
     1  2  4  5  7  8  10  11  13  14  16  17  19  20 
    

    循环嵌套,基本复杂点的code,都涉及到嵌套问题。

    公约数的因子,求最大公约数,暴力法解决

    def maxys(m,n):
        i=2
        max=1
        while i<=m and i<=n:
            while m%i==0 and n%i==0:
                max*=i
                m=m//i
                n=n//i
            i+=1       
        return max
        
    
    >>> maxys(8,2)
    2
    >>> maxys(13,2)
    1
    

    采用减治法的选择排序,算法

    def sort(arr):
        i=0
        while i<len(arr)-1:
            j=i+1
            temp=arr[j]
            flag=0
            while j>0:
                if arr[j-1]>temp:
                    arr[j]=arr[j-1]
                    j-=1
                    flag=1
                else:
                    break
            if flag:
                arr[j]=temp
            i+=1
        return arr
    
    arr=[66,1,-8,22,88]
    sort(arr)
    [-8, 1,22, 33, 66]
    

    选择排序法:每次选择最小的元素。

    def xzsort(arr):
        i=0
        while i<len(arr)-1:
            min=arr[i]
            j=i+1
            #选择[i,len(list)-1]中最小的元素
            while j<len(arr):
                if min>arr[j]:
                    min=arr[j]
                j+=1
                id=arr.index(min) #记录要交换的元素下标
            #交换    
            if min!=arr[i]:
                #temp=arr[i]
                #arr[i]=min
                #arr[id]=temp
                arr[i],arr[id]=arr[id],arr[i]
            i=i+1
        return arr
    
    
    arr=[66,-5,99,56,4,668,68]
    xzsort(arr)
    [-5, 4, 56, 66, 68, 99, 668]
    

    我是c系,对python的思维还是欠缺,选择排序,出现了不少小问题,无论是循环缩进,还是python的list的下标获取,以及交换。。。

    乘法口诀表

    for i in range(1,10):
        for j in range(1,i+1):
            print("{}*{}={}".format(j,i,i*j),end="  ")
        print()
    
    1*1=1  
    1*2=2  2*2=4  
    1*3=3  2*3=6  3*3=9  
    1*4=4  2*4=8  3*4=12  4*4=16  
    1*5=5  2*5=10  3*5=15  4*5=20  5*5=25  
    1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
    1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
    1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
    1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=8
    

    不说了,时间有限,循环嵌套,外加if语句,是编程的重点。

    **不说了,循环嵌套真的很重要,多多体会被。

    相关文章

      网友评论

        本文标题:python循环综合运用

        本文链接:https://www.haomeiwen.com/subject/mltakftx.html