for循环及其应用场景

for循环及其应用场景

一, for循环语法

for循环结构主要用于 (‘序列’ : 字符串, 列表, 元组, 集合以及字典) 类型数据的遍历 (循环) 操作.

for循环主要用于序列类型数据的循环操作 (遍历操作).
另外, 当循环次数未知的情况, 建议使用for循环.

for 循环格式

for 临时变量 in 序列:
	重复执行的代码1
	重复执行的代码2

案例: 使用for循环遍历字符串"itheima"

str1 = 'itheima'
for i in str1:
	print(i)

使用Debug调试以上代码可知: for循环功能非常强大, 可以自动判断序列的长度, 长度为多少, 则for循环就循环多少次. 每次循环时, 系统会自动将序列中的每个元素赋值给变量i, 赋值完成后, for循环内部会自动更新计数器, 向后移动一位, 继续循环, 直至元素全部循环结束.

二, 函数 range 的相关方法

Python2中, range() 函数返回的是列表, 而Python3中 range() 函数返回的是一个可迭代对象 (类型是对象) , 而不是列表类型, 所以打印的时候不会打印列表. (为了方便大家理解, 可以简单的将其理解为一个序列结构)

主要作用: 用于生成一段连续的数字.

函数 range()操作

range(stop)
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循环与range函数, 使用for循环, 循环5次

for i in range(5):
	print(i)

三, for循环案例

案例1:使用for循环, 求1 ~ 100之间所有偶数的和
# 1. 定义一个变量, 用于接收1 ~ 100之间所有偶数的和.
result = 0
# 2. 从1开始循环, 循环100次.
for i in range(1, 101):
	# 3. 判断是否是偶数, 如果是, 就求和.
	if i % 2 == 0:
		# 4. 循环累加变量.
		result += i
# 4. 打印求和结果.		
print(f'1 ~ 100之间所有偶数的和为{result}')		
案例2: 使用for循环实现用户名+密码认证
案例需求

使用for循环实现用户登录:

  1. 输入用户名和密码
  2. 判断用户名和密码是否正确
  3. 登录仅有3次机会, 超过3次会报错
实现思路
  1. 定义变量, 记录正确的账号和密码.
  2. 因为只有3次机会, 所以用 for 循环.
  3. 接收用户录入的账号 和 密码.
  4. 判断是否登录成功, 并提示.
  5. 如果登录成功, 则: 程序结束.
  6. 如果登录失败, 则: 判断是否还有登录机会.
  7. 如果没有机会, 则: 提示账号锁定, 程序结束.
  8. 如果有机会, 则: 提示剩余次数, 并重新录入.
# 1. 定义变量, 记录正确的账号和密码.
username = 'admin'
password = 'admin888'

# 2. 因为只给3次机会, 所以用 for 循环.
for i in range(3):					# i的值: 0, 1, 2, 	剩余的机会分别是: 2, 1, 0
# 3. 接受用户录入的账号 和 密码.
	uname = input('请录入您的账号: ')
	pwd = input('请录入您的密码: ')
	# 4. 判断是否登陆成功, 并提示.
	if uname == username and pwd == password :
		# 5. 如果登录成功, 则: 程序结束.
		print('登陆成功, 欢迎您!')
		# 6. 跳出循环
		break
	else:
		# 6. 如果登录失败, 则: 判断是否还有登录机会.
		# 格式1: if 写法
		if i == 2:
			# 7. 如果没有机会, 则: 提示账号锁定, 程序结束. 
			print('账号锁定, 程序结束')
		else:	
			# 8. 如果还有机会, 则: 提示剩余次数, 并重新录入.
			print(f'密码错误, 还剩{2 - i}次机会')

		# 格式2: 三元运算符.
		print(f'欢迎您, {name}')
		break
	else:
		print('录入有误, 账号已锁定, 请联系管理员!' if i == 2 else f'录入有误, 请重新录入, 您还有{2 - i}次机会'	

四, for循环中的else结构

for循环可以和else配合使用, else下方缩进的代码指的是当循环正常结束之后要执行的代码强调: ‘正常结束’,
若非正常结束, 其else中的代码不会执行的. (如遇到break的情况)

如果循环是正常退出(即: 不是break方式), 则会执行else中的内容.
即: 循环break退出, 不执行else, 不是break方式退出,会执行 else

for循环结构中的else结构格式

for 临时变量 in 序列:
	循环体
else:for循环正常结束后, 返回的代码

break关键字对for…else结构的影响

str1 = 'itheima'
for i in str1:
	if i == 'e':
		print('遇e不打印')
		break
	print(i)								# i
else:										# t
	print('循环正常结束之后执行的代码')		# h
											# 遇e不打印

continue关键字对for…else结构的影响

str1 = 'itheima'						# i
for i in str1:							# t
	if i == 'e':						# h
		print('遇e不打印')				# 遇e不打印
		continue						# i
	print(i)							# m
else:									# a
	print('循环正常结束之后执行的代码')	

五, 总结

  • Q1:for循环的语法是什么?

    • for循环的语法是for 临时变量 in 序列,后面跟着循环体.
  • Q2:for循环的执行流程是怎样的?

    • for循环会自动遍历序列中的每个元素,每次循环时将序列中的元素赋值给临时变量,执行循环体,直到序列中的所有元素都被遍历完毕.
  • Q3:for循环中的else结构的作用是什么?

    • for循环中的else结构在循环正常结束后执行,如果循环被break终止,则else结构不会执行。
  • Q4:break关键词对for…else结构有什么影响?

    • 如果循环被break终止,则else结构不会执行。
  • Q5:continue关键词对for…else结构有什么影响?

    • continue关键词不会影响else结构的执行,else结构仍然会在循环正常结束后执行。

你可能感兴趣的:(python)