热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

进入python的世界_day5_python基础——流程控制

写在开头,昨天是补全了八种常见数据类型的剩下三种、用户交互、常用运算符,今天主要学习流程控制很重要昨日作业补充另一种方法:原理:可以将表格整体看成是一个字符串先定义出


写在开头,昨天是补全了八种常见数据类型的剩下三种、用户交互、常用运算符,今天主要学习流程控制很重要

昨日作业补充另一种方法:

原理:可以将表格整体看成是一个字符串
先定义出来这个字符串,需要填充的内容全部用%s预留好
info_demo = """
------------ info of %s -------------
Name : %s
Age : %s
Job : %s
---------------- end -----------------
"""
# 然后开始设计用户交互的内容
username = input('username>>>:')
age = input('age>>>:')
job = input('job>>>:')
print(info_demo % (username, username, age, job))
⇧ ⇧
!!!注意,两次username是为了对其 %s的数据个数,必须一致

一、垃圾回收机制



  • 何为垃圾数据?:

    ​ 在计算机内存中没有任何变量命指向的数据,占着空间不用,会被python程序的机制定义为垃圾(注意不同语言垃圾回收机制不一定相等)



  • 3个要点



    1. 引用计数

      ​ 内存中变量值身上有几个变量名绑定引用计数就是几,只要不为0就不是垃圾



    2. 标记清除

      ​ 当内存即将沾满的时候 python会自动暂停程序的执行 从头到尾将内存中数据进行扫描并打上标记 之后一次性清除掉标记的数据



    3. 分代回收

      ​ 记住一句就可以,使用次数越频繁的数据,垃圾回收机制越不会经常去监看他。






二、流程控制理论



  • 首先,做任何事情,都有一个流程,都有一个先后顺序,程序运行也是(正常来说非指定情况下)



  • 任何代码执行流程只有三种情况:(注:可以混用)



    1. 顺序

      ​ 自上而下,依次运行



    2. 分支

      ​ 根据设置的条件,走不同的方向



    3. 循环

      ​ 根据条件,反复运行





​ 插图理解:



流程控制的必备知识点:
1.python中使用缩进来表示代码的从属关系,同级则是依次执行
(一般推荐四个空格)(windows系统按TAB快捷往后缩进,shift+TAB往前缩进)
2.条件都会被转为布尔值,然后决定后面跟着的子代码要不要执行
3.如果同属于某个代码的多行子代码 必须要保持相同的缩进量
例:
while True:
age = int(input('请输入年龄>>>:'))
if 机会 == 3:
print('您已经猜了三次了,是否继续尝试 Y/N')
choice = input('您的选择:')
4.如果上一行代码的结尾如果是冒号 那么下一行代码必缩进
(注意冒号!一定要是英文状态打的!)
5.print没有拥有子代码的权限

​ ⬇⬇


三、分支结构



  • 单单一个if分支结构

    ​ 根据设置的条件做判断,条件成立后就执行子代码

    例:
    age = 20
    if age <24:
    print('年轻真好啊')


  • if 与 else 连用

    ​ 如果if带着的条件成立,就不走else——(同级情况下)

    ​ 如果if不成立,就走else的子代码 ——(同级情况下)

    ​ 二者连用时,永远不会同时执行

    例:
    age = 25
    if age <24:
    print('年轻真好啊')
    else:
    print('已经不年轻了')


  • if与elif else 一起连用

    ​ elif 的意思是1不成立看2,2不成立看3可以一直跟,不是else的(是|非)的选择,如果三者连用,else做收尾

    例:
    age = 25
    if age <18:
    print('青少年')
    elif age <40:
    print('青年')
    elif age <60:
    print('中年')
    else:
    print('老年')


  • if判断的嵌套(很难但是重要)

    ​ 写的时候一定要注意elif else的对齐目标,决定代码的走向,如果条件太绕很容易出错,初期可以画图来梳理嵌套的流程

    例:
    路上看到一个小姐姐,如果很漂亮,上去要微信,两种结果
    →1.给了
    →2.没给,可惜了
    给了微信问是去吃饭还是唱歌,两种结果
    →1.吃饭
    →2.唱歌
    如果转过头发现不漂亮,不好意思认错人了
    代码实现:
    is_beautiful = True # 判断的前置条件
    is_success = True # 判断的前置条件
    if is_beautiful:
    print('小姐姐能否加个微信')
    if is_success:
    choice = input('小姐姐吃饭还是唱歌?')
    print('choice')
    else:
    print('可惜了!')
    else:
    print('不好意思认错人了')



