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 循环的执行流程图
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循环执行时的 流程图
示例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, '是一个质数')