分支结构实战讲解:
#1.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
答:
username = input('请输入姓名') #解题思路:看到需要根据用户输入内容/ 用户输入需要使用 input 语法
if username == 'jason': # 设置一个变量 来接收用户已经输入的信息,进行判断。
print('超级管理员')
elif username == 'tom':
print('普通管理员')
elif username in ['jack','rain']: # 这里有多个选项,我们可以用in 语法,建立列表,查询用户输入的内容是否在列表内
print('业务主管')
else: #当用户输入不符合上面的判断,开始生效。
print('普通用户')
# 2.编写用户登录程序
# 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
# eg:black_user_list = ['jason','kevin','tony']
# 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
# eg: oscar 123
black_user_list = ['jason','kevin','tony'] #首先创建一个黑名单列表
username = input('请输入用户名')
if username in black_user_list: # 判断 输入的用户名,是否在黑名单里面
print('黑名单拒绝登录')
elif username == 'oscar': # 判断输入的用户名是否正确
passwold =input('请输入密码')
if passwold == '123': #判断输入的密码是否正确
print('登录成功')
else:
print('密码错误')
else:
print('账号错误,请注册')
#3.编写用户登录程序
#用户如果登录失败 则只能尝试三次
#用户如果登录成功 则直接结束程序
time = 3 # 设置一个登录次数,只能尝试3次,设置初始值为3次
while True: # 开始进入循环 执行循环代码块
name = input('请输入用户名')
passwold = input('请输入密码')
if name == 'moon' and passwold == '123': # 判断,当用户名和密码正确,执行子代码
print('登录成功')
break # 结束整个循环,
else:
print('登录失败用户名或密码错误')
time -= 1 # 每登录失败一次,登录次数减一
if time == 0: # 判断,当登录次数为0时 执行子代码
print('您已经失败了3次,账户锁定')
break # 结束整个循环
# 4.猜年龄的游戏
# 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
# 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
# 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序
time = 3 # 首先通过读题,每次猜测只有3次机会,设置初始猜测次数 3
while True: #开始进入循环
if time == 0: #首先判断,猜测次数是否用完了 如果用完了 执行子代码
s = input('三次机会用完了,还玩吗?(输入y/n)') # 让用户输入
if s == 'y': # 判断用户输入是否正确 正确执行 子代码
time = time + 3 # 子代码: 猜测机会加 3
else: #输入的不是y 执行子代码 结束循环
break
age = input('请猜一个年龄') # 当第一个判断不成立,执行此代码,
age = int(age)
if age == 18: # 用户输入后开始判断 ,条件1:
print('恭喜您猜对了')
break
elif age > 18: # 条件1不符号 执行条件2
print('猜大了')
else: # 条件 1 2 都不符合 执行此代码,
print('猜小了')
time -= 1 # 每循环一次,猜测机会次数-1
print('您还有%s次机会' % time) #告诉用户还剩余几次机会
while循环补充说明
1.死循环
注意是否存在死循环,如何存在死循环一旦执行,CPU功耗会急速上升 直到系统采取紧急措施,如果是在服务器上会直接导致项目受到严重影响。
2.嵌套及全局标志位
强调:一个break只能结束它所在的那一层循环
强调:有几个while的嵌套 想一次性结束 就应该写几个break
强调:如果不想反复写break 可以使用全局标志位
!全局标识位:使用一个变量定义 True 或 False!
!程序运行到一定的条件,可以直接通过改变整个变量 达到控制整个While循环的目的!
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 # 因为这里把true的状态直接改为了False,所以也相当于直接结束了循环
print('正在执行您的指令:%s' % cmd)
else:
print('用户名或密码错误')
流程控制之for循环
for循环能够做到的事情while都可以做到,但是for循环在一些场景下使用更简单编辑,for可以进行数据的遍历。
主要场景为:循环获取一个数据里面的多个数据,
代码展示:
name_list = ['jason', 'kevin', 'tony', 'oscar']
count = 0 # 如果使用while循环来打印列表每一个数据,从引索0开始
while count < 4: # 我们已知列表内数据为4个,
print(name_list[count]) # 通过列表引索取值
count += 1 # 每打印一次引索加一
# 非常繁琐,如果使用for 遍历的方法获取会很方便
num_list = [1, 2, 3, 4, 5, 22, 'moon']
for i in num_list: # 使用 for in 语句 设置i为临时变量,循环遍历列表
print(i)
for循环语法结构
for 变量名 in 待遍历的数据:
for循环体代码
for循环特点
1.擅长遍历取值
2.不需要结束条件 自动结束(遍历完)
3,or循环主要遍历的数据类型有(常见有 字符串、列表、元组、字典、集合)
for循环中的break
for循环体代码中如果执行到break也会直接结束整个for循环
num_list = [1, 2, 3, 4, 5, 22, 'moon']
for i in num_list: # 使用 for in 语句 设置i为临时变量,循环遍历列表
if i == 4: # 当i 等于4时执行子代码
break #直接跳出此次循环
print(i) #输出结果为: 1,2,3.
for循环中的continue
for循环体代码中如果执行到continue也会结束当前循环直接开始下一次循环
num_list = [1, 2, 3, 4, 5, 22, 'moon']
for i in num_list:
if i == 4: # 当i 等于4时执行子代码
continue #跳过这次循环
print(i) #输出结果为: 1, 2, 3, 5, 22, 'moon'
重点:for循环中的break是结束整个for循环 for循环中的continue只是跳过本次循环,接着进行下一次循环遍历
for语法中range的使用
range可以简单的理解为是帮我们产生一个内部含有多个数字的数据
for i in range(5): # 起始位置为0 终止位置为100
print(i) # 0,1,2,3,4
for i in range(5, 10): # 第一个为起始位置 第二个终止位置
print(i) # 5,6,7,8,9
for i in range(10, 20, 2): # 第三个数为等差值 默认不写为1,默认为你设置的等差值。
print(i) # 10,12,14,16,18
注意: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 address in range (0,201): # 1-200在range中为0-201, 使用变量address 遍历0到201
print('https://www.cnblogs.com/#p%s'% address) #格式化输出
今日讲解小练习
1.计算1-100所有的数之和
# # 1.计算1-100所有的数之和
num1 = 0 # 设置一个变量 用来储存数值
for num in range(0,101):
num1 = num + num1 # 所有num相加
print(num1)
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]
counter = 0 # 计数器
for i in l1: # 遍历列表所有内容
if i == 2: # 当遍历的数字是2时 计数器加一
counter += 1
print(counter) # 遍历结束打印计数器
3.编写代码自动生成所有页网址(注意总共多少页)
https://movie.douban.com/top250
# https://movie.douban.com/top250?start=0&filter=
# https://movie.douban.com/top250?start=25&filter=
# https://movie.douban.com/top250?start=50&filter=
# https://movie.douban.com/top250?start=250&filter=
for address in range(0,225,25): #观察发现 从0开始 数差为25 。
print('https://movie.douban.com/top250?start=%s&filter='% address)
4.编写代码打印出下列图形(ps:for循环嵌套)
# *****
# *****
# *****
# *****
for i in range(0,4): #整个来控制行树,外循环一个内也循环一次。
for k in range(0,4): # 思路先做出来一行 ****
k = '*'
print(k,end='') # 使用end取消换行 这一整个for可以实现****
print()
标签:实战,代码,range,循环,https,讲解,print,com,分支
From: https://www.cnblogs.com/moongodnnn/p/16739293.html