四、whlie循环



  • while 条件:

    条件成立之后循环执行的子代码块



  • 格式:

    ​ while+空格+判断条件+:(英文的)+(换行缩进)子代码



  • 原理:

    ​ 先判断条件成立不,成立就执行循环的子代码,子代码执行完后立马回到最初的条件判断处,再次判断,如果成立,继续循环,如果不成立,结束循环体代码,按照同while该行相同缩进格式的后续代码依次执行



  • 两个与循环有关的单词

    ​ break 打破,打破当层循环

    ​ continue 让循环体代码直接回到条件判断处重新判断

    代码实现:
    1.打印1到10
    count = 1
    while count <11:
    print(count)
    count += 1
    2.打印1到10,如果到6,结束
    count = 1
    while count <11:
    print(count)
    count += 1
    if count > 6:
    break
    3.打印1到10,但是跳过5
    count = 1
    while count <11:
    if count == 5:
    count += 1
    continue
    print(count)
    count += 1


  • while 与 else

    ​ 如果循环体代码没有被人为打断(比如说break,contiue),正常执行完,就会执行else的子代码,否则不执行

    count = 1
    while count <11:
    print(count)
    count += 1
    else:
    print('嗨害嗨')
    执行
    count = 1
    while count <11:
    print(count)
    count += 1
    if count > 6:
    break
    else:
    print('嗨害嗨')
    不执行



作业:

1.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''

解答:
username = input('请输入用户名>>>:')
if username == 'jason':
print('超级管理员已登录')
elif username == 'tom':
print('普通管理员已登录')
elif username == 'jack' and 'rain':
print('业务主管已登录')
else:
print('普通用户已登录')

2.编写用户登录程序
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123

解答:
black_user_list = ['jason','kevin','tony']
username = input('请输入用户名>>>:')
password = input('请输入用户密码>>>:')
if username in black_user_list:
print('网络错误,登录失败')
else:
print('登录成功')

3.编写用户登录程序
用户如果登录失败 则只能尝试三次
用户如果登录成功 则直接结束程序


解答:
count = 0
while count <3:
username = input('请输入用户名>>>:')
password = int(input('请输入密码>>>:'))
if username == 'Jack' and password == 666:
print('欢迎回来,Jack')
break
else:
print('用户或者密码错误,请检查后重新输入')
count += 1
4.猜年龄的游戏
假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序



解答:
基本
while True:
age = int(input('请输入年龄>>>:'))
if age > 18:
print('猜大了')
elif age <18:
print('猜小了')
else:
print('恭喜猜对')
break
拔高
n = 18
count = 0
while count <3:
guess_age = int(input("请输入猜写年龄>>>:"))
if guess_age > n:
print('猜大了')
elif guess_age print('猜小了')
elif guess_age == n:
print('恭喜猜对')
break
count += 1
if count >=3:
choice = input('是否继续,继续将获得三次机会!y/n 请输入>>>:')
print(choice)
if choice == 'y':
while count <6 :
guess2 = int(input('请输入数字>>>:'))
if guess2 > n:
print('还是猜大了')
elif guess2 print('还是猜小了')
else:
print('太棒了,正确了')
break
count += 1
if count == 5:
print('最后一次机会了!')
if count == 6:
print('没有机会了!!\n游戏结束,感谢游玩')
else :
print('游戏结束,感谢游玩')
break



推荐阅读
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 流程控制之分支结构
    一. 什么是流程控制流程控制是程序代码执行的顺序。二. 事物执行流程1)顺序结构从上往下依次执行,我们之前所编写的代码都属于该结构2)分支结构事物的 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 给定一个二维平面上的一些点,通过计算曼哈顿距离,求连接所有点的最小总费用。只有任意两点之间有且仅有一条简单路径时,才认为所有点都已连接。给出了几个示例并给出了对应的输出。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元࿰ ... [详细]
author-avatar
里枯萎
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有