day05-while循环和for循环的使用

本周内容

day01:流程控制

流程控制之while循环
流程控制之for循环

day02:基本数据类型常用操作及内置方法

int
float
str
list

day03:基本数据类型常用操作及内置方法

list
tuple
dict
set

day04:文件处理--->存取硬盘

 字符编码

​    基本操作及底层原理

​    with上下文管理

​    文件操作的模式
​        rt
​        wt
​        at

​        rb
​        wb
​        ab

​        +

day05 文件处理高级

文件操作的读写方法
控制文件内指针的移动
修改文件的两种方法

今日内容:

1.什么是循环

循环就是重复做某件事

2.为何要有循环

为了控制计算机能够像人一样去重复做某件事

3.如何用while循环和 for 循环

while 循环

3.1 基本语法

# 基本语法:	
while 判断条件(condition):
    执行语句(statements)……

执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。

当判断条件假 false 时,循环结束。

3.2 while 循环的执行流程图

img

3.3 案例:打印1-5,用while循环

# 方法1:
i = 0
while i < 5:
    i += 1
    print(i)

# 方法二:
j = 0
tag = True
while tag:  # 条件控制while的子代码的运行,tag为条件
    j += 1
    print(j)
    if j == 5:
        tag = Falsej = 0

3.4 死循环:条件永远为True

while True:  # 只需要满足条件为True,不管是隐式的还是显式的都是
    print(1)
    1 + 1

3.5 了解: 软件分为俩种类型

I/O密集型
	大多数都是在进行I/O操作的,也有计算.例如:qq,微信...,王者荣耀
计算型
    基本都是在计算的,少部分进行了I/O.例如:mp4的文件转换成jpg的...,金融计算的程序

3.6 死循环的俩种类型例子

# I/O密集型 例子:
while True:
    x = input(">>>>:").strip()
    y = input(">>>>:").strip()

# 计算型 例子:
while True:
    1 + 1
    1 + 3
    ...

3.7 结束while循环的俩次条件

3.7.1 方式一:把条件改为False

特点:等到本次循环代码运行完毕后,下一次循环判断条件时才会生效

# 例如:
j = 0
tag = True
while tag:  # 条件控制while的子代码的运行,tag为条件
    j += 1
    print(j)
    if j == 5:
        tag = False

3.7.2 方式二:break代表结束本层循环

特点: 执行到break时,会立即结束本层循环

j = 0
tag = True
while tag:  # 条件控制while的子代码的运行,tag为条件
    if j == 5:
        break
        j += 1
        print(j)

3.8 嵌套多层的while循环

# 方式1:
tag = True
while tag:
    while tag:
        while tag:
            tag = False
# 方式2:
while True:
    while True:
        while True:
            break
        break
    break

3.8.1 案例1:验证用户账户密码,登入成功后退出登录功能

tag = True
while tag:
    inp_user = input('请输入用户名>>:').strip()
    inp_pwd = input('请输入密码>>:').strip()
    if inp_pwd == 'jkey' and inp_pwd == '123':
        print('logging successful')
        tag = False
        # break
    else:
        print('用户名或者密码错误')

3.8.2 案例2:拓展,用户登入成功后,再让用户进行取款,存款和转账功能

while tag:
    inp_user = input('请输入用户名>>:').strip()
    inp_pwd = input('请输入密码>>:').strip()
    if inp_pwd == 'jkey' and inp_pwd == '123':
        print('logging successful')
        while True:
            print("""
                0 : 退出
                1 : 存款
                2 : 取款
                3 : 转账
            """)
            chios = input('请输入您要进行的操作').strip()
            if chios == '0':
                print('退出成功')
                break
            elif chios == '1':
                print('存款成功')
            elif chios == '2':
                print('取款成功')
            elif chios == '3':
                print('转账成功')
            else:
                print('输入不合法')
        break
    else:
        print('用户名或者密码错误')

注意:代码的执行中最后一步不一定是最后一行代码,即一段主代码会有一堆子代码,你的最后一步可能是成立的子代码中,而不整个代码的最后一行

