while循环与for循环

1.运算符的补充

and
	print(1 < 2 and 1)
	输出的结果为 False
	print(1 < 2)
	输出的结果为 False
	'''当链接的条件时表达式时 计算机会帮你自动装换成布尔值然后在判断'''
	print(1 == 1 and 2)  # 输出结果为 2
	'''
	由于and前面的结果输出为True 所以and链接的条件的结果取决于and的后面的条件
	当后面是一个明确的数据值时 最后输出的结构就是改数据值(改数据值得布尔值必须是True)
	'''
	print(1 == 1 and 1)  # 1   因为and的前面的表达式为True那么就看and后面的条件 如果是数据值就会输出数据值
	print(10 > 20 and 1)  # False  因为and前面的表达式为False 所以就会输出False
	print(10 < 20 and 10)  # 10  
	print(1 and 1 == 1 )  # True
or
	print(1 == 1 or False)  # True
	print(1 or True)  # 1
	print(1 or False)  # 1
'''
and和or链接的多个条件在返回结果时会返回True 也有可能返回具体的数据值
我们在编写代码的时候不需要考虑它返回的是什么 直接当成布尔值处理即可
'''
not 
因为not需要计算所以它返回的肯定是一个布尔值

2.循环结构之while循环

1.while的语法结构
while 条件:
	条件成立时循环执行的子代码
2.while语法的步骤
	1.首先判断while后面的条件
	2.如果条件成立那么执行while的子代码
	3.当子代码执行完之后 就会返回到条件出判断 
	4.如果条件继续成立 就会继续执行子代码 子代码执行完之后 继续返回到条件出判断
	5.以此往复 直到条件不成立就会退出while循环
count = 1
while count < 4:
	print(123)
	count += 1
这个代码的意思是循环打印123打印一次count就加1 当count等于4时while的条件不成立 就会退出循环
while循环的条件可以是布尔值也可以是表达式

image

2.1while+break

1.while + break 的语法结构
while 条件:
	条件成立时循环打印子代码
	break
2.while+break语法的步骤
	1.首先判断while后面的条件 如果条件成立那么执行它的子代码
	2.当子代码运行完之后就会执行break
	3.break 的意思是强制结束本层while循环
3.演示
	count = 1
	while count < 10:
		print(count)
	这条代码的意思是循环打印1到9 当count等于10时 while的条件不成立 然后退出while循环
	count = 1
	while count < 10:
		print(count)
		if count == 7:
			break
	这条代码的意思是打印1到6就会结束while循环 因为当count=7时就会进入if分支
	if的子代码只有break break会强制结束本层while循环 所以只能打印1到6
'''break只能结束本层while的循环'''

image

2.2while + continue

1.while + continue的语法结构
while 条件:
	条件成立时循环执行的子代码
	continue
2.while+continue的流程
	1.首先判断while后面的条件 当条件成立时执行while的子代码
	2.当while的子代码执行完之后 会执行 continue
	3.continue关键字的意思是 结束本次循环直接开始下一次循环
3.演示
count = 1
while count < 11:
	print(count)
	if count == 6:
		count += 1
		continue
这条代码的意思是 打印1到5 7到10 因为当count等于6时 代码就会进入到if分支 
if分支里会把count += 1 然后执行continue 
continue会结束本次代码然后直接返回到while后面的条件 然后继续循环
'''continue也只能结束本层循环然后继续执行循环'''

image

2.3 while + else

1.while + else的语法结构
while 条件:
	条件成立时循环执行子代码
	break
else:
	循环体按照提前定义好的条件正常结束 则会执行
count = 1
while count < 11:
	print(count)
	if count == 7:
		break
	count += 1
else:
	print('因为不是正常结束 所以不会执行')
打印的结果为 1,2,3,4,5,6,7  竖着打印
当count等于7时 代码就会执行break 就会强制结束本层代码 因为不是按照条件结束的循环 所以就不会执行else
因为想要执行else 的前提是while循环是正常结束的
count = 1
while count < 11:
	print(count)
	count += 1
else:
	print('因为是正常结束 所以可以执行else的代码')
打印的结果为 1,2,3,4,5,6,7,8,9,10,正常结束
因为这个while循环是正常结束的 所以才会执行else的子代码print

image

image

作业

1.准确说出下列判断的结果(不要执行代码)

# v1 = 1 or 3   # 1
# v2 = 1 and 3   # 3
# v3 = 0 and 2 and 1  # 0
# v4 = 0 and 2 or 1  # 1
# v5 = 0 and 2 or 1 or 4  # 1
# v6 = 0 or False and 1  # False

2.编写一个用户登录程序1

# 要求:
# 用户如果登录失败
# 则只能尝试三次
# 用户如果登录成功
# 则直接结束程序

# 1.加入计数器
 count = 1
# 2.加入循环
 while count < 4:
     # 3.获取用户信息
     username = input('请输入你的用户名>>>:')
     password = input('请输入你的密码>>>:')
     # 4.判断用户名和密码
     if username == 'jason' and password == '123':
         # 5.正确结束循环
         break
     else:
         print('用户名或密码错误')
         count += 1  # 计数器自增1

3.编写一个用户登录程序2

# 要求:
# 用户如果登录失败
# 可以无限制尝试
# 用户如果登录成功
# 则进入内层循环
# 获取用户输入的指令
# 并打印该指令
# eg: 用户输入cmd指令
# 则程序打印
# '正在执行您的指令:cmd'
# 给用户提供一个退出命令
# 用户一旦输入则退出这个程序
# eg: 用户输入q指令
# 则程序先打印该指令再结束


