python 流程控制语句

本文介绍了Python的流程控制语句,包括顺序执行、分支结构(如三元运算符、条件嵌套)和循环语句(while、for及break、continue的使用)。此外,还提供了多个代码示例,如石头剪刀布游戏、找最大值、猜数字游戏和登陆系统等,进一步阐述了循环的运用,如for循环嵌套在实际问题中的应用,如打印九九乘法表、检验质数和寻找完全平方数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流程控制语句

顺序语句

表示的是代码的执行顺序-程序是自上而下运行的
计算机执行程序指令是按顺序的方式执行的,也就是说,按照指定的顺序,一条指令一条指令的执行,执行完一条指定之后,再执行下一条指令。当然现在很多CPU都是多核心、多线程的,并发执行多条指令,但对于同一个程序而言,CPU还是通过顺序的方式来执行指令的。

分支语句

Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
根据场景出现了不同的判断不同的判断的需要做不同的事情

单分支:
	语法:
		if 条件判断:
			满足条件的操作
	
	# 注意:做的操作是满足条件才执行的 为了体现这种包含关系	操作的这些代码需要相对于if有一个缩进
			一般情况下写完条件判断: 自带缩进(四个空格或者一个Tab)
			
双分支:
	语法:
		if 条件判断:
			满足条件的操作
		else:
			不满足条件的操作
			
多分支:
	语法:
		if 条件判断1:
			满足条件1的操作
		elif 条件判断2:
			不满足条件1 满足条件3的操作
		...
		else:
			不满足所有条件的操作

注意:

0、Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在Python中没有switch – case语句。

三元运算符
有三个表达式参与运算符的运算
由	if-else	结构形成的
语法:
	表达式1 if 条件表达式 else 表达式2
解读:
	判断条件表达式是否成立成立的话 执行表达式1 否则执行表达式2
句嵌套
在满足某种场景的情况下又出现了分支的判断
随机模块random
random提供了获取随机数的功能	
random() 方法返回随机生成的一个实数,它在[0,1)范围内。

循环语句

循环---重复的做着某件事
循环分两种场景:
	1.达到某个状态不再继续重复该事情
	2.一直周而复始的做着这件事---死循环
Python提供的循环机制:
	1. while循环--根据某种条件重复的做某件事
	2. for循环-- 遍历序列从头到尾遍历序列获取序列的元素的
whlie 循环
语法:
	while循环条件:
		重复的操作
解读:
	先判断循环条件是否成立不成立的话 循环结束继续向下执行其他的代码逻辑
	成立的话就去执行要做的事情再去判断循环条件是否成立
	成立的话继续做要做的事情直到循环条件不成立或者循环被终止
	
写这个循环的时候需要查找需求中的两个目标:
	1.在重复操作哪件事情
	2.重复做这件事情的条件是什么
	
另一种语法:
	while循环条件:
		重复的操作
	else:
		当且仅当循环条件不成立的时候执行
解读:
	验证循环条件是否成立成立的话 执行重复的操作再次验证循环条件是否成立 当条件不成立时执行else中的操作
break 和 continue
break 
	作用:强制结束break当前所在的循环结构
continue
	作用:结束当前次回到循环条件位置验证循环条件是否成立成立的话继续执行下一-次
for循环
语法:
	for变量名in序列:
		重复的操作
解读:
	从序列中依次获取元素赋值给变量名进行对应的操作之后 获取下一个再赋值给变量名一直重 复该操作,到序列中的元素都被取完,循环结束
for循环的另外一个使用场景:
	可以应用于次数确定的循环操作[序列中有几个元素 循环就确定要执行几次]
for一else
	for变量名in序列:
		重复的操作
	else:
		循环结束时的操作
	 2.循环结构
		 for循环嵌套 -> 穷举法
range功能
生成整数形式的等差序列
	
range(stop)
	从0开始+1递增到stop-1
		range(10) ---->0 1 2 3 4 5  6 7 8 9
range(start, stop)
	从start开始+1递增到stop-1
		range(1, 10) ----> 1 2 3 4 5 6 7 8 9
range(start,stop,step)
	step步长
		为正数
			表示是递增序列		start < stop
		为负数
			表示是递减序列		start > stop			

代码示例

1.游戏-石头剪刀布
"""游戏规则
系统随机在石头剪刀布中随机出拳
用户在石头剪刀布中选择出拳信息
判断用户输赢
赢:
    用户    系统
    石头    剪刀
    剪刀    布
    布      石头
"""
import random
won = 0
transport = 0
while 1:
    print('*' * 50)
    str_tuple = ('石头', '剪刀', '布')
    system_n = random.randint(1, 3)
    user_str = input("请用户在 1.石头 2.剪刀 3.布 中\n选择出拳信息标号:")
    if user_str not in ['1', '2', '3']:
        print("你的选择不合规则,请重新选择")
        continue
    user_n = int(user_str)
    print("你的选择是:%s, 而系统的选择是%s" % (str_tuple[user_n-1], str_tuple[system_n-1]), end=' ')
    if bool((user_n-system_n) % 3 == 2):
        print("你赢了系统")
        won += 1
    elif bool((user_n-system_n) % 3 == 1):
        print("系统赢了你")
        transport += 1
    else:
        print("系统和你出拳一样,平局")
    print("现在的局势是", "用户 :  系统", "%d :  %d" % (won, transport), sep='\n')
    input("回车确认继续")
