首页 > 编程语言 >Python基础之流程控制

Python基础之流程控制

时间:2023-12-06 14:57:15浏览次数:32  
标签:count 控制 用户名 Python 流程 循环 user print input

流程控制

【1】流程控制语句介绍

  • 程序是由语句构成,而流程控制语句 是用来控制程序中每条语句执行顺序的语句。

【2】顺序结构

  • 顺序结构是指按照代码书写的顺序,一条语句接着一条语句执行,没有跳过、重复或其他特殊的结构。

    image-20231128205014269

【3】分支结构

(1)单分支结构(if)

if+条件1 :
    换行 执行内容 # 条件1如果为真
结束

# 条件1如果为假则跳过if语句,执行后续的代码

(2)双分支结构(ifelse)

if+条件1 :
    执行内容1 # 条件1如果为真,则执行内容1(条件正确的情况下执行的内容)
else:
    执行内容2 # 条件1如果为假,则执行内容2(条件错误的情况下执行的内容)
    
# 示例
age = 16
if age > 18 :
    print('你已经成年啦!')
else:
    print('你还没有成年,请享受青春~')
# 输出 你还没有成年,请享受青春~
# 因为age并没有大于18,所以条件为假,所以打印这段话

(3)多分支结构(if-elif-else)

if+条件1 :
    执行内容1 # 条件1如果为真,则执行内容1(条件正确的情况下执行的内容)
elif+条件2 :
    执行内容3 # 条件1为假,而条件2为真,则执行条件2下的执行内容3
else:
    执行内容2 # 除条件1,条件2所描述的其他索引情况均执行内容2(条件错误的情况下执行的内容)


# 示例
age = 18
if age > 18:
    print('你已经成年了!')
elif age == 18:
    print('你刚刚迈入了成年人的世界!')
else:
    print('你还没有成年,请享受青春~')
    
# 输出 你刚刚迈入了成年人的世界!
# age=18 ,并不满足条件1(大于18),但是满足条件2(等于18),故输出执行内容3

(4)多层嵌套结构

  • 多层嵌套结构是将多个分支结构嵌套在一起形成的复杂结构。
  • 每一层的分支结构都可以根据不同的条件进行选择性的执行。
  • 多层嵌套结构的使用需要注意代码的可读性和维护性。

实例练习 1

# 定义一个字典 {'key':'value'} ---> 多用户登录功能
# 两个输入框 --- > 用户名和密码
# ---> 用户名和密码是否正确
# 正确 :登陆成功
# 失败 : 再输一次
# 再失败 : 登录失败

个人答案(萌新一枚,供大伙批评指教)

# 定义用户登录密码
user_login = {'user': '001', 'lea4ning': '123', 'zwq': '456'}
# 用户输入用户名和密码
input_username = input('请输入用户名:>>>')
input_userPwd = input('请输入密  码:>>>')
# 程序进行运算
# 程序1 检查是否在库中,如果不在,提示重新赋值
if input_username not in user_login:  # 如果输入的用户名不在用户库中,输出‘用户不存在’
    print("用户不存在,请重新输入:>>>>")
    input_username = input('请输入用户名:>>>')    # 重新输入用户名,程序重新为用户名赋值
# 程序2 赋值正确则校验密码,若密码错误重新赋值
if input_username in user_login:    # 用户名重新赋值若正确,进入校验阶段
    if input_userPwd != user_login[input_username]:    # 校验输入的密码,错误的情况重新输入
        print("密码输入错误,请重新输入:>>>")
        input_userPwd = input('请输入密  码:>>>')    # 重新赋值密码
else:
    print("用户名不存在,请检查后重试~")
# 程序3 重新赋值内容正确,则输出登录成功
if input_userPwd == user_login.get(input_username):    # 校验重新输入的密码,正确的情况,输出登录成功
    print("密码输入正确")
    print(f"登录成功~欢迎{input_username}光临~")
else:
    print("登录失败!请检查后重启~")    # 密码经过第二遍赋值依旧错误,将输出登录失败

实例练习 2

