zoukankan      html  css  js  c++  java
  • Python流程控制语句

    第三章 流程控制语句

    简介

    Python代码在执行时是按照自上向下顺序执行的。
    通过流程控制语句,可以改变程序的执行顺序,也可以让指定的程序反复执行多次
    流程控制语句分成两大类:条件判断语句,循环语句
    

    条件判断语句(if语句)

    # 条件判断语句(if语句)
    # 语法:if 条件表达式 : 
    #           代码块
    # 执行的流程:if语句在执行时,会先对条件表达式进行求值判断,
    #   如果为True,则执行if后的语句
    #   如果为False,则不执行
    # 默认情况下,if语句只会控制紧随其后的那条语句,如果希望if可以控制多条语句,
    #   则可以在if后跟着一个代码块
    # 代码块
    #   代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
    #   代码块就是一种为代码分组的机制
    #   如果要编写代码块,语句就不能紧随在:后边,而是要写在下一行
    #   代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
    #   鲁迅说过:
    #       世上本来没有路,走的人多了自然就有了!
    #       xxxx
    #   yyyy....
    # 缩进有两种方式,一种是使用tab键,一种是使用空格(四个)
    #   Python的官方文档中推荐我们使用空格来缩进
    #   Python代码中使用的缩进方式必须统一
    #   "translate_tabs_to_spaces": true,     
    
    # if False : print('你猜我出来么?')
    
    num = 10
    # if num > 10 : print('num比10大!')
    # print('谁也管不了我')
    
    if False :
        print(123)
        print(456)
        print(789)
        print(101112)
    # print('hello')
    
    num = 28
    
    # 可以使用逻辑运算符来连接多个条件,
    #   如果希望所有条件同时满足,则需要使用and
    #   如果希望只要有一个条件满足即可,则需要使用or
    # if num > 10 and num < 20 :
    #     print('num比10大,num比20小!')
    
    # if 10 < num < 20 :
    #     print('num比10大,num比20小!')
    
    # 在命令行让用户输入一个用户名,获取用户输入,并进行判断
    # 如果用户输入的用户名是admin,则显示欢迎管理员光临
    # 如果用户输入的是其他的用户名,则什么也不做
    

    input函数

    # input()函数
    # 该函数用来获取用户的输入
    # input()调用后,程序会立即暂停,等待用户输入
    #   用户输入完内容以后,点击回车程序才会继续向下执行
    #   用户输入完成以后,其所输入的的内容会以返回值得形式返回
    #   注意:input()的返回值是一个字符串
    #   input()函数中可以设置一个字符串作为参数,这个字符串将会作为提示文字显示
    # a = input('请输入任意内容:')
    # print('用户输入的内容是:',a)
    # input()也可以用于暂时阻止程序结束
    
    # 获取用户输入的用户名
    username = input('请输入你的用户名:')
    # 判断用户名是否是admin
    if username == 'admin' :
        print('欢迎管理员光临!')
    

    if-else

    # 让用户在控制台中输入一个年龄
    # age = int(input('请输入你的年龄:'))
    
    # 如果用户的年龄大于18岁,则显示你已经成年了
    # if age >= 18 :
    #     print('你已经成年了~~~')
    
    # if-else语句
    # 语法: 
    #   if 条件表达式 :
    #       代码块
    #   else :
    #       代码块
    # 执行流程:
    #   if-else语句在执行时,先对if后的条件表达式进行求值判断
    #       如果为True,则执行if后的代码块
    #       如果为False,则执行else后的代码块
    
    age = 7
    if age > 17 :
        print('你已经成年了~~')
    else :
        print('你还未成年~~')
    

    if-elif-else

    # if-elif-else语句
    # 语法:
    #   if 条件表达式 :
    #       代码块
    #   elif 条件表达式 :
    #       代码块
    #   elif 条件表达式 :
    #       代码块
    #   elif 条件表达式 :
    #       代码块
    #   else :
    #       代码块
    #       
    # 执行流程:
    #   if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
    #       如果表达式的结果为True,则执行当前代码块,然后语句结束
    #       如果表达式的结果为False,则继续向下判断,直到找到True为止
    #       如果所有的表达式都是False,则执行else后的代码块
    #   if-elif-else中只会有一个代码块会执行
    
    age = 210
    
    # if age > 200 :
    #     print('活着可真没劲呢!')
    # elif age > 100 :
    #     print('你也是老大不小了!')
    # elif age >= 60 :
    #     print('你已经退休了!')
    # elif age >= 30 :
    #     print('你已经是中年了!')
    # elif age >= 18 :
    #     print('你已经成年了!')
    # else :
    #     print('你还是个小孩!')
    
    age = 68
    
    if age >= 18 and age < 30 :
        print('你已经成年了!')
    elif age >= 30 and age < 60 :
        print('你已经中年了!')
    elif age >= 60 :
        print('你已经退休了!')
    

    if练习

    # 练习1:
    #     编写一个程序,获取一个用户输入的整数。然后通过程序显示这个数是奇数还是偶数。
    # 获取用户输入的整数
    # num = int(input('请输入一个任意的整数:'))
    
    # # 显示num是奇数还是偶数
    # if num % 2 == 0 :
    #     print(num , "是偶数")
    # else :
    #     print(num , '是奇数')
    
    
    
    
    
    
    # 练习2:
    #     编写一个程序,检查任意一个年份是否是闰年。
    #     如果一个年份可以被4整除不能被100整除,或者可以被400整除,这个年份就是闰年
    # year = int(input('请输入一个任意的年份:'))
    # # 检查这个年份是否是闰年
    # # year % 4 == 0 and year % 100 != 0 or year % 400 == 0
    # if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 :
    #     print(year,'是闰年')
    # else :
    #     print(year,'是平年')
    
    
    
    
    
    # 练习3:
    #     我家的狗5岁了,5岁的狗相当于多大年龄的人呢?
    #     其实非常简单,狗的前两年每一年相当于人类的10.5岁,然后每增加一年就增加四岁。
    #     那么5岁的狗相等于人类的年龄就应该是10.5+10.5+4+4+4 = 33岁 
    
    #     编写一个程序,获取用户输入的狗的年龄,然后通过程序显示其相当于人类的年龄。
    #     如果用户输入负数,请显示一个提示信息
    
    # dog_age = float(input('请输入狗的年龄:'))
    # like_person_age = 0
    # 检查用户输入的是否是负数
    # if dog_age < 0 :
    #     print('你的输入不合法!')
    # # 如果狗的年龄在两岁以下(包含两岁)
    # elif dog_age <= 2 :
    #     # 直接将当前的年龄乘以10.5
    #     like_person_age = dog_age * 10.5
    # # 如果狗的年龄在两岁以上
    # else :
    #     # 计算前两岁相当于人类的年纪
    #     like_person_age = 2 * 10.5
    #     # 计算超过两岁的部分相对于人类的年纪,并进行相加
    #     like_person_age += ( dog_age - 2 ) * 4
    
    # if dog_age > 0 :
    #     print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的人')
    #     
    
    # 在if也可以去嵌套if,代码块是可以嵌套的,每增加一个缩进的级别,代码块就低一级
    # 检查用户的输入是否合法
    # if dog_age > 0 :
    #     # 如果狗的年龄在两岁以下(包含两岁)
    #     if dog_age <= 2 :
    #         # 直接将当前的年龄乘以10.5
    #         like_person_age = dog_age * 10.5
    #     # 如果狗的年龄在两岁以上
    #     else :
    #         # 计算前两岁相当于人类的年纪
    #         like_person_age = 2 * 10.5
    #         # 计算超过两岁的部分相对于人类的年纪,并进行相加
    #         like_person_age += ( dog_age - 2 ) * 4
    
    #     print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的人')
    # else :
    #     print('请输入一个合法的年龄!')
    
    
    
    
    
    # 练习4:
    #     从键盘输入小明的期末成绩:
    #         当成绩为100时,'奖励一辆BMW'
    #         当成绩为[80-99]时,'奖励一台iphone'
    #         当成绩为[60-79]时,'奖励一本参考书'
    #         其他时,什么奖励也没有
    
    # 获取小明的成绩
    # score = float(input('请输入你的期末成绩(0-100):'))
    
    # # 打印分割线
    # print("="*40)
    
    # # 检查用户的输入是否合法
    # if 0 <= score <= 100 :
    #     # 判断发给的奖励
    #     if score == 100 :
    #         print('宝马,拿去玩!')
    #     elif score >= 80 :
    #         print('苹果手机,拿去玩!')
    #     elif score >= 60 :
    #         print('参考书,拿去玩!')
    #     else :
    #         print('棍子一根!')
    # else :
    #     # 用户输入的不合法,弹出一个友好提示
    #     print('你输入的内容不合法,拉出去毙了!')
    
    
    
    
    
    
    
    # 练习5:
    #     大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
    #         高:180cm以上; 富:1000万以上; 帅:500以上;
    #         如果这三个条件同时满足,则:'我一定要嫁给他'
    #         如果三个条件有为真的情况,则:'嫁吧,比上不足,比下有余。'
    #         如果三个条件都不满足,则:'不嫁!'
    
    # 获取用户的三个数据,身高、财富、颜值
    height = float(input('请输入你的身高(厘米):'))
    money = float(input('请输入你的财富(万):'))
    face = float(input('请输入你的颜值(平方厘米):'))
    
    # 判断到底嫁不嫁
    # 如果这三个条件同时满足,则:'我一定要嫁给他'
    if height > 180 and money > 1000 and face > 500 :
        print('我一定要嫁给他!')
    # 如果三个条件有为真的情况,则:'嫁吧,比上不足,比下有余。'
    elif height > 180 or money > 1000 or face > 500 :
        print('嫁吧,比上不足,比下有余。')
    # 如果三个条件都不满足,则:'不嫁!'
    else :
        print('不嫁!')
    
    

    循环语句

    # 循环语句
    # 循环语句可以使指定的代码块重复指定的次数
    # 循环语句分成两种,while循环 和 for循环
    # while循环
    # 语法:
    #   while 条件表达式 :
    #       代码块
    #   else :
    #       代码块
    # 执行流程:
    #   while语句在执行时,会先对while后的条件表达式进行求值判断,
    #       如果判断结果为True,则执行循环体(代码块),
    #       循环体执行完毕,继续对条件表达式进行求值判断,以此类推,
    #       直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块
    
    # 条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!
    # while True :
    #     print('hello')
    
    # 循环的三个要件(表达式)
    # 初始化表达式,通过初始化表达式初始化一个变量
    # i = 0
    
    # # 条件表达式,条件表达式用来设置循环执行的条件
    # while i < 10 :
    #     print(i)
    #     # 更新表达式,修改初始化变量的值
    #     i += 1
    
    # 创建一个执行十次的循环
    i = 0
    while i < 10 :
        i += 1
        print(i,'hello')
    else :
        print('else中的代码块')
    

    打印99乘法表

    # 练习1:
    #   打印99乘法表
    #   1*1=1
    #   1*2=2 2*2=4
    #   1*3=3 2*3=6 3*3=9
    #   ...                 9*9=81
    
    # 创建一个外层循环来控制图形的高度
    i = 0
    while i < 9:
        i += 1
        
        # 创建一个内层循环来控制图形的宽度
        j = 0
        while j < i:
            j += 1
            print(f"{j}*{i}={i*j} ",end="")
    
        print()
    

    质数练习

    # 求100以内所有的质数
    # 创建一个循环,求1-100以内所有的数
    i = 2
    while i <= 100:
        
        # 创建一个变量,记录i的状态,默认认为i是质数
        flag = True
    
        # 判断i是否是质数
        # 获取所有可能成为i的因数的数
        j = 2 
        while j < i:
            # 判断i能否被j整除
            if i % j == 0:
                # i能被j整除,证明i不是质数,修改flag为False
                flag = False
            j += 1
        # 验证结果并输出
        if flag :
            print(i)   
    
        i += 1
    

    break与continue

    # 求100以内所有的质数
    # 创建一个循环,求1-100以内所有的数
    i = 2
    while i <= 100:
        
        # 创建一个变量,记录i的状态,默认认为i是质数
        flag = True
    
        # 判断i是否是质数
        # 获取所有可能成为i的因数的数
        j = 2 
        while j < i:
            # 判断i能否被j整除
            if i % j == 0:
                # i能被j整除,证明i不是质数,修改flag为False
                flag = False
            j += 1
        # 验证结果并输出
        if flag :
            print(i)   
    
        i += 1
    

    优化

    # 模块,通过模块可以对Python进行扩展
    # 引入一个time模块,来统计程序执行的时间
    from time import *
    # time()函数可以用来获取当前的时间,返回的单位是秒
    # 获取程序开始的时间
    # 优化前:
    #   10000个数 12.298秒
    #   100000个数 没有结果
    # 第一次优化
    #   10000个数 1.577秒
    #   100000个数 170.645秒
    # 第二次优化
    #   10000个数 0.068秒
    #   100000个数 1.646秒
    #
    # 36的因数
    #   2 18
    #   3 12
    #   4 9
    #   6 6
    #   
    begin = time()
    
    i = 2
    while i <= 100000:
        flag = True
        j = 2 
        while j <= i ** 0.5:
            if i % j == 0:
                flag = False
                # 一旦进入判断,则证明i一定不是质数,此时内层循环没有继续执行的必要
                # 使用break来退出内层的循环
                break
            j += 1
        if flag :
            # print(i)  
            pass
        i += 1
    
    # 获取程序结束的时间
    end = time()
    
    # 计算程序执行的时间
    print("程序执行花费了:",end - begin , "秒")
    

    综合练习(小游戏)

    # 显示欢迎信息
    print('_'*20,'欢迎光临《oldxu大战oldwang》 ','_'*20)
    
    # 显示身份信息
    print('请选择你的身份: ')
    print('	1.oldwang ')
    print('	2.oldxu ')
    
    #游戏身份选择
    playear_choose = input('请选择[1-2]: ')
    
    #为了显示好看打印一条分割线
    print('_'*66)
    
    #根据用户选择来显示不同的提示信息
    if playear_choose == '1':
        #选择1
        print('你已经选择了1用户,你将以oldwang的身份来进行游戏! ')
    elif playear_choose == '2':
        #选择2
        print('你已经选择了2用户,你将以oldxu身份进行游戏: ')
    
    #进入游戏
    #创建变量,保存玩家的晟生命力和攻击力
    playear_life = 2 #生命值
    playear_attack =2 #攻击力
    
    #创建一个变量来保存boss的生命力和攻击力
    boss_life = 10
    boss_attack = 10
    
    #打印一条分割线
    print('_'*66)
    
    #显示玩家的信息(攻击力,生命值)
    print(f'oldwang, 你的生命值是{playear_life} , 你的攻击力是{playear_attack}')
    
    #由于游戏选项是需要反复显示的,所以必须将其编写到一个循环中
    while True :
        #打印分割线
        print('_'*66)
        #显示游戏选项游戏正式开始
        print('请选择你要进行的操作: ')
        print('	1.练级')
        print('	2.打boss')
        print('	3.打不过,我要溜')
        game_choose = input('请选择你要进行的操作:[1-3] ')
    
        #进行选择处理
        if game_choose == '1' :
            #增加玩家的生命值和攻击力
            playear_life += 2
            playear_attack += 2
    
            #显示最新信息
            #打印分割线
            print('_'*66)
    
            #显示玩家的信息(攻击力、生命值)
            print(f'恭喜你升级了! ,你现在的生命值是 {playear_life} , 你的攻击力是 {playear_attack}')
        elif game_choose == '2' :
            # 玩家攻击boss
            # 减去boss的生命值,减去的生命值应该等于玩家的攻击力
            boss_life -= playear_attack 
    
    
            # 打印一条分割线
            print('-'*66)
            print('->oldwang<- 给与 ->oldxu<- 重击')
            #检查boss是否死亡
            if boss_life <= 0 :
                #boss死亡,player胜利,游戏结束
                print(f'->oldxu<-受到了 {playear_attack} 点伤害,已经over了,->oldwang<-赢得了本场比赛胜利!')
                #游戏结束
                break
    
            # boss要反击玩家
            # 减去玩家的生命值
            playear_life -= boss_attack
            print(' ->oldxu<- 攻击了 ->oldwang<-')
            #检查玩家是否死亡
            if playear_life <= 0 :
                #玩家死亡
                print(f'你受到了 {boss_attack} 点伤害,over')
                #游戏结束
                break
            elif game_choose == '3' :
                # 打印一条分割线
                print('-'*66)
                # 逃跑,退出游戏
                print('对不起,你逃跑了,所以系统判定同志你没有奉献精神,over')
                break
    
        else :
            #打印分割线
            print('_'*66)
            print('你的输入有误,请重新输入!如果对本游戏存在意见或者建议请联系微信:18419102931')
    

  • 相关阅读:
    少年中国说--正能量传播
    刚刚加入程序员的行列,希望通过博客的形式记录自己在这个领域的点点滴滴。同时分享自己的心得体会。
    java中的路径问题(getResourceAsStream/tomcat/maven/getContextpath)等各种路径问题
    java的jdbc
    maven的插件
    maven的仓库
    java9新特性
    java8新特性
    java的网络编程
    java的多线程juc
  • 原文地址:https://www.cnblogs.com/wangyongqiang/p/12237346.html
Copyright © 2011-2022 走看看