2.输入多个数字 输出最大值
# 输入多个数字 输出最大值
def Maximums():
    print("请输入一个或者多个数字(输入 z 结束)")
    i = 1
    list_number = []
    while i:
        number = input("第%d个数字是:" % i)
        if number == 'z':
            break
        list_number.append(float(number))
        i += 1

    return max(list_number)
3.猜商品价格(猜数字)
"""5.猜商品价格

系统在50到100中随机生成一个整数 表示商品的价格

用户输入50到100中的数据 进行猜测

如果用户猜的大于系统生成的 提示 用户价格猜的偏高

如果用户猜的小于系统生成的 提示 用户价格猜的偏低

如果两者相等 提示用户 恭喜你猜对了 请把商品带回家
"""
import random
price = random.randint(50, 100)
print('*' * 10 + '猜商品价格' + '*' * 10)
s = 0
while 1:
    try:
        s += 1
        guess = int(input("请用户输入50到100中的一个数字>>>"))
    except(ValueError, ArithmeticError):    # 程序发生了数字格式异常、算术异常之一
        print("输入错误肯定猜不对啊!")
        continue
    if price > guess >= 50:
        print("用户您价格猜的偏低啦")
    elif price < guess <= 100:
        print("用户您价格猜的偏高啦")
    elif price == guess:
        print("恭喜你猜对了 请把商品带回家")
    else:
        print("输入错误肯定猜不对啊!")
    if s > 7:
        print("你也太笨了,7次都猜不对,只用每次猜中间值就行啦")
4.登陆系统的实现
"""3.登陆系统的实现

已知注册过的用户信息如下:键为用户名, 值为密码

user_dict = {'admin': 'abc@123',  'root': '12345567', 'test': '123456'}

用户输入用户名,如果用户名没有在上面的字典中,提示xx用户名没有注册

否则 让用户输入密码, 如果用户输入的密码与该用户名对应的密码一致,提示登陆成功 否则提示密码错误
"""
user_dict = {'admin': 'abc@123',  'root': '12345567', 'test': '123456'}
print('*'*10+'系统用户登录'+'*'*10)
while 1:
    ij = 0
    username = input("请输入你的用户名>>>")
    for key in user_dict.keys():
        if key == username:
            ij = 1
    if ij != 1:
        print("该用户名没有被注册")
        continue
    password = input("请输入你的密码>>>")
    password2 = input("请再重复输入密码>>>")
    if not (username and password):
        print("输入的用户名或密码为空")
    elif not (password == password2):
        print("两次输入的密码不一样")
    elif user_dict[username] == password:
        print("登录成功")
    else:
        print("输入的用户名或密码错误")

for循环嵌套

打印九九乘法表
def multiplication_table():
    """
    打印九九乘法表
    :return:无
    """
    for i in range(1, 10):
        for j in range(1, i + 1):
            print(" %dX%d=%d " % (j, i, i * j), end='')
            if i * j < 10:
                print(' ', end='')
        print()
检验质数
n = 0
while 1:
    try:
        n = int(input("请输入一个正整数\n>>>"))
    except (ValueError, ArithmeticError):
        print("格式错误,请重新输入")
        continue
    if n > 0:
        break

for i in range(2, int(n ** 0.5) + 1):
    if not n % i:
        print("该数不是质数")
        break
else:
    print("该数是质数")
完全平方数
"""要求:
一个整数,它加上100后是 一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 
问有哪些数+100再加 上168可以形成完全平方数
假设法
设这个数是x
    X+100=m**2
    X+100+168=n**2
整合
n^2-m^2=168
(n-m)(n+m) = 168 ---- n-m和n+m至少有一个偶数
    i=n-m
    j=n+m
    m=(j-i)/2)
    n=(i+j)/2)
    i和j要么都是奇数 要么是偶数
结论:
    i和j都是偶数.大于等于2的 不能是0,但是可以是负数
    i*j= 168
    假设|i|>= 2
    2<=|j|<=84
    但是实际上i和j同正负, 但是因为 i*j 与 (-i)*(-j) n*m 与 (-n)*(-m)同效,我们只取绝对值(整数部分)来算即可
"""
# .根据范围提取数据验证这 个范围中有哪些数据是满足需求的
for j in range(1, 85):
    # 筛选---j数据需要是168的因数
    if 168 % j == 0:
        # 根据式子得到i的值
        i = 168 // j
        # 校验两个都是偶数
        if j > i and (i + j) % 2 == 0 and (j - i) % 2 == 0:
            m = (j - i) // 2
            n = (i + j) // 2
            x = m * m - 100
            print(x)  # 打印取x的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值