今日内容概要
- 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.整理今日内容及博客