首页 > 其他分享 >分支结构实战讲解

分支结构实战讲解

时间:2022-09-28 19:22:56浏览次数:46  
标签:实战 代码 range 循环 https 讲解 print com 分支

分支结构实战讲解:

#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('普通用户')

image

# 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('账号错误,请注册')

image

#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          # 结束整个循环

image

# 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)   #告诉用户还剩余几次机会

image

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只是跳过本次循环,接着进行下一次循环遍历

image

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

相关文章

  • springboot集成swagger之knife4j实战(升级版)
    官方文档链接:https://doc.xiaominfo.com/一、Knifej和swagger-bootstrap-ui对比Knife4j在更名之前,原来的名称是叫swagger-bootstrap-ui,这是两种不一样风格的ui显示,将原......
  • 详细讲解三维动画与二维动画的优缺点有哪些?
    二维动画和三维动画是动画制作中两种重要的表现方式。它们有很多相似之处。三维动画制作是以二维动画为基础的。同时,立体动画制作具有更多的独立差异和优势。动画形象策划不......
  • Python第四章实例、实战
    实例01  实例02  实例03  实例04  实例05    实例06    实例07    实例08    实例09    实例10......
  • SpringBoot 整合RabbitMq 实战
    SpringBoot整合RabbitMq实战参考官网:​​https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-messaging.html#boot-features-amqp​​spri......
  • synchronized实战
    synchronizedsynchronized是最常用的实现同步的手段,在JavaSE1.6以及之后的版本,对synchronized进行了优化,使synchronized整体的性能得到了很大的提升,下面看下synch......
  • java8实战五:用流收集数据
    用流收集数据我们已经在前面两篇文章中用过collect终端操作了,当时主要是用来把Stream中所有的元素结合成一个List。在本章中,你会发现collect是一个归约操作,就像r......
  • 实战指南 | Serverless 架构下的应用开发
    简介: 基于Serverless架构的应用开发流程将会比基于传统架构的应用开发更简单。在Serverless架构下进行应用开发,用户通常只需要按照规范编写代码、构建产物,然后部署到......
  • java8实战十一: java8----新的日期时间API
    java8中新的时间和日期APIJava的API提供了很多有用的组件,能帮助你构建复杂的应用。不过,JavaAPI也不总是完美的。我们相信大多数有经验的程序员都会赞同Java8之前的库对......
  • 分支/合并框架详解
    分支/合并框架详解分支框架的目的是以递归的方式将可以并行的任务拆分成更小的任务,然后将每个子任务的结果合并起来生成整体结果.它是ExecutorService接口的一个实现,他......
  • java8实战三:函数式数据处理--流
    函数式数据处理(一)–流引入流集合是Java中使用最多的API。要是没有集合,还能做什么呢?几乎每个Java应用程序都会制造和处理集合。集合对于很多编程任务来说都是非常基本的:......