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

Python基础之流程控制语句

时间:2024-05-08 15:35:23浏览次数:29  
标签:语句 count Python 流程 else while 循环 print 分支

【一】流程控制语句介绍

  • 程序是由语句构成,而流程控制语句是用来控制程序中每条语句执行顺序的语句
  • 流程控制方式有
    • 顺序结构
    • 分支结构
    • 循环结构
  • 最简单最常用的就是顺序结构,执行方式是从上至下一句一句来

【二】顺序结构

【1】什么是顺序结构

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

【2】顺序结构的作用

  • 顺序结构用于按照既定的顺序执行一系列的操作,这是程序执行的最基本模式
  • 顺序结构让我们可以清晰地表达程序的逻辑流程,使代码更加清晰易懂

【三】分支结构

【1】什么是分支结构

  • 分支结构是根据条件的成立与否选择性地执行不同的代码块
  • 在分支结构中,根据条件的判断结果,程序会有不同的执行路径

【2】分支结构的作用

  • 分支结构的主要作用是根据不同的条件执行不同的代码,从而实现灵活的程序逻辑
  • 通过分支结构,程序可以根据用户的输入、计算的结果等情况来选择执行不同的代码块

【3】单分支结构

  • 单分支结构(if)指的是程序根据条件的成立与否,执行两个分支中的其中一个
  • 常见的单分支结构语法是if语句
#单分支结构用于在条件成立时执行相应的代码块
age = 18
if age >= 18:
    print("恭喜你成年了")

相关补充

  • Python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
  • 条件可以是任意表达式,但执行结果必须为布尔类型
  • 在if判断中所有的数据类型也都会自动转换成布尔类型
    • None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
    • 其余均为True

【4】双分支结构

  • 双分支结构(if-else)也是根据条件的成立与否,选择性地执行不同的代码块
  • 与单分支结构不同的是,双分支结构有两个分支,分别对应条件成立和条件不成立的情况
#双分支结构用于在条件成立时执行一个代码块,在条件不成立时执行另一个代码块
age = 16
if age >= 18:
    print("恭喜你成年了")
else:
    print("你还未成年哦!")

【5】多分支结构

  • 多分支结构(if-elif-else)是在双分支结构的基础上扩展,它包含多个分支,每个分支都对应不同的条件
  • 程序根据条件的成立情况选择性地执行相应的代码块
if 条件1:
    # 如果条件1成立,执行这里的代码块
elif 条件2:
    # 如果条件1不成立且条件2成立,执行这里的代码块
else:
    # 如果条件1和条件2都不成立,执行这里的代码块
    
score = 85
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
else:
    print("一般")

【6】多层嵌套结构

  • 多层嵌套结构是通过在不同层次上使用if语句嵌套形成的结构
  • 每一层的分支结构都可以根据不同的条件进行选择性的执行
age = 25
if age >= 18:
    if age <= 25:
        print("年龄在18到25岁之间。")
    else:
        print("年龄大于25岁。")
else:
    print("年龄小于18岁。")

【四】循环结构

【1】什么是循环结构

  • 循环结构一般反复执行一组语句,直到满足某个条件为止
  • 这种重复执行的过程可以是固定次数的,也可以是根据条件动态确定的

【2】while循环

#当条件为真时,循环体会一直执行,循环体是需要重复执行的代码块
count = 0
while count < 5:
    print("count:", count)
    count += 1
print("good!")
#输出
 #count: 0
 #count: 1
 #count: 2
 #count: 3
 #count: 4
 #good!

登陆认证案例

  • 用户认证程序的基本逻辑就是接收用户输入的用户名密码然后与程序中存放的用户名密码进行判断,判断成功则登陆成功,判断失败则输出账号或密码错误
dict = {'username': 'ligo','password': '1234'}
name = input("请输入用户名:")
pwd = input("请输入密码:")
   if name == dict['username'] and pwd == dict['password']:
       print("登录成功")
   elif name not in dict['username']:
        print("当前用户不存在")
   else:
        print("登录失败")
  • 通常认证失败的情况下,会要求用户重新输入用户名和密码进行验证
  • 为了不让我们复制三遍代码,我得用while循环
dict = {'username': 'ligo','password': '1234'}
count = 0
while count < 3:
   name = input("请输入用户名:")
   pwd = input("请输入密码:")
   if name == dict['username'] and pwd == dict['password']:
       print("登录成功")
   elif name not in dict['username']:
        print("当前用户不存在")
   else:
        print("登录失败")
        count += 1

