今日内容回顾
- 昨日作业讲解
- 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
black_user_list = ['jamer','kevin','tony']
user_name = input('请输入你的名字>>>:')
while True:
if user_name in black_user_list:
print('你被拉黑了')
break
else:
passworld = input('请输入你的密码>>>:')
if user_name == 'jason' and passworld == 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
whlie循环补充说明
1.死循环
真正的死循环一旦执行,就会让CPU功耗急速上升 直到系统采取紧急措施(蓝屏,重启等)
2.嵌套及全局标志位
强调:
2.1:一个break只能结束它所在的那一层循环
2.2:有几个whlie的嵌套 想一次性 结束 就应该写几个break
2.3:如果不想反复写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循环
1.for循环能够做到的事情我whlie都可以做到 只不过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)
2.for循环的语法:
for 变量名 in 待遍历的数据:
for循环体代码
3.for的特点:
3.1:擅长遍历取值
3.2:不需要结束条件 自动结束(遍历执行完)
4.for循环主要遍历的数据类型有:字符串 列表 元组 字典 集合
代码实现:
info = 'hello world'
for i in info:
print(i) # 单个单个字符
d = {'username': 'jason', 'password': 123}
for i in d:
print(i) # 只有键参与遍历
5.for 循环语法结构中的变量名如何命名
5.1做到见名知意
5.2 如果遍历出来的数据值没有具体的含义 可以用 j k v等
6.for循环体代码中如果执行到break也会直接结束整个for循环
7.for循环体代码中如果执行到continue也会结束当前循环直接开始下一次循环
8.for... else....
格式如下:
for 变量名 in 待遍历的数据:
for循环体代码
else:
for循环体代码没有被break强制结束的情况下运行完毕之后 运行
range方法
1.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)
2.range在不同版本的解释器中有不同的效果
在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
编写代码产生博客园文章前两百页的网址
for i in range(1,201):
print( 'https://www.cnblogs.com/#p%s' % (i,))
标签:username,count,用户,range,循环,print
From: https://www.cnblogs.com/zjl248/p/16738694.html