Cris 复习Python日记(三):循环语句

版权声明:转载请注明出处~ 摸摸博主狗头 https://blog.csdn.net/cris_zz/article/details/83104295

零、序

台上书院修竹掩窗牖,
窗下唱一出玉佩赠友。
少年相识偕游,曾契金兰鸡黍,
经年竟不识枕边青衣水袖。

台下客笑谈旧年掌故,
写书人曾苦沈园消瘦。
病中满纸荒唐,字字痴情磨就,
且听此段佳人欲语还休:

“君去归来须三秋,
应忘重山尽处桃李旧。
余我争如江楼倚门人,
候君再同游。”

墙边古稀人满斟新酒,
痛饮时低问季子安否。
四十年冰雪重,闻此折犹泪透,
且恨春风空绝塞鸿雁锦书。

笑魑魅未觉若兰锦绣,
只留桃李寄飘零日久。
平生万种凄凉,未悔当年断袖,
恰如此刻伶人唱尽折柳:

“一别生死难相守,
从此夜雨江湖无故旧。
若惆怅应洒酒对归舟,
如我方回首。”

“此身且去且淹留,
不过还望老来一邂逅。
而今夜雨江湖皆陈酒,
问君归来否?”

摘自·网易云音乐《夜雨陈酒》·歌词

一、while 循环

# while 循环
# while 循环:
# 语法:while 条件表达式:
#               代码块
# while True 将会造成死循环!

# 循环的三个要点:1.变量初始化表达式;2.变量条件表达式;3.变量更新表达式
# 创建一个执行10次的循环
# num = 0
# while num<10:
#     num +=1
#     print(num)

# 练习1:
#     求100以内所有的奇数之和

# num = 0
# result = 0
# while num < 100:
#     num += 1
#     if num % 2 != 0:
#         result += num
# print(result)   # 52500

# 练习2:
#     求100以内所有7的倍数之和,以及个数
num = 7
result = 0
count = 0
while num < 100:
    result += num
    count += 1
    num += 7
print(f'100以内所有7的倍数之和为:{result},个数是:{count}')

# 练习3:
#     水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1**3 + 5**3 + 3**3 = 153)。
#     求1000以内所有的水仙花数
# 注意,和java 不同的是,Python具有 // 整除,以及/ 得到都是浮点数

num = 100
while num < 1000:
    if ((num % 10)**3) + ((num // 100)**3) + ((num % 100 // 10)**3) == num:
        print(num)
    num += 1

# 练习4:
#     获取用户输入的任意数,判断其是否是质数。质数是只能被1和它自身整除的数,1不是质数也不是合数。
# 开放得到的结果都是小数
# print(17**0.5)    # 4.1232312

num = int(input('请输入任意大于1的整数'))
if num <= 1:
    print('输入错误!')
else:
    count = 1
    flag = True
    while count <= int(num**0.5):
        count += 1
        if num % count == 0:
            print(num, '不是质数')
            flag = False
            break
    if flag:
        print(num, '是质数')

二、嵌套循环

from time import *
# 循环的嵌套
# 练习1:
#     打印99乘法表
#     1*1=1
#     1*2=2 2*2=4
#     1*3=3 2*3=6 3*3=9
#     ...                 9*9=81
hang = 1
while hang <= 9:
    num = 1
    while num <= hang:
        # 可以通过命令参数(end)的形式对print()函数的结束符进行设置
        print(f'{num}*{hang}={num * hang}', end=' ')
        num += 1
    print()
    hang += 1

# 练习2:
#     求1000以内所有的质数


def isPrime(num):
    if num <= 1:
        print('输入错误!')
    else:
        count = 1
        while count <= int(num**0.5):
            count += 1
            if num % count == 0:
                return False
        return True


start = time()
num = 2
while num < 10000:
    if isPrime(num):
        print(num, '是质数')
    num += 1
print('程序执行了', time() - start, "秒")

# break 用于立即退出循环语句(包括else);continue 用于跳过当次循环
# break 和 continue 默认只对最近的循环起作用
# pass 用于代码占位,没有任何实际意义
i = 1
while i < 5:
    if i == 3:
        break
    print(i)
    i += 1
# else:         # break 影响到这条else 语句不执行
#     print('james')
print("cris")   # 这条普通语句执行

三、小 case:唐僧和白骨精的爱情故事

要求如下:

    1、身份选择
        ① 显示提示信息
            欢迎光临 xxx 游戏!
            请选择你的身份:
                1.xxx
                2.xxx
            请选择:x
        ② 根据用户选择来分配身份(显示不同的提示消息)  
            1.---
            2.---
            3.---  

    2、游戏进行
        ① 显示玩家的基本信息(攻击力 生命值)
        ② 显示玩家可以进行的操作:
            1、练级
                - 提升玩家的攻击力和生命值
            2、打BOSS
                - 玩家对BOSS进行攻击,玩家要攻击BOSS,BOSS对玩家进行反击
                - 计算BOSS是否被玩家消灭,玩家是否被BOSS消灭
                - 游戏结束
            3、逃跑
                - 退出游戏,显示提示信息,游戏结束!

代码如下:

print('===================欢迎来到游戏:《唐僧大战白骨精》=================')
print('''请选择你的身份:
            1. 唐僧
            2. 白骨精''')
num = int(input('请选择(1-2):'))
if num == 1:
    print('你已经选择了唐僧,开始游戏吧!')
elif num == 2:
    print('卧槽~要不要脸,还选白骨精,不行不行,还是给你分配个唐僧')
else:
    print('没有眼睛?乱选还是给你分配个唐僧')
life = 2
attack = 2
monster_life = 10
monster_attack = 6
print(f'你的身份现在是唐僧,你的生命值是:{life},你的攻击力是:{attack}')
print('-------------------------------')


def printMessage():
    return int(input('''请选择你要做的操作:
                1. 练级
                2. 打Boss
                3. 逃跑
                请选择:'''))


while True:
    num = printMessage()
    if num == 1:
        life += 2
        attack += 2
        print(f'恭喜你,唐僧!升级了!你当前的生命值是:{life},你的攻击力是:{attack}')
    elif num == 2:
        monster_life -= attack
        if monster_life <= 0:
            print('唐僧真牛逼,砍死了白骨精!game over')
            break
        life -= monster_attack
        if life <= 0:
            print('白骨精干死了唐僧,game over')
            break
        print(f'当前唐僧还剩下{life} 点血,白骨精还剩下{monster_life} 点血,激战正酣~')
    elif num == 3:
        print('退出游戏成功')
        break
    else:
        print('请重新输入')

四、for循环

for 循环普遍和后面的Python 数据结构搭配使用,等到后面整理到Python 数据结构再写~

脑图

猜你喜欢

转载自blog.csdn.net/cris_zz/article/details/83104295