(六)流程控制与条件判断

itmahy
itmahy
发布于 2024-01-19 / 33 阅读
0
0

(六)流程控制与条件判断

1. 流程控制语句

Python 代码在执行的时候是按照自上向下顺序执行的。通过流程控制语句我们可以改变代码的执行顺序,也可以让指定的程序重复执行。

分为两大类:

  • 条件判断语句

  • 循环语句

2. 条件判断语句

  • if: 如果条件表达式结果为 True,则执行,如果结果为 False,则不执行

    if 条件表达式 :   语句
        
    if 条件表达式 : 
        代码块:保存着一组代码,要么都执行,要么都不执行,注意代码的缩进
        
    # ====================
    age = 20
    if age >= 18 : print("哎吆,成年了")
    ​
    >>>结果:
    哎吆,成年了
    ​
    # ====================
    if age >= 18 :
        print("哎吆,成年了,这是代码块中的")
        print("aiyao,is very good!!!")
        
    >>>结果:
    哎吆,成年了,这是代码块中的
    aiyao,is very good!!!
    ​
    # ====================
    # 可以使用逻辑运算符来连接多个条件
    if age >= 18 and age < 30 :
        print("成年了,但是还是个娃娃")    
        
    >>>结果:
    成年了,但是还是个娃娃
    ​
    # 
    if 18 <= age < 30 :
        print("成年了,但是还是个娃娃")  
    ​
    >>>结果:
    成年了,但是还是个娃娃
  • if-else

    if 条件表达式 :
        代码块1
    else :
        代码块2

    如果条件表达式为True,则执行 代码块1,如果为False,则执行 代码块2

    age = input('请输入年龄:')
    age = int(age)
    ​
    if age >= 18:
        print('你已经成年了')
    else:
        print('你还未成年')
  • if-elif-else

    if 条件表达式1 :
        代码块1
    elif 条件表达式 :
        代码块2
    else :
        代码块3
        
    # =============
    age = input('请输入年龄:')
    age = int(age)
    ​
    if age >= 18 and age <20:
        print('你已经成年了')
    elif age >=20 and age <= 30 :
        print('开始就业了...')
    elif age > 30 :
        print('哎...')
    else:
        print('你还未成年')
  • 练习

    # 判断奇数还是偶数
    num = int(input('请输入一个整数...'))
    if num % 2 == 0 :
        print(f"{num}是一个偶数")
    else :
        print(f'{num}是一个奇数')
        
    # 判断是否未闰年
    year = int(input('请输入年份:'))
    ​
    # 这个可以看看运算符的优先级
    if year % 4 == 0 and year % 100 != 0 or year % 400 == 0  : 
        print('是闰年')
    else : 
        print('是平年')

3. input 函数

input() 函数调用之后,程序立即暂停,等待用户输入,用户输入完成之后点击回车程序才继续向下执行。用户输入完成之后,其输入的内容会以返回值的形式返回。input() 的返回值是一个字符串。input()也可以暂时阻止程序运行。

print("等待用户输入...")
content = input();
print(content)
​
​
content = input("等待用户输入...")
print(content)
​
>>>结果:
等待用户输入...
一个测试啊
一个测试啊
等待用户输入...一个测试啊
一个测试啊

4. 循环语句

