循环控制

while循环表达式

当程序从上至下执行时,遇到 while 循环语句,则会判断表达式 是否成立 ,当成立时 则会进入 while 循环体内,执行 循环体内部执行的代码块。直到判断表达式 不成立时 ,则 终止循环。

python控制循环次数 python 循环控制_python控制循环次数


示例:

例子中导入了一个time模块,方便代码运行的时候看效果。

import time
level = 1
while level <40:
    print("刷怪")
    print(">>>>")
    time.sleep(0.5)
    print(">>>>>>>>")
    time.sleep(0.5)
    print(">>>>>>>>>>>>")
    time.sleep(0.5)
    print(">>>>>>>>>>>>>>>>")
    time.sleep(0.5)
    print("升级!")
    level += 1
print("可以去打关卡BOSS了!")
break 与 continue 语句
· break:

当 循环体 执行的过程中想要 退出循环体,就可以使用到 break 语句。

示例:
例子中导入了time模块和random模块,方便代码执行查看效果。

import time
from random import randint
level = 1
monster = ["哥布林", "野山猪", "40级直升经验果"]
while level <40:
    print("刷怪")
    m = monster[randint(0, 2)]
    if m == "哥布林":
        print("发现了野生的哥布林!")
        print(">>>>")
        time.sleep(0.5)
        print(">>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>>>>>")
        time.sleep(0.5)
        print("升级!")
        level += 1
        print("当前等级:{}".format(level))
    elif m == "野山猪":
        print("发现了野生的野山猪!")
        print(">>>>")
        time.sleep(0.5)
        print(">>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>>>>>")
        time.sleep(0.5)
        print("升级!")
        level += 3
        print("当前等级:{}".format(level))
    else:
        print("发现了野生的40级直升经验果!")
        print("芜湖,舒服了,搞起,搞起。")
        level = 40
        print("当前等级:{}".format(level))
        break
print("可以去打关卡BOSS了!")
· continue:

continue 语句用于 跳过 当前循环体 剩余部分的代码,直接 开始下一轮循环。它 不会退出和终止循环。

示例:
例子中导入了time模块和random模块,方便代码执行查看效果。

import time
from random import randint
level = 1
monster = ["哥布林", "野山猪", "水晶龙"]
while level <40:
    print("刷怪")
    m = monster[randint(0, 2)]
    if m == "哥布林":
        print("发现了野生的哥布林!")
        print(">>>>")
        time.sleep(0.5)
        print(">>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>>>>>")
        time.sleep(0.5)
        print("升级!")
        level += 1
        print("当前等级:{}".format(level))
    elif m == "野山猪":
        print("发现了野生的野山猪!")
        print(">>>>")
        time.sleep(0.5)
        print(">>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>>>>>")
        time.sleep(0.5)
        print("升级!")
        level += 3
        print("当前等级:{}".format(level))
    else:
        print("发现了野生的水晶龙 !")
        print("芜湖,打不过,溜了,溜了。")
        print("当前等级:{}".format(level))
        continue
print("可以去打关卡BOSS了!")
while 的 else 从句

while 循环还可以增加一个 else 从句。当 while 循环 正常执行 完毕,会执行 else语句。
示例:

import time
from random import randint
level = 1
monster = ["哥布林", "野山猪", "40级直升经验果"]
while level <40:
    print("刷怪")
    m = monster[randint(0, 2)]
    if m == "哥布林":
        print("发现了野生的哥布林!")
        print(">>>>")
        time.sleep(0.5)
        print(">>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>>>>>")
        time.sleep(0.5)
        print("升级!")
        level += 1
        print("当前等级:{}".format(level))
    elif m == "野山猪":
        print("发现了野生的野山猪!")
        print(">>>>")
        time.sleep(0.5)
        print(">>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>")
        time.sleep(0.5)
        print(">>>>>>>>>>>>>>>>")
        time.sleep(0.5)
        print("升级!")
        level += 3
        print("当前等级:{}".format(level))
    else:
        print("发现了野生的40级直升经验果!")
        print("芜湖,舒服了,搞起,搞起。")
        level = 40
        print("当前等级:{}".format(level))
        break
else:
	print("可以去打关卡BOSS了!")
print("等级够了,技术不够,溜了溜了。")
注意:
  • else 与 while 平级的缩进方式。
  • 如果是被 break 等机制 强制 提前 终止的循环,不会执行 else 语句。
while循环嵌套使用

if 判断可以嵌套,while 当然也可以嵌套。但是建议大家不要嵌套 3 层以上,那样的效率会很低。

问题:
问题一:

生成N个1~1000之间的随机数(N<=1000),N是用户输入的,对于其中重复的数字,只保留一个,把其余数字去掉,然后再把这些数从小到大排序。

python控制循环次数 python 循环控制_python_02

回答:

from random import randint
s=set()
try:
    num = int(input("请输入一个<=1000整数:"))
    for i in range(1,num):
        s.add(randint(1,1000))
    print(s)
    l = list(s)
    l.sort()
    print(l)
except ValueError:
    print("输入值错误,请输入一个<=1000整数")
问题二:

打印出所有“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数字本身。

python控制循环次数 python 循环控制_嵌套_03

回答:

da = []
for i in range(100,1000):
    a = int(str(i)[2]) ** 3
    b = int(str(i)[1]) ** 3
    c = int(str(i)[0]) ** 3
    if a+b+c == i:
        da.append(i)
    else:
        continue
print("水仙花数有:")
for l in da:
    print(l)
问题三:

python控制循环次数 python 循环控制_python_04


回答:

print("Have you been studying lately?")
info = input("Please enter the instruction(y/n):")
a = 1
while a:
    if info.upper() == "Y":
        """当用户输入y的时候给出选项"""
        while 1:
            print("very good!", "What did you learn:", "1.python", "2.高数" ,"3.退出", sep="\n")
            i = input("Please enter the instruction(1/2/3):")
            if i == "1":
                print("python不错啊!")
            elif i == "2":
                print("高数啊?这也太强了!")
            elif i == "3":
                """当选项为3的时候退出系统"""
                a = 0
                break
            else:
                """当选项不在范围的时候提示重新选择"""
                print("Error output instruction.", "Please input agin!", sep="\n")
                continue
    elif info.upper() == "N":
        """当用户没有学习,输出提示并退出系统"""
        print("Young man, Please study hard!")
        break
    else:
        """当输入除了y/n的其他值时,则提示输出有误"""
        print("Error output instruction.", "Please input agin!", sep="\n")
        continue