zoukankan      html  css  js  c++  java
  • 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 叉车

  • 相关阅读:
    1012 The Best Rank (25 分)(排序)
    1011. World Cup Betting (20)(查找元素)
    1009 Product of Polynomials (25 分)(模拟)
    1008 Elevator (20 分)(数学问题)
    1006 Sign In and Sign Out (25 分)(查找元素)
    1005 Spell It Right (20 分)(字符串处理)
    Kafka Connect 出现ERROR Failed to flush WorkerSourceTask{id=local-file-source-0}, timed out while wait
    flume、kafka、avro组成的消息系统
    Java23种设计模式总结【转载】
    Java编程 思维导图
  • 原文地址:https://www.cnblogs.com/xyou/p/8888359.html
Copyright © 2011-2022 走看看