例如:

while True:
    print("""
                    0 : 退出
                    1 : 存款
                    2 : 取款
                    3 : 转账
                """)
    chios = input('请输入您要进行的操作').strip()
    if chios == '0':
        print('退出成功')
        break
        elif chios == '1':
            print('存款成功')
        elif chios == '2':
            print('取款成功')
        elif chios == '3':
            print('转账成功')  # 这一步是上面条件成立时,该代码的最后一步
        else:
            print('输入不合法')

3.9 while循环,退出本次循环之continue,退出本次循环,重新判断,直接进入下一次

x = 0
while x < 6:
    if x == 2 or x == 4:
        x += 1
        continue  # continue同级别之后千万别写代码,写了也不会运行
    else:
        print(x)
        x += 1

案例:

while tag:
    inp_user = input('请输入用户名>>:').strip()
    inp_pwd = input('请输入密码>>:').strip()
    if inp_pwd == 'jkey' and inp_pwd == '123':
        print('logging successful')
        break
    else:
        print('用户名或者密码错误')
        # continue  # 没有意义,因为之后没有代码的运行,它会自动退出本次循环,去进行下一次的循环

3.10 while+else : else的子代码块会在while循环正常死亡时运行(即没有被break干掉的就叫正常死亡)

while tag:
    inp_user = input('请输入用户名>>:').strip()
    inp_pwd = input('请输入密码>>:').strip()
    if inp_pwd == 'jkey' and inp_pwd == '123':
        print('logging successful')
        break
    else:
        print('用户名或者密码错误')
else:
    print('没有被break结束的本层循环都会执行')

for循环

for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

for循环的语法格式

for iterating_var in sequence:
	statements(s)

for循环执行时的 流程图

img

示例1 : for 循环遍历 字符串

for letter in 'Python':  # 第一个实例
    print('当前被遍历的字母 :', letter)

示例2:for循环遍历 列表

fruits = ['banana', 'apple', 'mango']
for fruit in fruits:  # 第二个实例
    print('当前被遍历的水果 :', fruit)

示例3:用for 和 while 俩种循环来对列表进行取值操作

names = ['jkey', 'liu', 'song', 'xxx', 'xue']
# while 循环取值
l = 0
while l < len(names):
    print(names[l])
    l += 1
# for 循环取值
for name in names:
    print(name)

示例4: for 循环遍历 字典 取值

students_dict = {
    'name': 'jkey',
    'sex': 'male',
    'age': 18,
    'hobbies': ['play', 'music', 'eat']
}
for student_info in students_dict:  # 其中student_info为字典的key
    student_info_value = students_dict[student_info]  # student_info_value 为字典的key对应的值
    print('key:%s\nvalue:%s' % (student_info, student_info_value))

压缩赋值和for循环的搭配使用

name_list_info = [['jkey', '18'], ['liu', '20']]
for x, y in name_list_info:
    print(x, y)

前言: range()方法的介绍

python range() 函数在python2中是直接创建一个整数列表,这会非常耽误空间,而python3中将次功能完善是建立了一个生产列表的对象,一般用在 for 循环中。

函数语法: range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

for 循环搭配break和continue

for i in range(10):
    if i == 3:
        break  # for循环看到break会立刻退出本层for循环
    print(i)

for i in range(11):
    if i == 3:
        continue  # for 循环 看到continue不会往下执行 会讲值取出后往后遍历
    print(i)

for 循环搭配 else 语句

for … else 语句, for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,和while … else 是一样的。

for num in range(10, 20):  # 迭代 10 到 20 之间的数字
    for i in range(2, num):  # 根据因子迭代
        if num % i == 0:  # 确定第一个因子
            j = num / i  # 计算第二个因子
            print('%d 等于 %d * %d' % (num, i, j))
            break  # 跳出当前循环
    else:  # 循环的 else 部分
        print(num, '是一个质数')
posted on 2020-12-21 16:28  Jkeykey  阅读(206)  评论(0编辑  收藏  举报