Python基础--流程控制语句--练习实例

1、条件判断if-elif-else,没什么好讲,举一个例子

# if-elif-else语句
# 语法:
#   if 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   elif 条件表达式 :
#       代码块
#   else :
#       代码块
#       
# 执行流程:
#   if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
#       如果表达式的结果为True,则执行当前代码块,然后语句结束
#       如果表达式的结果为False,则继续向下判断,直到找到True为止
#       如果所有的表达式都是False,则执行else后的代码块
#   if-elif-else中只会有一个代码块会执行

age = 68

if age >= 18 and age < 30 :
    print('你已经成年了!')
elif age >= 30 and age < 60 :
    print('你已经中年了!')
elif age >= 60 :
    print('你已经退休了!')

2、循环语句--先介绍while循环

# 循环语句
# 循环语句可以使指定的代码块重复指定的次数
# 循环语句分成两种,while循环 和 for循环
# while循环
# 语法:
#   while 条件表达式 :
#       代码块
#   else :
#       代码块
# 执行流程:
#   while语句在执行时,会先对while后的条件表达式进行求值判断,
#       如果判断结果为True,则执行循环体(代码块),
#       循环体执行完毕,继续对条件表达式进行求值判断,以此类推,
#       直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块

i = 0
while i < 10 :
    i += 1
    print(i,'hello')
else :
    print('else中的代码块')

3、循环嵌套案例

i = 0
while i < 5:
    j = 0
    while j < i + 1:
        print("* ",end='')
        j += 1
    print()
    i += 1

结果如下:

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

4、九九乘法表

# 练习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()

5、质数练习

# 求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

6、break和continue

# break
# break可以用来立即退出循环语句(包括else)
# continue
# continue可以用来跳过当次循环
# break和continue都是只对离他最近的循环起作用
# pass
# pass是用来在判断或循环语句中占位的

# 创建一个5次的循环
# i = 0
# while i < 5:
#     if i == 3:
#         break
#     print(i)
#     i += 1
# else :
#     print('循环结束')

# i = 0
# while i < 5:
#     i += 1
#     if i == 2:
#         continue
#     print(i)
# else :
#     print('循环结束')

i = 0
if i < 5:
    pass

7、质数练习优化

# 模块,通过模块可以对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 , "秒")

8、《唐僧大战白骨精》小游戏练习

# 显示欢迎信息
print('-'*20,'欢迎光临《唐僧大战白骨精》','-'*20)

# 显示身份选择的信息
print('请选择你的身份:')
print('\t1.唐僧')
print('\t2.白骨精')
# 游戏的身份选择
player_choose = input('请选择[1-2]:')

# 打印一条分割线
print('-'*66)

# 根据用户的选择来显示不同的提示信息
if player_choose == '1':
    # 选择1
    print('你已经选择了1,你将以->唐僧<-的身份来进行游戏!')
elif player_choose == '2':
    # 选择2
    print('你竟然选择了白骨精,太不要脸了,你将以->唐僧<-的身份来进行游戏!')
else :
    # 选择3
    print('你的输入有误,系统将自动分配身份,你将以->唐僧<-的身份来进行游戏!')

# 进入游戏

# 创建变量,来保存玩家的生命值和攻击力
player_life = 2 # 生命值
player_attack = 2 # 攻击力

# 创建一个变量,保存boss的生命值和攻击力
boss_life = 10
boss_attack = 10

# 打印一条分割线
print('-'*66)
# 显示玩家的信息(攻击力、生命值)
print(f'唐僧,你的生命值是 {player_life} , 你的攻击力是 {player_attack}')

# 由于游戏选项是需要反复显示的,所以必须将其编写到一个循环中
while True :
    # 打印一条分割线
    print('-'*66)
    # 显示游戏选项,游戏正式开始
    print('请选择你要进行的操作:')
    print('\t1.练级')
    print('\t2.打BOSS')
    print('\t3.逃跑')
    game_choose = input('请选择要做的操作[1-3]:')

    # 处理用户的选择
    if game_choose == '1' :
        # 增加玩家的生命值和攻击力
        player_life += 2
        player_attack += 2
        # 显示最新的信息
        # 打印一条分割线
        print('-'*66)
        # 显示玩家的信息(攻击力、生命值)
        print(f'恭喜你升级了!,你现在的生命值是 {player_life} , 你的攻击力是 {player_attack}')
    elif game_choose == '2' :
        # 玩家攻击boss
        # 减去boss的生命值,减去的生命值应该等于玩家的攻击力
        boss_life -= player_attack 

        # 打印一条分割线
        print('-'*66)
        print('->唐僧<- 攻击了 ->白骨精<-')
        # 检查boss是否死亡
        if boss_life <= 0 :
            # boss死亡,player胜利,游戏结束
            print(f'->白骨精<-受到了 {player_attack} 点伤害,重伤不治死了,->唐僧<-赢得了胜利!')
            # 游戏结束
            break

        # boss要反击玩家
        # 减去玩家的生命值
        player_life -= boss_attack 
        print(' ->白骨精<- 攻击了 ->唐僧<-')
        # 检查玩家是否死亡
        if player_life <= 0 :
            # 玩家死亡
            print(f'你受到了 {boss_attack} 点伤害,重伤不治死了!GAME OVER')
            # 游戏结束
            break
    elif game_choose == '3' :
        # 打印一条分割线
        print('-'*66)
        # 逃跑,退出游戏
        print('->唐僧<-一扭头,撒腿就跑!GAME OVER')
        break
    else :
        # 打印一条分割线
        print('-'*66)
        print('你的输入有误,请重新输入!')

 

发布了71 篇原创文章 · 获赞 5 · 访问量 6441
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章