美文网首页
day5-循环与分支

day5-循环与分支

作者: 丿Rem丶 | 来源:发表于2018-09-30 01:07 被阅读0次

    一、分支结构

    1.if结构

    • 定义:在程序中用来做判断的结构

    • 作用:在满足某个条件的时候,才执行之后的代码

    • 语法:

    if 条件语句 :
        执行语句块
    
    • 说明:

      • if
        python的关键字

      • 条件语句
        要求最终有一个值,可以是一个字面量,也可以是一个变量...一般情况下要求结果是个布尔值

      • :
        固定写法

      • 执行语句块
        可以是一行或者多行代码。这个代码块中的代码必须和前端中的if保持一个缩进

    • 执行过程:
      先判断条件语句的结果是否为True,为True就执行冒号后面的执行语句块。否则不执行,直接执行if结构后面的语句

    • 注意:在满足条件后才执行的代码写在if中,不管条件是否成立都要执行的代码就写在if外面,但是如果有if,if里面至少要有一条语句
      """

    • 例子:

    # 代码是从上往下执行的
    # import导入一个模块/包的关键字
    # random模块中提供很多随机数相关的功能
    import random     # 导入一个模块/包的关键字
    num = random.randint(0,10)     # randint(m,n) -->产生一个m到n的随机数(整数)
    if (num&1 == 0):
        print('是偶数')
    else:
        print('是奇数')
    print('是数字')
    #是奇数
    #是数字
    
    • 练习:
    # 练习:判断一个字符串中随机位置上的一个字符是否是字母,如果是就打印'该字符是字母',
    #      不管是不是字母都打印取出来的字符
    str1 = '26hhj88(jk'
    index = random.randint(0, len(str1)-1)
    char = str1[index]
    print(char)
    #k
    
    # 判断是否是字母
    # if 'a'<=char<='z' or 'A'<=char<'Z':
    #   print('该字符是字母')  
    if char.isalpha():
        print('该字符是字母')  
    
    #h
    #该字符是字母
    

    2.if-else结构

    • 语法:
    if 条件语句:
        语句块1
    else:
        语句块2
    
    • 执行过程:
      先判断条件语句是否为True,如果为True就执行语句块1,否则执行语句块2

    • 例子:

    num = 11
    
    if num%2 == 0:
        print('是偶数')
    else:
        print('是奇数')
    
    print('是数字')
    #是奇数
    #是数字
    

    3.if-elif-else结构

    • 语法:
    if 条件语句1:
        语句块1
    elif 条件语句2:
        语句块2
    else:
        语句块3
    
    • 执行过程:
      先判断条件语句1是否成立,如果成立直接性质语句块1,然后整个if结构结束。
      如果不成立,再判断条件语句2是否成立。
      如果条件语句2成立,就执行语句块2,然后整个if结构结束。
      如果条件语句2不成立,执行语句块3

    • 注意:if-elif-else结构中,elif可以根据情况有多个。else可以省略,如果有else,else写在最后

    • 练习:

    # 练习:随机产生0-100的年龄值,根据年龄的不同确定人处于哪个阶段。。。
    # 0-3岁 ---> 幼儿   4 - 12岁  ---> 儿童   13 - 18 --> 少年   19 --> 28 青年   29以上 ----> 老年
    age = random.randint(0, 100)
    print(age)
    if age<=3:
        print('幼儿')
    elif age<=12:
        print('儿童')
    elif age<=18:
        print('少年')
    elif age<=28:
        print('青年')
    else:
        print('老年')
    #2
    #幼儿
    
    # 练习2:成绩(grade)和操评(scrore)
    # 成绩大于4并且操评大于等于90 ---> 一等奖学金
    # 绩点在3.5到4,并且操评大于90 ----> 二等奖学金
    # 绩点在3到3.5,并操大于90  ----> 三等奖学金
    # 其他情况没有奖学金
    grade = 4
    scrore = 90
    if grade>=4 and scrore >= 90:
        print('一等奖学金')
    elif 4 > grade >= 3.5 and scrore >= 90:
        print('二等奖学金')
    elif 3 <= grade < 3.5 and scrore >= 90:
        print('三等奖学金')
    else:
        print('没有奖学金')  
    #一等奖学金
    

    5.if嵌套

    • 定义在分之结构中,我们可以if,elif或者else后面嵌套一个或者多个其他的if语句

    • 练习:

    #判断一个数是否是偶数,如果是打印'是偶数',
    #      并且判断这个偶数能不能被4整除,如果能打印'是4的倍数'否则打印'不是4的倍数'
    #      如果是奇数,打印奇数的最后一位 / 判断最后一位是否是1
    print('===============')
    num = random.randint(0,100)
    print(num)
    
    if num & 1 == 0:
        print('是偶数')
    
        # 判断是偶数的时候,是否能够被4整除
        if num % 4 == 0:
            print('是4的倍数')
        else:
            print('不是4的倍数')
    else:
        print('是奇数')
        last = num % 10   # 取个位上的数
        print(last)
    
        # 判断是奇数的时候最后一位是否是1
        if last == 1:
            print('最后一位是1')
    
    print('!!')
    #64
    #是偶数
    #是4的倍数
    #!!
    

    二、循环结构

    1.分类

    • 分类:
      python中的循环结构有两种:for循环和while循环

    • 作用:
      当某个操作/某段代码需要重复的执行的时候,就需要用到循环结构

    2.for循环结构

    • 语法:
    for 变量 in 序列:
        循环体
    
    • 说明:

      • for
        关键字,写法固定

      • 变量
        变量名,按照变量名要求命名

      • in
        关键字,写法固定

      • 序列
        要求是一个值,而且值必须一个序列(容器),比如:字符串、列表、字典、集合、元祖、迭代器、范围(Range)

      • 循环体
        和for保持一个缩进的代码段。循环体会被重复执行。循环体中可以写任何代码

    • 执行过程:让变量去序列中取值,一个一个的取,取完为止。每取一个值,执行一次循环体!

    • 例子:

    for x in 'abc':
        print(x)
    
    print(x)
    #a
    #b
    #c
    #c
    
    • 练习:
    # 练习:获取字符串'a78and71-2cd'中数字字符的个数
    print('===============')
    # 声明变量来保存数字字符的个数
    count = 0
    for char in 'a78and71-2cd':
        # 判断字符是否是数字
        if char.isdigit():
            # print(char)
            count += 1     # count = count + 1
    
    print(count)  
    #5
    
    • range函数用法:
      • a.range(n): 产生一个0 ~ n-1范围对应整数序列

      • b.range(m,n): 产生一个m ~ n-1范围对应的整数序列

      • c.range(m,n,step): 产生一个m ~ n-1中间隔step范围对应的整数序列

      • 注意:python2.x --> xrange python3.x --->range

      • 例子:

    # a.range(n): 产生一个0 ~ n-1范围对应整数序列
    print('===============')
    for num in range(10):
        print(num)
    #0
    #1
    #2
    #3
    #4
    #5
    #6
    #7
    #8
    #9
    
    # b.range(m,n): 产生一个m ~ n-1范围对应的整数序列
    print('===============')
    for num in range(10, 21):
        print(num)
    #10
    #11
    #13
    #14
    #15
    #16
    #17
    #18
    #19
    #20
    
    # c.range(m,n,step): 产生一个m ~ n-1中间隔step范围对应的整数序列
    print('==============')
    for num in range(1,10,2):
        print(num)
    #1
    #3
    #5
    #7
    #9
    

    3.for循环结构

    • 语法:
    while 条件语句:
        循环体
    
    • 说明:

      • while
        关键字,写法固定

      • 条件语句
        和if后面的条件语句要求一样,可以是任何有值的表达式(不能是赋值语句)

      • :
        写法固定

      • 循环体
        和for保持一个缩进的代码段。循环体会被重复执行。循环体中可以写任何代码

    • 执行过程:
      判断条件语句的结果是否为True,为True执行循环体。执行完循环体,再判断条件语句是否为True,为True又执行循环体...,依次类推,知道判断条件语句的结果为False,循环就结束**

    • 注意: while True: ----> 死循环

    • 例子:

    # 用while循环实现1+2+3+...+100
    num = 1
    sum1 = 0
    while num <= 100:
        # print(num)
        sum1 += num
        num += 1
    
    print(sum1)
    #5050
    
    • 练习:
    # 练习:求n! = 1*2*3*...*n
    n = 10
    num = 1
    sum1 = 1
    while num <= n:
        sum1 *= num
        num += 1
    print(sum1)  
    #3628800
    
    # 练习:用while循环获取字符'hello python'中的每个字符
    str1 = 'hello python'
    index = 0
    while index < len(str1):
        print(str1[index])
        index += 1
    #h
    #e
    #l
    #l
    #o
     
    #p
    #y
    #t
    #h
    #o
    #n
    

    4.使用场景

    1. 如果是不断的获取序列中的元素,直接使用for循环

    2. 如果循环次数确定,最好也使用for循环

    3. 死循环和循环次数不确定的时候最好使用while

    • 练习:
    # 练习:随机产生一个数字(0~100),不断的输入数字,直到输入的数字和产生的随机数相同为止。
    #      如果猜错了提示大了或者小
    import random
    
    # 产生一个随机数
    number = random.randint(0, 100)
    
    # 返回从键盘接收到的数据(输入的时候以回车结束),返回的数据类型是字符串
    in_num = input('请输入一个整数:')
    in_num = int(in_num)
    
    while in_num != number:
        if in_num > number:
            print('太大了,再小点')
        else:
            print('太小了,再大点')
    
        in_num = input('请输入一个整数:')
        in_num = int(in_num)
    
    print('恭喜你!猜对了:', number)
    

    5.break和continue和else

    1. continue
    • 作用:当遇到continue就结束当次循环直接进行下次循环的判断

    • 下次循环的判断:
      for -> 让变量取下一个值
      while -> 判断条件是否为True

    • 例子:

    for x in range(10):
        print(x)
        continue
        print(x*2)
    
    
    index = 1
    while index < 10:
        index += 1
        continue
        print('====')
    
    # 练习:计算1~100中非奇数的和 (使用continue)
    sum1 = 0
    for x in range(1,101):
        if x % 2 == 1:
            continue
    
        sum1 += x
    
    1. break
    • 作用:
      只要在循环中遇到break,整个循环直接结束。执行循环后面的其他语句
    • 例子:
    for x in range(1,10):
        print(x)
        break
        print('=====')
    print('#####')
    #1
    ######
    
    1. else
    • 使用方法:
    for 变量 in 序列:
        循环体
    else:
        代码块
    
    while 条件语句:
        循环体
    else:
        代码块
    
    • 作用:
      循环自然死亡后,执行else后面的代码。如果循环因为遇到break结束,else后边的代码块就不会执行
    • 例子
    for x in range(1,10):
        print(x)
        if x == 3:
            break
    else:
        print('结束了')
    #1
    #2
    #3
    

    作业

    作业图一

    解答:

    1. 打印2的1次方到2的20次方的值
    2. 数出0~100中能整除3或7,同时不是21的倍数的数的个数


      作业图二

    解答:

    1. 代码与结果:
    num1 = 0
    for x in range(1,101):
        num1 = num1 + x
    print(num1,num1/100)
    
    num = 1
    sum1 = 0
    while num <= 100:
        sum1 += num
        num += 1
    print(sum1,sum1/100)
    
    题1结果
    1. 代码与结果:
    sum=0 
    num=1 
    while num<=100:    
        if num % 3 == 0 :       
            sum += num    
        num+=1 
    print(sum)
    
    sum1 = 0
    for x in range(1,101):
        if x % 3 == 0 :
            sum1 += x
    print(sum1)
    
    题2结果
    1. 代码与结果:
    sum1 = 0 
    num = 1 
    while num<=100:    
        if num%7 :        
            sum1 += num   
        num+=1 
    print(sum1)
    
    sum1 = 0
    for x in range(1,101):
        if x % 7 :
            sum1 += x
    print(sum1)
    
    题3结果
    作业图三
    1. 代码与结果:
    import random
    num = random.randint(1, 8)
    a = 1
    b = 1
    c = 0
    if num == 1:
        print('第%d个数的值是%d'%(num,a))
    elif num == 2:
        print('第%d个数的值是%d'%(num,b))
    else:
        for i in range(3,num+1):
            b +=  a
            c = a
            a = b
            b = c
        print('第%d个数的值是%d'%(num,a))
    
    题一结果
    1. 代码与结果:
    count = 0
    for x in range(101,201):
        n = int(x**0.5)+1
        for y in range(2,n):
            if not x%y :
                break
        else:
            print('%d是素数'%(x))
            count +=1
    print(count)
    
    题二结果
    1. 代码与结果:
    for x in range(100,1000):
        a = x%10
        b = x//10%10
        c = x//100%10
    
        sum1 = a**3+b**3+c**3
        if sum1==x:
            print(x)
    
    题三结果
    1. 代码与结果:
    a=2
    b=1
    c=0
    for x in range(1,21):
        if x ==20:
            print('%d/%d'%(a,b))
        c = a
        a = a + b
        b = c
    
    
    题四结果
    1. 代码与结果:
    import random
    num = random.randint(0, 10000)
    print(num)
    str1 = str(num)
    sum1 = 0
    y = len(str1)
    for x in range(0,y):
        sum1 += 1
        while y > 0:
            y-=1
            print(str1[y])
    print(sum1)
    
    题五结果

    相关文章

      网友评论

          本文标题:day5-循环与分支

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