【3】for循环

numbers = ["one", "two", "three"]
print("one" in number)  # True
print("six" in number)  # False

for number in numbers:
    print("number:", number)

print("I got it")
#输出
#number: one
number: two
number: three
I got it

【4】退出循环(break)

count = 0
while count < 5:
    print(count)
    if count == 3:
        break  # 当 count 等于 3 时,退出循环
    count += 1

(3)登录案例(while循环-break)

  • 使用break结束循环
dict = {'username': 'ligo','password': '1234'}
count = 0
while count < 3:
   name = input("请输入用户名:")
   pwd = input("请输入密码:")
   if name == dict['username'] and pwd == dict['password']:
       print("登录成功")
       break
   elif name not in dict['username']:
        print("当前用户不存在")
   else:
        print("登录失败")
        count += 1

(4)登录案例(while循环嵌套-break)

  • 要退出循环需要在每一层循环都有一个break
username = "Dream"
password = "123"
count = 0
while count < 3:  # 第一层循环
    inp_name = input("请输入用户名:")
    inp_pwd = input("请输入密码:")
    if inp_name == username and inp_pwd == password:
        print("登陆成功")
        while True:  # 第二层循环
            cmd = input('>>: ')
            if cmd == 'quit':
                break  # 用于结束本层循环,即第二层循环
            print('run <%s>' % cmd)
        break  # 用于结束本层循环,即第一层循环
    else:
        print("输入的用户名或密码错误!")
        count += 1

【5】退出循环(continue)

count = 0
while count < 4:
    count += 1
    if count == 2:
        continue  # 当 count 等于2 时,跳过当前循环,继续下一次循环
    print(count)
#break是完全退出循环,而continue是跳过当前循环,直接进入下一次循环。

【6】无限循环(死循环)

  • 通过while循环实现无限循环
  • 因为条件永远为真,所以循环不会退出,直到达到某个条件时,才会退出循环
while True:
    number  = input("请输入一个数字:")
    if number == "18":
        print("数字输入正确!")
        break
    else:
        print("请再试一次")

【7】标志位

(1)使用

flag = True

while flag: #初始标志位
    number  = input("请输入一个数字:")
    if number == "18":
        print("数字输入正确!")
        flag = False   修改标志位,退出循环
    else:
        print("请再试一次")

(2)登录案例

list = [{'username': 'admin','password':'1234'}]
flag = True

while flag:
    user = input("请输入用户:")
    pwd = input("请输入密码:")
    for dict in list:
        if user == dict['username'] and pwd == dict['password']:
            print("登陆成功")
            flag = False
            break
    else:
        print("登录失败")

【9】循环分支(else)

  • 在while循环中,else语句会根据是否有break来决定是否继续执行语句,如果前面没有,就会执行后面的语句,如果有break,就不会执行,直接退出循环
#循环中没有break
count = 0
while count <= 3:
    count +=1
    print(count)
else:
    print("循环结束")
#输出 1 2 3 4

#循环中有break
count = 0
while count <= 3:
    count +=1
    print(count)
    break
else:
    print("循环结束")
#输出 1 

【10】range关键字

(1)遍历数字序列

for i in range(stop):
    # 循环体
for i in range(start, stop):
    # 循环体
for i in range(start, stop, step):
    # 循环体

(2)指定区间

for i in range(1, 10):
    print(i)
#输出 1 2 3 4 5 6 7 8 9

(3)步长

for i in range(1, 10,2):
    print(i)
#输出 1 3 5 7 9

(4)range +len遍历序列

list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(len(list)):
    print(f"{list[i]} + {i}")
#输出
    # 1 + 0
    # 2 + 1
    # 3 + 2
    # 4 + 3
    # 5 + 4
    # 6 + 5
    # 7 + 6
    # 8 + 7
    # 9 + 8

(5)range创建

number = list(range(1,10))
print(number) #输出[1, 2, 3, 4, 5, 6, 7, 8, 9]
number = list(range(1,10,2))
print(number) #输出[1, 3, 5, 7, 9]

【五】循环分支嵌套

  • 循环与分支结构嵌套在一起,下面代码外循环与内循环都执行了三次
for i in range(3):
    print(i)
    for j in range(3):
        print(j)
#0 0 1 2  1 0 1 2  2 0 1 2

