Jessica-Jmm

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一、流程控制

控制事物的执行流程

1. 顺序结构
# 自上而下依次执行,我们前面写的代码都是顺序执行的
2. 分支结构
# 根据不同的条件执行不同的分支
3. 循环结构
# 言外之意就是重复执行

二、分支结构

1、单分支

if 条件:
    条件成立之后要执行的代码块

2、双分支

if 条件:
    条件成立之后执行的代码块
else:
    条件不成立执行的代码块

3、多分支

if 条件1:
    条件1成立之后执行的代码块
elif 条件2:
    条件1不成立,条件2成立执行的代码块
elif 条件3:
    条件1、条件2不成立,条件3成立之后执行的代码块
...
else:
    以上所有条件都不成立的话,执行的代码块 

4、if 嵌套

age = 18
height = 160
weight = 100
is_beautiful = True
is_success = False
if age < 26 and height >= 160 and weight <= 100 and is_beautiful:
    print('小姐姐,能否给个微信?')
    if is_success:
        print('吃饭,看电影...')
        if True:
            if False:
                ...
    else:
        print('滚蛋吧,下一个更好')
else:
    print('认错人了')

三、循环结构

1、while 循环

while 条件:
    条件成立之后执行的循环体

2、while + break (跳出本层循环)

count = 0
while count < 3:
    # 1. 先让用户输入用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')  # password: str---->123
 
    password = int(password)  # 只能转数字类型的
    # 2. 比较用户名和密码
    # 在python中,==比较值大小和类型
    # if username == 'kevin' and password == '123':
    if username == 'kevin' and password == 123:
        print('登录成功')
        break  # 调出while循环,它是跳出本层循环
    else:
        print('登录失败')

3、while + continue

#循环打印出0-9之间的数字,但是不打印6
count = 0
while count < 10:
    if count == 6:
        count+=1
        continue  # 是调出本次循环
    print(count)
    count += 1

4、while + else

count = 0
while count < 10:
    if count == 3:
        break
    print(count)
    count += 1
else:
    print('嘿嘿嘿')
     
# 当while循环内没有被人为中断(break)的时候,会执行else语句

5、标志位

在复杂的程序中,很多不同的事件都会导致程序停止运行;在这种情况下,该怎么办呢?

例如,在游戏中,多种事件都可能导致游戏结束,如玩家一艘飞船都没有了或要保护的城市都被摧毁了。导致程序结束的事件有很多时,如果在一条 while 语句中检查所有这些条件,将既复杂又困难。在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志 ,充当了程序的交通信号灯。你可让程序在标志为 True 时继续运行,并在任何事件导致标志的值为 False 时让程序停止运行。这样,在 while 语句中就只需检查一个条件 —— 标志的当前值是否为 True ,并将所有测试(是否发生了应将标志设置为 False 的事件)都放在其他地方,从而让程序变得更为整洁。

下面来在前一节的程序 parrot.py 中添加一个标志。我们把这个标志命名为 active (可给它指定任何名称),它将用于判断程序是否应继续运行:

active = True
while active:
    mes = input('请输入 q 退出程序:')
    if mes == 'q':
        active = False
    else:
        print(mes)

标志位的使用

flag = True
while flag:
    # 1. 先让用户输入用户名和密码
    username = input('username>>>:')
    password = input('password>>>:')  # password: str---->123
 
    password = int(password)  # 只能转数字类型的
    # 2. 比较用户名和密码
    # 在python中,==比较值大小和类型
    # if username == 'kevin' and password == '123':
    if username == 'kevin' and password == 123:
        print('登录成功')
        while flag:
            cmd = input('请输入你的指令:')
            print('正在执行你的指令: %s' % cmd)
 
            '''如果输入的是q,就退出整个程序'''
            if cmd == 'q':
                flag = False
    else:
        print('登录失败')

2、for 循环

for循环能做的事情,while循环都能够做
for循环代码更加简介,另外,它不会出现死循环
 
# 请听题:
name_list = ['kevin''tank''jason''tony']
# 循环取出列表中每一个人名
for name in name_list:
    print(name)
     
"""
    语法格式:
        for 变量名 in 可迭代对象: # 可迭代对象:可循环的对象,字符串、列表、字典、元组等
            print()
        当你的变量名没有合适的名字可叫的时候,你可以采用i,j,k,v,item等代替
"""
 
# 字典报出来的是字段的K
# 循环打印字段的k和v
=  {"username":'kevin'"age":18}
for in d:
    print(i, d[i])

补充for循环原理

获取可迭代对象:首先,for循环会获取要遍历的可迭代对象。可迭代对象是指实现了__iter__方法的对象,或者是序列类型(如列表、元组、字符串)。
 
获取迭代器:通过调用可迭代对象的__iter__方法,for循环会获取一个迭代器(iterator)。迭代器是实现了__next__方法的对象,它负责迭代遍历可迭代对象的每个元素。
 
迭代遍历:for循环会重复调用迭代器的__next__方法,每次获取可迭代对象的下一个元素。这个过程会持续直到迭代器抛出StopIteration异常,表示没有更多的元素可迭代。
 
执行循环体:在每次迭代中,for循环会将迭代器返回的元素赋值给循环变量(如for item in iterable中的item),然后执行循环体中的代码块。循环体中的代码会针对每个元素进行重复执行。
 
循环控制:在每次循环迭代之后,for循环会自动处理循环控制,即判断是否继续迭代。如果迭代器已经抛出StopIteration异常,或者循环体内部使用了break语句,循环会终止,否则会继续迭代。
 
总结起来,for循环通过获取可迭代对象和迭代器,并重复调用迭代器的__next__方法来遍历可迭代对象的元素。循环体内的代码会针对每个元素进行执行,直到迭代完成或循环被终止。这种迭代遍历的机制使得for循环在处理可迭代对象时非常方便和简洁。

3、range关键字

for in range(1102):  # 如果有三个参数,意思是:从1到10的整数,步长为2
  print(i)

range在不同版本解释器中的区别

在python2中直接打印出结果

在python3中做了优化,把它变成了迭代器, 就是节省内存资源

>>> range(1,10)
range(110)

4、for+break

for in range(10):
    if == 3:
        break
    print(i)

5、for+continue

for in range(10):
    if == 3:
        continue
    print(i)

此处注意与while中的continue的区别

6、for+else

当 for 下面的if语句被匹配执行,break 人为中断,else

# 验证账号密码是否存在
        with open('/Users/sanpangdan/Desktop/python_fullstack/zm.txt''r', encoding='utf-8') as f:
            for  name in  f:
                if username == name.split('|')[0]:
                    print('用户名已存在,请换一个名字注册')
                    break
            else:
                res = '%s|%s\n' % (username, passwd)  # 将账号密码做一个格式化赋值
                with open('/Users/sanpangdan/Desktop/python_fullstack/zm.txt''a', encoding='utf-8') as f1:
                    f1.write(res)  # 将账号密码存入文本文件
                    print('{}注册成功!'.format(username))

四、练习

1、while 循环嵌套的应用

2、for循环嵌套打印九九乘法表

关键:分行与列考虑,共9行9列,i控制行,j控制列。

posted on 2023-11-10 21:40  JessicaJJmm  阅读(24)  评论(0编辑  收藏  举报