python

流程控制

1.流程控制理论

流程控制的概念
本质就是事物的执行流程 事物的执行流程总共就三种
1.顺序结构
从上往下依次执行 我们之前所写的代码都是顺序结构
2.分支结构
根据条件的不同执行不同的代码
3.循环结构
根据条件的判断绝对是否一直做某件事

2.储备知识

1.python中使用代码的缩进来表示代码的从属关系
缩进的代码是否运行取决于上面没有缩进的父代码(结尾有冒号)
2.缩进量其实没有要求 只要缩进了即可
但是为了美观 一般推荐使用四个空格
3.并不是所有的代码都可以拥有子代码
if关键字 else关键字 elif关键字 ( elif else不能单独使用)
4.同属于一个父代码的多行子代码应该保证相同的缩进量
如果代码缩进了 那就必须往上找一个缩进量比它小的代码作为父代码
这个父代码如果可以拥有子代码 那么没有问题 不可以则直接报错
5.相同缩进量的代码彼此之间没有主次之分 都是按照顺序依次执行

3.流程控制之分支结构

“”"
1.在python中如果想要编写分支结构 那么需要使用关键字if
“”"

1.单if分支

if 条件:
条件成立执行执行的代码(子代码)
条件可以是布尔值 也可以是表达式
判断的条件可以是一个 也可以是由逻辑运算符连接的多个

实战演练

  # 1.定义女人的年龄
 age = 28
 # 2.判断女人的年龄
 if age < 30:
     print('小姐姐你好呀!!!')
 
 # 嵌套(暂且可以不考虑)
 age = 28
 # 2.判断女人的年龄
 if age < 30:
     print('小姐姐你好呀!!!')
     if True:
         print('跟我学习吧!!!')

2.if…else分支

if 条件:
条件成立之后执行的子代码
else:
条件不成立执行的子代码
判断的条件可以是一个 也可以是由逻辑运算符连接的多个

实战演练

name = input('name>>>:')
pwd = input('pwd>>>:')
# 2.判断用户名和密码是否正确(目前只能写死)
# if name == 'jason' and pwd == 123:  # python中不同数据类型之间无法直接做比较
if name == 'jason' and pwd == '123':  # python中不同数据类型之间无法直接做比较
   print('登录成功')
else:
   print('用户明或者密码错误')

3.if…elif…else分支

if 条件1:
条件1成立执行的子代码
elif 条件2:
条件1不成立 条件2成立执行的子代码
elif 条件3:
条件1和2都不成立 条件3成立执行的子代码
else:
上述所有的条件都不成立执行的子代码
if elif else三者连用 永远只会走一个分支
elif 和 else都不能单独使用 必须结合if
4.if的嵌套使用
在大街上看到一个漂亮的背影 上去要微信
如果要微信成功了 则邀请她去看电影(她可能拒绝 也可能接受)
如果接受了则继续吃饭 逛街 等待天黑!!!

  # 1.先定义出各种条件
is_wechat = True
is_movie = True
is_agree = False
is_xxx = True
# 2.条件判断
if is_wechat:
    print('要微信成功了')
    if is_movie:
        print('要去看电影了 找个后排座位 视野好')
        if is_agree and True:
            print('吃饭 逛街 天黑了!!!')
        else:
            print('你个臭流氓!!!')
    else:
        print('看电影多无聊!!!')
else:
    print('你个癞蛤蟆!!!')

4.循环结构之while

while 条件:
条件成立之后循环执行的子代码
1.先判断while后面的条件是否成立 如果成立则执行子代码
2.子代码运行完毕之后 再次回到while后面的条件判断处 判断条件是否成立
3.如果成立则继续运行子代码 完毕后再次判断while后面的条件是否成立
4.依次往复 直到条件不成立才会结束

1.while

while True:
    name = input('name>>>:')
    pwd = input('pwd>>>:')
    if name == 'jason' and pwd == '123':
        print('登录成功')
    else:
        print('用户名或密码错误')

2.while+break

结束循环体的方式
1.自己写结束条件 利用while后面的条件判断(规定12:30下班)
2.在循环体代码中添加关键字强制结束(心情好 10:30就放假)

while True:
    name = input('name>>>:')
    pwd = input('pwd>>>:')
    if name == 'jason' and pwd == '123':
        print('登录成功')
        # 强制结束
        break  # 直接结束break所在的循环体 (结束本层循环)
    else:
        print('用户名或密码错误')

验证一个break只能结束它所在那一层的循环体代码
如果while循环嵌套了很多层,要想退出每一层循环则需要在每一层循环都有一个break