Flag = True
# 1.加入循环
while Flag:
    # 2.获取用户信息
    username = input('请输入你的用户名>>>:')
    password = input('请输入你的密码>>>:')
    # 3.判断用户名与密码
    if username != 'jason' and password != '123':
        # 4.错误就重新循环
        continue
    else:
        # 5.加入小循环
        while Flag:
            # 6.获取用户的指令
            res = input('请输入您的指令(q指令退出)>>>:')
            # 7.打印用户的指令
            print('正在执行您的指令:%s' % res)
            # 8.判断用户的指令是否为q
            if res == 'q':
                Flag = False  # 将Flag的布尔值变为False

4.猜年龄

# 编写猜年龄的游戏(拔高练习  尝试编写)
# 用户有三次猜测的机会
# 如果用完则提示用户是否继续尝试
# 用户输入y则继续给三次机会
# 如果用户输入q则直接结束程序

# 6.加入一个计数器
count = 1
# 1.定义一个真实的年龄
real_age = 18
# 3.加入循环
while True:
    # 7.判断用户输入了几次
    if count == 4:  # 当计数器等于4时执行改代码
        # 8.获取用的  y或q
        is_again = input('您已经输入了三次是否继续(y/q)>>>>:')
        # 9.判断用户是否继续
        if is_again == 'y':
            count = 1  # 计数器归0
        elif is_again == 'q':
            print('下次继续')
            break  # 结束循环
        else:
            # 提示信息
            print('请输入 y 或 q')
            continue
    else:
        # 2.获取用户输入的年龄
        age = input('请输入您猜测的年龄>>>:')
        # 4.将用户输入的数据装换为整数
        age = int(age)
        # 5.判断用户猜测的年龄
        if age > real_age:
            print('猜大了')
            count += 1  # 每次猜错 计数器加1
        elif age < real_age:
            print('猜小了')
            count += 1  # 每次猜错 计数器加1
        else:
            print('恭喜您猜对了')
            break  # 猜对就退出循环

3.循环结构之for循环

  • for循环的语法结构
    for i in 可迭代的对象: # 可以是列表 字典 字符串 元祖 集合
    for循环的子代码
  • for循环与while循环的不同
    eg: l1 = [1, 2, 3, 4, 5, 6]
    循环打印l1的所有数据值

上述操作都可以完成 但是利用for循环两行代码就可以完成 for循环比while循环更简单
当列表里的值修改时 while循环的条件也需要修改 而for循环不需要修改条件

  • for循环的流程
    首先i会先取出l[0]的值然后会给for循环的子代码使用 子代码运行完之后
    i就会取下一个值就是l[1] 然后继续给for循环的子代码使用
    一直把l1列表里值取完为止

3.1 常见的取值操作

  • 字典的取值
    for循环字典 默认只能拿到key v是不会暴露到外面的

  • 字符串的取值
    for循环字符串 最小单位为单个字符

  • 元祖的取值
    for循环元祖 默认取值的最小单位是单个数据值

  • 集合的取值
    for循环集合 默认取值的最小单位也是单个数据值
  • 整型与浮点型不能被for循环 因为整型与浮点型不是可迭代对象

3.2 for + break

break跟for的使用与break跟while的使用是一样的
都是强制结束本层循环
break也只能结束它所在的for循环

3.3 for+ continue

continue跟for的使用与continue跟while的使用是一样的
都是结束本次循环 直接开始下一次循环
continue也只能结束它所在的for循环

3.4 for + else

else跟for的使用与else跟while的使用是一样的
都是如果循环体代码是正常结束的那么就会执行else
如果for循环是正常结束的那么else是可以被运行的 但是如果for循环不是正常结束的那么else是不会运行的

4.range关键字

range就是可以快速生成一个可以包含多个数据值的列表
  • 只有一个参数
    如果只有一个数字 那么就生成0到数字减1的列表然后给for一个一个调用(顾头不顾尾)

  • 只有两个参数
    如果有两个数字 那么第一个数字是启始位置(包含) 第二数字是结束位置(不包含)

  • 有三个参数
    如果有三个数字 那么第一个数字是启始位置(包含) 第二个数字是结束位置(不包含) 第三个数字可以看作是步长

作业

1.计算1-100所有的数之和

 sum = 0
 for i in range(101):  # i循环拿到0到100的值
     sum += i  # sum = sum + i
 print(sum)  # 5050

2.判断列表中数字2出现的次数

 l1 = [11, 2, 3, 2, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 2, 2, 2, 3, 2]
 count = 0
 for i in l1:  # 循环拿到l1里面所有的值
     if i == 2:  # 每个值都会判断 如果不是2就会拿下一个值继续判断
         count += 1  # 如果等于2count自增1
 print(count)  # 13

3.编写代码自动生成所有页网址

# https://movie.douban.com/top250
# 第一页 https://movie.douban.com/top250
# 第二页 https://movie.douban.com/top250?start=25&filter=
# 第三页 https://movie.douban.com/top250?start=50&filter=
web_url = 'https://movie.douban.com/top250?start=%sfilter='
for i in range(0, 251, 25):  # i循环拿到0到250的值 然后按照25递增
    print(web_url % i)

4.编写代码打印出下列图形(ps:for循环嵌套)

# 	*****
# 	*****
# 	*****
# 	*****
for i in range(4):  # 循环四次
    for k in range(5):  # 循环五次   外层每循环一次内层就会循环五次
        print('*', end='')  # 内层每循环一次就会打印一次  end=''每次打印都不换行
    print()  # 打印完五次换行
posted @ 2022-06-22 17:39  stephen_hao  阅读(218)  评论(0编辑  收藏  举报