# 案例
while 1:
    score = input("请输入您的成绩>>")  # "100"

    if score.isdigit():
        score = int(score)  # 100
        if score > 100 or score < 0:
            print("您的输入有误!")
        elif score > 90:
            print("成绩优秀")
        elif score > 70:  # else if
            print("成绩良好")
        elif score > 60:
            print("成绩及格")
        else:
            print("成绩不及格")
    else:
        print("请输入一个数字")

标签:语句,count,Python,流程,else,while,循环,print,分支
From: https://www.cnblogs.com/ligo6/p/18179730

相关文章

  • threading:Python线程锁与释放锁
    控制资源访问前文提到threading库在多线程时,对同一资源的访问容易导致破坏与丢失数据。为了保证安全的访问一个资源对象,我们需要创建锁。示例如下:importthreadingimporttimeclassAddThread():def__init__(self,start=0):self.lock=threading.Lock()......
  • nuitka: Python代码打包为exe
    一.pyinstaller和Nuitka使用感受1.1使用需求这次也是由于项目需要,要将python的代码转成exe的程序,在找了许久后,发现了2个都能对python项目打包的工具——pyintaller和nuitka。这2个工具同时都能满足项目的需要:隐藏源码。这里的pyinstaller是通过设置key来对源码进行加密的;而......
  • binaascii:A Python 在二进制和 ASCII 之间转换
    binaascii是一个用于在二进制和ASCII之间转换的模块。b2a_base64是binaascii模块中的一种方法,它将base64数据转换为二进制数据。下面是这个方法的一个例子:importbase64importbinasciimsg="Tandrew"encoded=msg.encode('ascii')base64_msg=base64.b64encode......
  • geopandas:Python绘制数据地图
    https://mp.weixin.qq.com/s/Nq5Ygy0axI83H2dclU56yQGeoPandas是一个Python开源项目,旨在提供丰富而简单的地理空间数据处理接口。GeoPandas扩展了Pandas的数据类型,并使用matplotlib进行绘图。GeoPandas官方仓库地址为:GeoPandas。GeoPandas的官方文档地址为:GeoPandas-doc。本......
  • difflib: Python 比较数据集
    difflib 是一个专注于比较数据集(尤其是字符串)的Python模块。为了具体了解您可以使用此模块完成的几件事,让我们检查一下它的一些最常见的函数。SequenceMatcherSequenceMatcher 是一个比较两个字符串并根据它们的相似性返回数据的函数。通过使用 ratio(),我们将能够根据比率/......
  • string:Python的文本常量与字符串模板
    前言在程序中,有很多高效率的字符串处理方式,如果开发者能够完全掌握这些高效的字符串处理,往往在开发者也能事半功倍。比如针对于字符串的处理,也是自然语言处理的基础知识。而python3中,处理字符串的库为:string。本篇将详细介绍各种字符串的高效处理方式。首字母大写对于英文单词......
  • time:Python的时间时钟处理
    前言time库运行访问多种类型的时钟,这些时钟用于不同的场景。本篇,将详细讲解time库的应用知识。获取各种时钟既然time库提供了多种类型的时钟。下面我们直接来获取这些时钟,对比其具体的用途。具体代码如下:importtimeprint(time.monotonic())print(time.monotonic_ns())pri......
  • Python基础之程序与用户交互
    程序与用户交互【一】什么是与用户交互交互就是输入和输出input输入数据,print输出数据【二】为什么要与用户交互将计算机拟人化,实现像人一样能和用户进行交流我们需要一个平台,也就是计算机来支持用户实现数据的输入和输出【三】如何与用户交互【1】输入(input)(1)Python3......
  • datetime:Python日期与时间值管理计算
    前言datetime库也用于时间日期的处理,主要用于完成日期和时间的解析,格式化和算术运算。本篇,将完整的介绍datetime库的应用知识。datetime.date与time库一样,datetime库也有获取当前日期的类,日历日期值用datetime.date表示。比如datetime.date.today()。具体代码如下:importdate......
  • calendar:Python日历的处理与生成
    前言calendar库让你可以输出日历,它还提供了其它与日历相关的实用函数。本篇,就将详细讲解calendar库的使用规则。prmonth()与TextCalendar()prmonth()是一个简单的函数,可以生成月的格式文本输出。具体用法如下所示:importcalendarc=calendar.TextCalendar(calendar.MONDAY)......