## while True:

    print('我是外层的循环')
    while True:
        print('我是内层的循环')
        break
    break

3.while+continue

结束本次循环,直接进入下一次循环

count = 1
while count < 11:
    if count == 7:
        # 让count自增1
        count += 1
        # 跳过本次循环 直接开始下一次循环
        continue
    print(count)
    count += 1
    
结束本次循环 直接开始下一次循环(也只影响所在的那一层循环而已)

while True:
    print(123)
    while True:
        print(321)
        continue
    continue

4.while+else

count = 1
while count < 11:
    print(count)
    if count == 7:
        break
    count += 1
else:
    print('循环体按照提前定义好的条件正常结束 则会执行')

5.while循环嵌套+tag的使用

如果我们的目的很明确就是要在某一层直接退出所有层的循环,其实有一个窍门,就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束)

username = "jason"
password = "123"
count = 0

tag = True
while tag: 
    inp_name = input("请输入用户名:")
    inp_pwd = input("请输入密码:")
    if inp_name == username and inp_pwd == password:
        print("登陆成功")
        while tag:  
            cmd = input('>>: ')
            if cmd == 'quit':
                tag = False  # tag变为False, 所有while循环的条件都变为False 
                break
            print('run <%s>' % cmd)
        break  # 用于结束本层循环,即第一层循环
    else:
        print("输入的用户名或密码错误!")
        count += 1

5.循环结构之for循环

1.功能

"""
for循环能够做到的事情while循环都可以做到 
但是for循环的语法结构更加简单 尤其擅长循环取值	
"""

2.语法结构

for 变量名 in 可迭代对象: # 字符串 列表 字典 元组
for循环的循环体代码
“”"
针对变量名的命名 如果带取值的数据有明确的指向 最好见名知意
for name in 学习姓名名单
for addr in 地址信息
如果没有明确的指向 可以使用常见的字母
i j k item v …
“”"

3.常见取值操作

循环打印出列表中每一个数据值
列表取值:索引
while循环打印
num = 0
while num < 4:
    print(l1[num])  # 每次循环的时候索引应该自增1
    num += 1
for循环
for i in l1:
    print(i)


user_dict = {
    'username': 'jason',
    'pwd': 123,
    'age': 18
}
"""for循环字典 默认只能取到字典的key"""
for i in user_dict:
    print(i)
desc = 'hello baby! 你会感谢少时奋斗的自己'
"""for循环字符串 默认每次取单个字符"""
for i in desc:
    print(i)


t = (11, 22, 33, 44)
"""for循环元组数据与列表一致 默认都是单个数据值"""
for i in t:
    print(i)


s1 = {1,2,3,4,5}
for i in s1:
    print(i)

4.for+break

# 1-10  7结束
for i in range(1,11):
    if i == 7:
        break
    print(i)
"""
break也能够结束所在的那一层for循环
"""

5.for+continue

# 1-10  7跳过
for i in range(1, 11):
    if i == 7:
        continue
    print(i)
"""
continue也能够结束所在的那一次for循环 直接开始下一次
"""

6.for+else

for i in range(10):
    print(i)
    if i == 5:
        break
else:
    print('嘿嘿嘿 猜猜我什么时候执行')
"""
else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码
"""

6.range知识

1.range方法
	range可以看成是一个能够帮助我们快速产生一个包含多个数据值的列表

for i in range(5):  # 如果括号内只有一个数字 那么就是从0开始到数字减一结束(顾头不顾尾 左包含右不包含)
    print(i)

for i in range(3, 10):  # 括号内有两个数字 第一个是起始位置(包含) 第二个是终止位置(不含)
    print(i)

for i in range(0, 100, 25):  # 括号内有三个数字 最后一个是数据的间隔数(等差数列)
    print(i)


"""
在python2中有两个
	range()
		直接产生一个列表 当数据量很大的时候可能会造成内存溢出(爆满)
	xrange()
		其实就是python3里面的range方法
		
在python3中只有一个
	range()
		类似于是一个工厂 什么时候要什么时候创建给你 节省内存
"""

range方法实操

网络爬虫:python代码模拟网络请求获取数据
很多网址的数据都不止一页 所以有时候需要通过代码模拟(方式1)

博客园多页规律
https://www.cnblogs.com/  第一页
https://www.cnblogs.com/#p2  第二页
https://www.cnblogs.com/#p3  第三页
https://www.cnblogs.com/#p4  第四页
...
大胆猜则第一页还可以这么写
https://www.cnblogs.com/#p1
        
