• Python基础2:流程控制语句 while / for循环


    [ while 循环 ]

    如果要计算1+2+3,我们可以直接写表达式:

    >>> 1 + 2 + 3

    要计算1+2+3+...+10,勉强也能写出来。

    但是,要计算1+2+3+...+10000,直接写表达式就不可能了。

    为了让计算机能计算成千上万次的重复运算,就需要循环语句。

    # while循环结构
    while 判断条件:  # 只有条件不成立时退出循环,如果条件为真,则循环就没有停止的时候,成为一个死循环
        执行语句……

    输出1到10的所有整数:

    num = 1
    while num <11:
        print(num)
        num = num +1

    如果现在我们要当数字为5的时候结束循环,可以使用break语句!

    break语句会终端当前循环。

    num = 1
    while num <11:
        print("当前数字是",num)
        if num == 5 :
            break
        num = num +1
        print("现在数字变成了:",num)

    break的作用: 结束循环,在死循环中,也可以通过设置一定的条件来结束循环。

    要求输出1-100之间的所有奇数,可以通过continue语句来实现。

    # 输出1-100之间所有奇数
    num = 0
    while num<100:
        num = num + 1
        if num%2 ==0:
            continue
        print(num)

    while循环中的else:

    # while循环结构
    while 判断条件: 
        执行语句……
    else:
        执行语句……

    while循环中的else语句比较特殊,这里的else语句,只有在循环正常结束的时候才会执行,意思就是说如果我们的while循环在执行过程中中断了,即执行了break语句,这里的else语句就不会被执行。

    # 循环没有被中断
    num = 0
    while num<10:
        num = num + 1
        if num%2 ==0:
            continue
        print(num)
    else:
        print("else-----")
    ### 循环被中断
    num = 0
    while num<10:
        num = num + 1
        if num%2 ==0:
            break
        print(num)
    else:
        print("else-----")

         优化上篇的猜年龄程序:之前的程序每执行一次,用户就输入一次数字,程序就会判断一个结果,之后程序就结束了。然而这样并不好,程序应该一直让用户输入数字,直到用户输入的数字正确。

    init_num = 12
    num = int(input("Enter:"))
    while init_num != num:
        if num >  init_num:
            print("数字过大")
        else:
            print("数字过小")
        num = int(input("Enter:"))
    print("猜对了")
     
    
    嵌套循环:循环套循环
    
    num1 = 0
    while num1 <3:
        print(num1,end="++" )
        num1 += 1
        num2 = 0
        while num2<3:
            print(num2,end="")
            num2 +=1
        print()
     
    练习:

    1. 输出九九乘法表

    first = 1
    while first<=9:
        sec = 1
        while sec <= first:
            print(  str(sec)+"*"+ str(first) +"="+str(sec * first), end="	")
            sec += 1
        print()
        first += 1

    2. 使用 # 号 输出一个长方形,用户可以指定宽和高,如果长为3 ,高为4 ,则输出一个 横着有3个#号 竖着有4个#号的长方形。

    height = int(input("Height:"))  # 用户输入一个高度 4
    width = int(input(""))   # 用户输入一个宽度 3
    num_height = 1
    while num_height <=height:
        num_width = 1
        while num_width <= 
            print("#", end="")
            num_width += 1
        print()
        num_height += 1

    *******************************************************************************************************************************************************************************************************

    [ 序列 ]

    Sequence是Python的一种内置类型(built-in type),内置类型就是构建在Python Interpreter里面的类型。

    Python的数据访问模型:直接存取 ,序列 ,映射

    对非容器类都可以直接存取,所有的数值类型归为此类。

    序列类型 是指容器内的元素从0开始的索引顺序访问,一次可以访问一个或者多个元素。 字符串列表元组归到此类

    映射类型和序列类型不同之处,它使用的索引和顺序的数字偏移量不同,它的元素无序存放,通过唯一的key来访问。 字典就是这种类型。

    以后会学习的字符串(strings),列表(lists),元组(tuples),我们可以统称为序列。

    序列有着相同的访问模式:它的每一个元素都可以通过指定一个偏移量的方式得到,而要想一次得到多个元素,我们可以使用切片,下表偏移量从0开始,总元素数减1结束。

    简单来讲,序列就是按照一定的顺序排列起来的一系列元素,每个元素不是在其他元素之前,就是在其他元素之后。

    在介绍for循环之前,先来学习range(范围)语句。

    # rang()的用法: 
    
    range(stop) 
        #stop为结束位置,列出从0到stop之前的所有整数
    range(start, stop[, step]) 
        #列出从start开始,到stop之前所有的数字
    range(start, stop[, step]) 
        #start表示起始数字,stop表示结束数字,step表示每两个相邻数字之间的差,也叫步长

    实例:

    #python range函数使用方法
    #函数内只有一个参数,则表示会产生从0开始计数的整数列表:
    range()             
    >>> range(4)
    [0, 1, 2, 3]        #python 返回值
    
    #python range中,当传入两个参数时,则将第一个参数做为起始位,第二个参数为结束位
    >>> range(0,5)  
    [0, 1, 2, 3, 4]
    
    #range()函数内可以填入三个参数,第三个参数是步进值(步进值默认为1)
    >>> range(0,10,3) 
    [0, 3, 6, 9]
    
    #range函数的参数和结果也并非一定要是正数或是递增的,好比下面两个例子:
    >>> range(-4,4)   
    [-4, -3, -2, -1, 0, 1, 2, 3]
    >>> range(4,-4,-1)
    [4, 3, 2, 1, 0, -1, -2, -3]

    [ for 循环 ]

    for循环 也被称作流程控制语句,常被用来遍历输出指定对象内部的多个元素,比如遍历字符串,列表,元祖,字典等(这些数据类型后边会学习)。

    流程图:

        

    基本语法结构为:

    # for循环结构一
    for var in sequence:
            statements(s)
    
    # for 循环示例
    for i in range(10):
        print(i)

    实例:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    for letter in 'Python':     # 第一个实例:循环遍历一个字符串
       print('当前字母 :', letter)
    # 第二个实例:循环遍历一个列表 [列表的知识,之前还没学习,这里先强记:一个列表就是一个有序的集合,它内部的每个元素都有对应的一个索引下标数字,可以通过该数字找到相应的元素,并且这个索引下标也是有先后顺序的。 fruits = ['banana', 'apple', 'mango'] for fruit in fruits: print('当前字母 :', fruit) print ("Good bye!")

    结合上边提到的range()语句,我们练习一下:通过序列索引循环迭代。即:通过遍历索引的方式,执行循环。

    在练习之前,先回想一下之前学习过的一个Python内置函数:range(),这里我们介绍另外一个Python内置函数:len() ,它的功能是计算列表的长度,即:包含元素的个数。

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    # 在没有学习for循环之前,我们如果要通过索引下标取出对应的水果名,会这样操作
    
    fruits = ['banana', 'apple',  'mango']
    
    print('当前水果 :', fruits[0])
    print('当前水果 :', fruits[1])
    print('当前水果 :', fruits[2])
    
    print "Good bye!"

    现在我们用for循环语句来实现:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    fruits = ['banana', 'apple',  'mango']
    for index in range(len(fruits)):
       print('当前水果 :', fruits[index])
    
    print ("Good bye!")

    输出结果:

    当前水果 : banana
    当前水果 : apple
    当前水果 : mango
    Good bye!

    for  循环中的else语句:

    在 python 中,for … else 表示:for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,这里和while … else 是一样的。另外,跟while循环一样,在for循环中也可以使用break和continue语句,两者效果一样。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Author  : Jesson
    
    for num in range(10,20):  # 迭代 10 到 20 之间的数字
       for i in range(2,num): # 根据因子迭代
          if num%i == 0:      # 确定第一个因子 如果能被2整除,就是质数
             j=num/i          # 计算第二个因子
             print('%d = %d * %d' %(num,i,j)) # 格式化输出
             break            # 跳出当前循环
       else:                  # 循环的 else 部分
          print(num,'是一个质数')

     输出结果:

    10 = 2 * 5
    11 是一个质数
    12 = 2 * 6
    13 是一个质数
    14 = 2 * 7
    15 = 3 * 5
    16 = 2 * 8
    17 是一个质数
    18 = 2 * 9
    19 是一个质数
  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/hellojesson/p/5793666.html
Copyright © 2020-2023  润新知