内容概要

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

内容详细

作业讲解

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
# 获取用户输入
username = input('请输入您的用户名:')
black_user_name = ['jason', 'kevin', 'tony']
# 判断是否在黑名单内
if username in black_user_name:
    print('拒绝登录')
# 若是,拒绝登录。若不是,获取密码
else:
    password = input('请输入您的密码:')
    if password =='123':
        print('登录成功')
    else:
        print('拒绝登录')

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.先考虑主题功能 再考虑附加功能
"""

while循环补充说明

1.死循环
	真正的死循环是一旦执行 CPU功耗会急速上升 直到系统采取紧急措施
		尽量不要让CPU长时间不间断运算
        
2.嵌套及全局标志位
	强调:一个break只能结束它所在的那一层循环
 	强调:有几个while的嵌套 想一次性结束 就应该写几个break
  	强调:如果不想反复写break 可以使用全局标志位
 	is_flag = True
   while is_flag:
        username = input('username>>>:')
        password = input('password>>>:')
        if username == 'jason' and password == '123':
            while is_flag:
                cmd = input('请输入您的指令>>>:')
                if cmd == 'q':
                    is_flag = False
                print('正在执行您的指令:%s' % cmd)
        else:
            print('用户名或密码错误')

流程控制之for循环

for循环能够做到的事情while都可以做到 只不过for循环在一些场景下使用更简单
主要场景为:循环获取存储多个数据的数据内部数据值
实际案例:
    name_list = ['jason', 'kevin', 'tony', 'oscar']  # 遍历
    # 循环打印出列表中每一个数据值(while 索引取值>>>:超出范围会报错)
    # count = 0
    # while count < 4:
    #     print(name_list[count])
    #     count += 1
    # for循环
    for i in name_list:
        print(i)
for循环语法结构
	for 变量名 in 待遍历的数据:
 		  for循环体代码
            
for循环特点
	1.擅长遍历取值
 	2.不需要结束条件 自动结束(遍历完)
    
for循环主要遍历的数据类型有(常见有 字符串、列表、元组、字典、集合)
	 info = 'hello world'
    for i in info:
        print(i)  # 单个单个字符
   	
    d = {'username': 'jason', 'password': 123}
    for i in d:
        print(i)  # 只有键参与遍历
    
for循环语法结构中的变量名如何命名
	1.见名知意
 	2.如果遍历出来的数据值没有具体的含义 可以使用常用的
    	i j k item v
        
for循环体代码中如果执行到break也会直接结束整个for循环

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

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

range方法

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

for i in range(101):  # 起始位置为0 终止位置为100 
    print(i)  # [0,.......100]
 
for i in range(10, 20):  # 第一个为起始位置 第二个终止位置
    print(i)
    
for i in range(1, 20, 2):  # 第三个数为等差值 默认不写为1
    print(i)
    
for i in range(3):  # in后面有几个数据值(0,1,2,一共3个),循环走几次
    print(123)  # 输出3次123
 
 
"""
在python2中
	range()
		直接产生一个列表 内部含有多个数值
	xrange()
		其实就是python3里面的range
在python3中
	range()
		类似于一个工厂 不会占用太多的内存空间 要就生产
"""

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
编写代码产生博客园文章前两百页的网址
# 先定义网址的模板
base_url = 'https://www.cnblogs.com/#p%s'
for i in range(1,201):
    print(base_url % i)
	
'''
分页的规律 不同的网址有所区别
	1.在网址里面有规律
	2.内部js文件动态加载
'''

pycharm转cmd