# 使用字典模拟多用户登录功能 --- 多用户登录查看内容功能
# 字典格式 : {'key':'value'}
# 定义一个字典 : 用户登录和密码{'username':"password"}
# 定义一个字典 : 字典中放 对应用户的全部信息 比如这个用户的 年龄/爱好/性别/身高
# 两个输入框 --- > 可以输入用户名和密码
# 比对用户名和密码是否正确
# 用户校验正确 :登陆成功 并打印当前用户除 密码以外的其他信息
# 用户校验失败 :再输一次
# 再失败 : 登录失败,退出程序

个人答案(萌新一枚,供大伙批评指教)

# 定义字典
user_login = {'user': '001', 'lea4ning': '123', 'zwq': '456'}
user_info = {'user': {'age': 18, 'sex': 'man', 'hobby': 'run', 'height': 170},
             'lea4ning': {'age': 20, 'sex': 'man', 'hobby': 'badminton', 'height': 175},
             'zwq': {'age': 22, 'sex': 'superman', 'hobby': 'code', 'height': 180}
             }
# 设置输入
input_username = input('请输入用户名:>>>')
input_userPwd = input('请输入密  码:>>>')
# 程序输出
if input_username not in user_login:  # 如果输入的用户名不在用户库中,输出‘用户不存在’
    print("用户不存在,请重新输入:>>>>")
    input_username = input('请输入用户名:>>>')
if input_username in user_login:
    if input_userPwd != user_login[input_username]:
        print("密码输入错误,请重新输入:>>>")
        input_userPwd = input('请输入密  码:>>>')
if input_userPwd == user_login[input_username]:
    print("密码输入正确")
    print(f"""欢迎{input_username}登录,以下为您的信息
        用户姓名:{input_username}
        用户年龄:{user_info[input_username]['age']}岁
        用户性别:{user_info[input_username]['sex']}
        用户爱好:{user_info[input_username]['hobby']}
        用户爱身高:{user_info[input_username]['height']}cm
        """)
else:
    print("登录失败,请检查后重试~")

【4】循环结构

  • 循环结构是一种程序控制结构,用于反复执行一组语句,直到满足某个条件为止。

(1)while循环

语法

while condition:
    # 循环体
  • while 是循环的关键字。

  • condition 是循环的条件,当条件为真时,循环体会一直执行。

  • 循环体是需要重复执行的代码块。

    while True:
        print('nice')
    # 此处while循环为死循环,因为True条件一直为真,故print('nice')一直运行
    while 当条件为真时:
        持续执行代码块,除非条件出现变化,或者使用break函数
    

(2)for循环

语法

for variable in sequence:
    # 循环体
  • for 是循环的关键字。
  • variable 是循环变量,它会在每次循环中取 sequence 中的一个值。
  • sequence 是一个序列,可以是列表、元组、字符串等。
for i in [1, 2, 3, 4]:    # list
    print(i)
# 1 2 3 4  会按顺序提取列表[1,2,3,4]中的值
for i in (1, 2, 3, 4):    # tuple
    print(i)
# 1 2 3 4  会按顺序提取元组(1,2,3,4)中的值
for i in 'learn':    # str
    print(i)
# l e a r n 会按顺序提取字符串'learn'中的值

# 因为列表、元组、字符串都是可以通过下标索引提取内容

(3)退出循环

break:退出

1、语法
while condition:
    # 循环体
    if some_condition:
        break  # 退出循环
2、实例参考
username = "user"
password = "123"
count = 0
while count < 3:  # 第一层循环
    inp_name = input("请输入用户名:")
    inp_pwd = input("请输入密码:")
    if inp_name == username and inp_pwd == password:
        # 此处break内容解释,当用户名密码输入正确后,
        # 首先输出‘登录成功’,然后就可以通过break解除第一层循环
        print("登陆成功")
        while True:  # 第二层循环
            # 此处额外套入一层循环,且在第一层循环结束的break前,
            # 故需要先结束第二层循环才可以进行第一层循环的结束
            cmd = input('>>: ')
            if cmd == 'quit':
                break  # 用于结束本层循环,即第二层循环
            print(f'run <{cmd}>')
        break  # 用于结束本层循环,即第一层循环
    else:
        print("输入的用户名或密码错误!")
        count += 1