循环语句可以使指定的代码块重复执行指定的次数

  • while

    while 条件表达式 :
        代码块
        
    while 条件表达式 :
        代码块
    else :
        代码块

    先判断条件表达式结果的布尔值,如果为True执行,如果为False则不执行,但是会执行 else 中的代码

    num = 1
    while num <= 10 : 
        print('一个男人')
        num += 1
    else : 
        print('执行完了')
        
    # 求100以内所有奇数的和
    num = 0
    result = 0
    while num < 100 :
        if num % 2 != 0 :
            result += num
        num += 1
    else :
        print(f'result 的值是:{result}')
    ​
    >>>结果:
    result 的值是:2500
    ​
    # 优化之后
    num = 1
    result = 0
    ​
    while num < 100:
        result += num
        num += 2
        
    print(f'result 的值是:{result}')
    ​
    >>>结果:
    result 的值是:2500
    ​
    # 求100以内7的倍数之和
    num = 7
    result = 0
    while num < 100:
        result += num
        num += 7
    ​
    print(f'result的值是:{result}')
    ​
    >>>结果:
    result的值是:735
    ​
    # 水仙花数是指一个 n 位数(n >=3 ),它的每个位上的数字的 n 次幂之和于它本身(例如 :1**3+5**3+ 3**3 = 153。
    # 求1000以内所有的水仙花数
    num = 100
    ​
    while num < 1000 :
        # 求百位数
        hundreds_place = num // 100
        # 求十位数
        # tens_digit = num // 10 % 10
        # 下面的是先求出后面的两位数,再整除10
        tens_digit = (num - hundreds_place * 100) // 10
        # 求个位数
        units_digit = num % 10
    ​
        # print(num, hundreds_place, tens_digit, units_digit)
    ​
        sum_num = hundreds_place ** 3 + tens_digit ** 3 + units_digit ** 3
    ​
        if sum_num == num:
            print('是水仙花数的是:',num)
            
        num += 1
    ​
    >>>结果:
    是水仙花数的是: 153
    是水仙花数的是: 370
    是水仙花数的是: 371
    是水仙花数的是: 407
    ​
    # 获取用户输入的任意数,判断其是否是质数 质数是只能被1和它自身整除的数,1不是质数也不是合数
    num = int(input("请输入大于1的整数:"))
    init_num= 2
    flag = False
    while init_num < num :
        if num % init_num == 0:
            flag = True
        init_num += 1
    ​
    if flag :
        print(f'{num}是合数')
    else:
        print(f'{num}是质数')
  • 循环嵌套

    # print('*',end='') 中 end = ''表示打印的时候不换行
    num = 0
    while num < 10 :
        i = 0
        while i < 10 :
            print('*',end='')
            i += 1
        print()
        num += 1
        
    >>>结果:
    **********
    **********
    **********
    **********
    **********
    **********
    **********
    **********
    **********
    **********
    
    # print('*',end='') 中 end = ''表示打印的时候不换行
    num = 0
    while num < 10 :
        i = 0
        while i < num + 1:
            print('*',end='')
            i += 1
        print()
        num += 1
        
    >>>结果:
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********
    
    # print('*',end='') 中 end = ''表示打印的时候不换行
    num = 0
    while num < 10 :
        i = 10
        while i > num :
            print('*',end='')
            i -= 1
        print()
        num += 1
        
    >>>结果:
    **********
    *********
    ********
    *******
    ******
    *****
    ****
    ***
    **
    *
    
    # 打印乘法口诀表,为了方便显示,这里只打印到6的乘法口诀
    line_num = 1
    while line_num <= 6 :
        column_num = 1
        while column_num < line_num + 1:
            print(f'{line_num} * {column_num} = {line_num * column_num} \t',end='' )
            column_num += 1
        print()
        line_num += 1
        
    >>>结果:
    1 * 1 = 1 
    2 * 1 = 2       2 * 2 = 4
    3 * 1 = 3       3 * 2 = 6       3 * 3 = 9
    4 * 1 = 4       4 * 2 = 8       4 * 3 = 12      4 * 4 = 16
    5 * 1 = 5       5 * 2 = 10      5 * 3 = 15      5 * 4 = 20      5 * 5 = 25
    6 * 1 = 6       6 * 2 = 12      6 * 3 = 18      6 * 4 = 24      6 * 5 = 30      6 * 6 = 36
    
    # 求100以内的所有质数
    num = 2
    while num <= 100 :
        i = 2
        flag = True
        while i < num:
            if num % i == 0 :
                flag = False
            i += 1
        if flag :
            print(num)
        num += 1
    
    >>>结果:
    2
    3
    5
    7
    11
    13
    17
    19
    23
    29
    31
    37
    41
    43
    47
    53
    59
    61
    67
    71
    73
    79
    83
    89
    97
    
    # 优化
    # 求100以内的所有质数
    num = 2
    while num < 100000 :
        i = 2
        flag = True
        while i < num ** 0.5:
            if num % i == 0 :
                flag = False
                break
            i += 1
        if flag :
            print(num)
        num += 1
  • breakcontinue

    • break:用来立即退出(终止)循环语句,包括 else

    • continue:跳过当次循环,继续下次循环

    • 它们都是对离它们最近的循环起作用

    • pass是占位,表示通过的意思,没有实际意义,只是用来替代没有写完的条件判断跟循环语句

  • for循环

    语法:for [变量名] in [被遍历的序列]


评论