while循环,for循环,range对象

今日内容概要

  • 1.作业讲解
  • 2.while循环补充说明
  • 3.流程控制之for循环
  • 4.基本数据类型内置方法

今日内容详细

1.作业讲解

1.根据用户输入内容打印其权限
    '''
    jason --> 超级管理员
    tom  --> 普通管理员
    jack,rain --> 业务主管
    其他 --> 普通用户
    '''
	 # 1.获取用户输入的用户名
    username = input('请输入您的用户名>>>:')
    # 2.判断用户名 打印不同的提示>>>:不同的条件执行不同的代码 那么需要使用分支结构
    if username == 'jason':
        print('超级管理员')
    elif username == 'tom':
        print('普通管理员')
    # elif username == 'jack' or 'rain':  # 错误写法
    # elif username == 'jack' or username == 'rain':  # 正确写法
    elif username in ['jack', 'rain']:  # 正确写法
        print('业务主管')
    else:
        print('普通用户')
    
    
2.编写用户登录程序
 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
    eg:black_user_list = ['jason','kevin','tony']
 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
    eg: oscar 123
3.编写用户登录程序
 用户如果登录失败 则只能尝试三次
 用户如果登录成功 则直接结束程序
	 # 4.定义一个计数器
    count_num = 1
    while True:
        # 6.先判断当前尝试了几次
        if count_num == 4:
            print('很抱歉 您已经尝试了三次')
            break
        # 1.获取用户数据
        username = input('username>>>:')
        password = input('password>>>:')
        # 2.校验数据是否正确
        if username == 'jason' and password == '123':
            print('登录成功')
            break  # 3.结束循环体代码
        else:
            print('用户名或密码错误')
            # 5.每错误一次就让计数器自增1
            count_num += 1


4.猜年龄的游戏
 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序
 	 # 1.先定义用户的真实年龄
    real_age = 18
    # 8.定义计数器
    count_num = 1
    # 6.添加循环结构
    while True:
    # 10.判断当前尝试的次数
    if count_num == 4:
        choice = input('您已经尝试了三次 是否继续尝试(n/y)>>>:')
        # 11.判断用户输入的选择
        if choice == 'y':
            # 12.重置计数器
            count_num = 1
        else:
            print('下次再来玩哟')
            break
    # 2.获取用户猜测的年龄
    guess_age = input('你猜一猜我的年龄 好不好呀>>>:')
    # 3.由于一会儿需要比较大小 所以要将用户输入的字符串年龄转成整型的年龄
    guess_age = int(guess_age)  # 有小bug 暂时不考虑
    # 4.判断年龄是否猜测正确
    if guess_age > real_age:
        print('你这小伙子 真讨厌 人家有那么大吗')
        # 猜测错了 计时器加一
        count_num += 1
    elif guess_age < real_age:
        print('哎呀 你真讨厌 人家也没那么小啦')
        # 猜测错了 计时器加一
        count_num += 1
    else:
        print('你真棒 猜对了 嘿嘿嘿')
        # 7.猜对了 直接结束循环
        break
"""
1.先写注释(思维逻辑和想法)
2.先考虑主题功能 再考虑附加功能
"""

2.while循环补充说明

1、死循环
	真正的死循环是一旦执行 CPU功耗会急速上升 直到系统采取紧急措施
  尽量不要让CPU长时间不断运算
2、嵌套及全局标志位
强调:一个break只能结束它所在的那一层循环
		一个while嵌套 想一次性结束就应该写几个break
  	如果不反复写break 可以使用全局标志位
    is_flag = True
    while is_flag:
			print("jason")
      c = input=("y/n")
      if c=="n":
      	is_flag=False

3.流程控制之for循环

for循环能够做到的事情while都可以做到 只不过主for循环在一些场景下使用更简单
主要场景为:循环获取存储多个数据的数据内部数据值
实际案例:
		name_list = ['jason','kevin','tony','oscar']
  # 循环打印出列表中每一个数据值(while 索引》〉》:超出范围会报错)
  count=0
  while count<4:
    print(name_list[count])
    count+=1
  for i in name_list:
    print(i)
for 循环语法结构
	for 变量名 in 待遍历的数据:
  	代码块
for 循环特点
	1、擅长遍历取值
  2、不需要结束条件 遍历完自动结束
for 循环主要遍历的数据类型有(字符串、列表、元祖、字典、集合)
info = "hello world"
for i in info:
  print(i)
 d = {"name":"jason","age":"18"}
for i in d:
  print(i) #只有键参与遍历

  for 循环语法结构中的变量名
  1、见名知意
  2、遍历出来的数据值么有具体含义的可以使用常用的
  i j k item v
  
for 循环体代码中如果执行到break也会直接结束整个for循环

for 循环体代码中如果执行到countinue也会结束当前循环直接开始下一次循环

for 变量名 in 待遍历的数据:
	循环代码
 else:
	循环代码没有被break强制结束的情况下,执行完毕后 运行

4.range方法

可以简单的理解为是帮我们产生一个内部含有多个数字的数据合集

for i in range(101): #起始位置为0,终止位置为100

  for i in  range(10,20)#第一个起始位置10,第二个为终止位置20-1 =19
  for i in range(1,20,2): #第三个为等差值 默认不写为1
    print(i)
    """
在python2中
	range()
		直接产生一个列表 内部含有多个数值
	xrange()
		其实就是python3里面的range
在python3中
	range()
		类似于一个工厂 不会占用太多的内存空间 要就生产
"""

5.range实战案例

网络爬虫
	使用代码爬取网络上我们需要的数据
项目需求
	爬取所有页面的数据(博客园)
找寻规律
	https://www.cnblogs.com/
 	https://www.cnblogs.com/#p2
 	https://www.cnblogs.com/#p3
 	https://www.cnblogs.com/#p4
	
 	大胆猜测:第一页是 https://www.cnblogs.com/#p1
编写代码产生博客园文章前两百页的网址
	
'''
分页的规律 不同的网址有所区别
	1.在网址里面有规律
	2.内部js文件动态加载
'''

6.作业

# 1.整理今日内容及博客
# 2.练习作业讲解题目 彻底搞懂
# 3.计算1-100所有的数之和
# sum = 0
# for i in range(101):
#     sum +=i
# print(sum)

# 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]
# c= 0
# for i in l1:
#     if i ==2:
#         c+=1
# print(c)

# 3.编写代码自动生成所有页网址(注意总共多少页)
# 	https://movie.douban.com/top250
# page_num = 251
# ip_addr = "https://movie.douban.com/top%s"
# for i in range(page_num):
#     print(ip_addr % i)


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

# row = 4
# col = 5
# for i in range(row):
#     for j in range(col):
#         print("*",end="")
#     print()

# 5.整理今日内容及博客
posted @ 2022-09-28 16:28  虾仁猪心排骨汤  阅读(87)  评论(0编辑  收藏  举报