'''
如果没有进行循环的结束,将会在第二层循环结束后,继续进行第一层循环,重新输入用户名
'''

continue

1、语法
while condition:
    # 循环体
    if some_condition:
        continue  # 跳过当前循环,继续下一次循环
2、实例参考
count = 0

while count < 5:
    count += 1
    if count == 3:
        print(f'已跳过{count}')
        continue  # 当 count 等于 3 时,跳过当前循环,继续下一次循环
    print(count)
'''输出:
1
2
已跳过3
4
5
''' 

(4)标志位

  • 自定义一个变量作为标志位
flag = True  # 初始化标志位
while flag:
    # 循环体
    if some_condition:
        flag = False  # 修改标志位,退出循环   
flag = True    # 标志位
count = 0    # 计数器
while count < 5 and flag:    # and 关键字连接的条件与标志位
    count += 1    # count每完成一次循环+1
    if count == 3:
        print(f"{count}:逢三归一")
        flag = False
    print(count)
    
# 输出:1 2 3:逢九归一 3
'''正常情况<5的数,有[1,2,3,4],
此处打印至3时,flag的值被变更为False,
and关键字关联的条件中有一方为False,则条件变为False,循环中止'''

(5)循环分支

while 条件:
    循环体
else:
    循环正常执行完毕且没被break关键字中止,将执行else语句下的内容
    如果执行过程被break关键字中止,将不会执行else语句
count = 0  # 计数器
while count < 3:
    count += 1  # count每完成一次循环+1
    print(count)    # 当count=3时,与循环语句<3不符,故循环结束
else:
    print('循环结束')
# 1 2 3 循环结束

(6)range关键字

#基本语法
for i in range(start, stop, step):
    # 循环体
# start 为起始内容
# stop 为终止内容
# step 为步长
# start 起始内容 
# 默认为0,且需要与stop成对使用,单独不可用

# stop 终止的内容
# 可单独使用
for i in range(3):    # for i in range(0,3)
    print(i)          # 0 1 2

# step 步长
# start与stop以step为间隔数,默认值为1
for i in range(1, 6):
    print(i)    # 1 2 3 4 5
    
for i in range(1, 6, 1):
    print(i)   # 1 2 3 4 5

for i in range(1, 6, 2):
    print(i)   # 1 3 5
# 若step设为0,将会报错【ValueError: range() arg 3 must not be zero】
  • 补充
# range + len 遍历序列
# 原理便是通过len()函数可以提取出序列的长度,而长度可以对应stop的值

list1 = [1,2,3]
for i in range(len(list1)):    # for i in range(0,3):
    print(list1[i])            # i的值为0 1 2 对应至list1[0],list1[1],lis1[2]
# 通过range()创建序列
list2 = list(range(1,4))    # list强转(range的值为(1,2,3))
print(list2)
# [1,2,3]

实例练习 1 (while循环分支嵌套)

# 登录功能
# ---> 存储 字典存储用户的登录信息
# 输入框输入 用户名和密码
# 可以尝试 3 次 ----> 用户名或密码错误的话就要重新输入了!
# 第一次的时候告诉你还有两次
# 最后一次的时候告诉你还愿意继续尝试吗?
# 如果选择继续尝试的话 ---> 继续尝试

个人答案(萌新一枚,供大伙批评指教)

user_info = {'user': '001'}  # 存储信息
count = 3  # 计数器
tag = True  # 标志符
# 进入循环
while count > 0 and tag:    # 当剩余次数不为1时,执行循环
    count -= 1    # 作为次数的计数期,执行一次,次数减1
    input_name = input("请输入用户名:>>>>")
    input_pwd = input("请输入密 码:>>>>")
    if input_name in user_info and input_pwd == user_info.get(input_name):   # 校验用户名和密码,正确直接退出
        print(f"欢迎{input_name}登录~祝您有美好的一天~")
        break
    else:
        print("用户名或密码有误,请检查后重新输入!")
        print(f"还有{count}次机会,请仔细检查~")    # 输入错误直接结束后续判断,重新输入用户名和密码
        if count == 0:    # 当次数归零,询问是否重新尝试
            answer = input("次数已经用完,请选择是否重试:y/n")
            if answer == 'y':    # 如果选择继续,将count的值重新添加至3次机会
                count = 3
            else:
                print("下次再见~")