# 编写代码自动产生博客园前一百的网址
"""
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, 101):
    print(base_url % i)

练习

1.判断年龄

1.女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:拜拜
1.列出条件
age = 23
height = 172
weight = 99

2.根据用户输入内容打印其权限

2.根据用户输入内容打印其权限
‘’’
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
‘’’
#1.获取用户信息
username = input(‘请输入用户名>>>:).strip()
#2.判断用户名权限
if username == ‘jason’:
print(‘超级管理员’)
elif username == ‘tom’:
print(‘普通管理员’)
elif username == ‘jack’ and username == ‘rain’:
print(‘业务主管’)
else:
print(‘普通用户’)

3.编写用户登录程序

3.编写用户登录程序
	要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
  		eg:black_user_list = ['jason','kevin','tony']
	如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
   	   eg: oscar 123
while True:
   username = input('请输入用户名>>>:').strip()
   black_user_list = ['jason','kevin','tony']
   #2.判断是否属于黑名单
   if username not in black_user_list:
       password = input('请输入密码>>>:').strip()
       if username == 'oscar' and password == '123':
           print('登录成功')
       else:
           print('用户名或者密码错误')
   else:
       print('登录失败')

4.编写一个用户登录程序

4.编写一个用户登录程序
	用户如果登录失败 则只能尝试三次
	用户如果登录成功 则直接结束程序
real_password = '123'
count = 1
#2.循环
while count < 4:
    #3.获取用户信息
    username = input('请输入用户名>>>:').strip()
    password = input('请输入密码>>>').strip()
    #4. 判断用户信息是否正确
    if username == real_name and password == real_password:
        print('登录成功')
        break
    else:
        print('登录失败')
    #5.提供限制次数(找到while循环的最终限制)
    count += 1

5.编写一个用户登录程序

5.编写一个用户登录程序
用户如果登录失败 可以无限制尝试
用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
   	eg: 用户输入cmd指令 则程序打印'正在执行您的指令:cmd'
给用户提供一个退出命令 用户一旦输入则退出这个程序
   	eg: 用户输入q指令 则程序先打印该指令再结束
#1.正确信息
real_name = 'dui'
real_password = '123'
tag = True
#2.循环结构
while True:
    #3获取用户信息
    username = input('请输入用户名>>>:').strip()
    password = input('请输入密码>>>:').strip()
    #4判断输入用户信息是否正确
    if username == real_name and password == real_password:
        print('登录成功')
        while tag:
              cmd = input('请输入命令>>>:')
              data = '正在执行您的指令:%s'
              print(data%(cmd))
              choice = input('请输入指令>>>:').strip()
              if choice == 'q':
                   print('欢迎下次登录')
                   break
              else:
                   print('指令输入错误')
        break
    else:
        print('账户名或者密码错误')

6.编写猜年龄的游戏

6.编写猜年龄的游戏
	用户有三次猜测的机会 如果用完则提示用户是否继续尝试
	用户输入y则继续给三次机会 如果用户输入q则直接结束程序
#1.正确的年纪
real_age = '18'
count = 1
tag = count
info = """
                ------------ info ---------------
                            继续尝试:y
                            放弃竞猜:q
                ------------ end -----------------
                """
#2.循环结构
while count < 4:
    age = input('请输入年纪>>>:').strip()
    if age == real_age:
      print('恭喜你答对了')
      break
    else:
        print('请再次输入')
        count += 1
        if count == 4:
            print(info)
            choice = input('请输入指令>>>:').strip()
            if choice == 'y':
                while tag < 4:
                    age = input('请输入年龄>>>:').strip()
                    if age == real_age:
                        print('输入正确')
                        break
                    else:
                        print('请再次输入年龄')
                        tag += 1
            elif choice == 'q':
                    print('欢迎再次参加')
            break

7.计算1-100所有的数之和

7.计算1-100所有的数之和
count = 0
for i in range(1, 101):
    count += i
print(count)

8.判断列表中数字2出现的次数

8.判断列表中数字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]
count = 0
for i in l1:
    if i == 2:
        count += 1
print(count)

9.编写代码自动生成所有页网址

9.编写代码自动生成所有页网址
https://movie.douban.com/top250
data = 'https://movie.douban.com/top250?start%s'
for i in range(0,250,25):
       print(data%i)

10.编写代码打印出下列图形(ps:for循环嵌套)

10.编写代码打印出下列图形(ps:for循环嵌套)
	*****
	*****
	*****
	***** 
for i in range(4):
    for j in range(5):
        print("*",end='')
     print()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值