• 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 叉车

  • 相关阅读:
    this用法
    break/continue的使用
    解决:sql server无法在C盘下创建database/操作系统错误5(拒绝访问)
    (转)科普:SATA、PCIe、AHCI、NVMe
    Java按位取反运算符“~”的工作原理
    <剑指offer> 第12题
    <剑指offer> 第11题
    <剑指offer> 第10题
    <剑指offer> 第9题
    <剑指offer> 第8题
  • 原文地址:https://www.cnblogs.com/xyou/p/8888359.html
Copyright © 2020-2023  润新知