标签:count,控制,用户名,Python,流程,循环,user,print,input
From: https://www.cnblogs.com/Lea4ning/p/17879518.html

相关文章

  • Python基础之Python基本构成
    【一】注释语法【1】什么是注释注释就是就是对代码的解释说明,注释的内容不会被当作代码运行【2】为什么要注释增强代码的可读性【3】如何使用注释代码注释分单行和多行注释1、单行注释用#号,可以跟在代码的正上方或者正后方#这是一段通过“#+注释内容”创造的注......
  • VBA-Excel程序控制语法
    1、If…Then语句 SubSayHello1()  IfTime<0.5ThenMsgBox"早上好!"  IfTime>=0.5ThenMsgBox"下午好!"EndSubSubSayHello2()  IfTime<0.5Then    MsgBox"早上好!"  Else    MsgBox"下午好!"  EndIf......
  • 聊城高新技术企业申报的流程是什么
    聊城高新技术企业申报的流程是什么恒标知产刘经理 根据《认定办法》和《工作指引》相关规定,优化申报流程,精简申报材料,完善工作机制,具体程序如下:1.自我评价。企业对照《认定办法》第十一条和《工作指引》第三部分进行自我评价。自评符合条件的,可按照本通知要求准备申报材料。2.注册......
  • python第三天
    引入随机数:random1)random.randit(1,10)随机生成1.10之间的整数2)random.uniform(1,10)随机生成1.10之间的浮点数3)random.getstate(),获取fandom的种子改进的小游戏,print('---------------------------------来玩一个游戏吧----------------------------')importrandomanswe......
  • Go:条件控制语句
    在Go语言中,主要的条件控制语句有if-else、switch和select。以下是对它们的简单介绍:1.if语句:if语句用于根据条件执行不同的代码块。它的基本形式如下:ifcondition{//codeblock}elseifcondition2{//codeblock2}else{//defaultcodeblock......
  • python开发中常见问题
    在Python开发中,常见问题和解决方案有很多。以下是一些常见问题及其解决方案,并给出了相应的代码示例:ImportError:Nomodulenamed'xxx'这个错误通常是因为缺少所需的模块。解决方法是使用pip安装相应的模块。#安装缺少的模块pipinstallxxxSyntaxError:invalidsyntax这个错......
  • RBAC权限控制 (Role Based Access Control)
    ACL和RBAC对比之前的ACL权限控制是直接给用户分配权限的。而RBAC是这样的:RBAC是先分开角色,然后把角色分给指定的用户通过在用户和权限之间多加一层“角色”来做权限管理给角色分配权限,然后给用户分配角色这样有什么好处呢?  比如说:管理员有a、b、c3个权限,而张三李四......
  • 使用Python代码识别股票价格图表模式
    在股票市场交易的动态环境中,技术和金融的融合催生了分析市场趋势和预测未来价格走势的先进方法。本文将使用Python进行股票模式识别。fromcollectionsimportdefaultdictimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromscipy.signalim......
  • RK3568+Codesys+Xenomai实时软PLC运动控制解决方案
    CODESYS软件架构     CODESYS软件分三层架构,可用下图来表示:1、开发层     CODESYSDevelopmentSystem(具有完善的在线编程和离线编程功能)、编译器及其配件组件、可视化界面编程组件等,同时供用户可选的运动控制模块可使其功能更加完整和强大。IEC61131-3编辑器。CODESY......
  • Pandas数据预处理python 数据分析之4——pandas 预处理在线闯关_头歌实践教学平台
    Pandas数据预处理python数据分析之4——pandas预处理第1关数据读取与合并第2关数据清洗第3关数据转换第1关数据读取与合并任务描述本关任务:加载csv数据集,实现DataFrame合并。编程要求根据提示,在右侧编辑器补充代码,完成本关任务。测试说明平台会对你的代码进行测试,若......