文章目录

  • 每日测验
  • 垃圾回收机制详解(了解)
    • 引用计数
    • 标记清除
      • 分代回收
    • 与用户交互
      • 接收用户的输入
      • 字符串的格式化输出
      • 填充与格式化
    • 基本运算符
      • 算数运算符
      • 比较运算符: >、>=、<、<=、==、!=
      • 赋值运算符
        • 引入*,可以帮助我们取两头的值,无法取中间的值
    • 流程控制之if判断
  • 作业

每日测验

1、什么是变量?为何要有变量?
2、变量的三大组成部分是?每部分的作用是什么?先定义后引用xxx=10print(xxx)
3、变量名的命名原则、规范、风格name="egon"age_of_egon=18AgeOfEgon=184、变量值的三个特征是什么?id(18):id是值在内存中的身份证号type(18)18
5、is与==的区别is:判断的是id,id是变量值的身份,所以is称之为身份运算符==:判断的是值6、id相同值是否可以相同?id相同值一定相同
7、id不同值是否可以相同?id不同值可以相同value1 == value2value1 is value2
8、用变量的定义说明int、float、str、list、dict、bool类型用于记录何种状态,每种类型至少写出三个示例,如下所示# int型age = 10level = 3year = 1990list与dict:相同点:都能存多个值,称之为容器类型不同点:list是用索引对应值,索引反映的是位置/顺序dict是用key对应值,其中key通常为字符串类型,而str类型具有描述性功能所以key对值可以有描述性功能msg="egon 10"l=['egon',10]info={'name':'egon','age':10}info['name']info={0:'egon',1:10}

垃圾回收机制详解(了解)

引用计数

x = 10  # 直接引用print(id(x))y = xz = xl = ['a', 'b', x]  # 间接引用print(id(l[2]))  #d = {'mmm': x}  # 间接引用print(id(d['mmm']))x=10l=['a','b',x] # l=['a'的内存地址,'b'的内存地址,10的内存地址]x=123print(l[2])x=10x=[10,]l=['a','b',10]

标记清除

用来解决循环引用带来的内存泄露问题

循环引用=>导致内存泄露
l1=[111,]
l2=[222,]l1.append(l2) # l1=[值111的内存地址,l2列表的内存地址]
l2.append(l1) # l2=[值222的内存地址,l1列表的内存地址]print(id(l1[1]))
print(id(l2))print(id(l2[1]))
print(id(l1))print(l2)print(l1[1])del l1
del l2

分代回收

用来降低引用计数的扫描频率,提升垃圾回收的效率

与用户交互

接收用户的输入

在Python3:input会将用户输入的所有内容都存成字符串类型
username = input("请输入您的账号:")  # "egon"
print(username, type(username))age = input("请输入的你的年龄: ")  # age="18"
print(age, type(age))
age=int(age) # int只能将纯数字的字符串转成整型
print(age > 16)int("12345")
int("1234.5")
int("1234abc5")

在python2中:

raw_input():用法与python3的input一模一样
input(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类型
>>> age=input(">>>>>>>>>>>>>>>>>>>>>: ")
>>>>>>>>>>>>>>>>>>>>>: 18
>>> age,type(age)
(18, <type 'int'>)
>>>
>>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
>>>>>>>>>>>>>>>>>>>>>: 1.3
>>> x,type(x)
(1.3, <type 'float'>)
>>>
>>> x=input(">>>>>>>>>>>>>>>>>>>>>: ")
>>>>>>>>>>>>>>>>>>>>>: [1,2,3]
>>> x,type(x)
([1, 2, 3], <type 'list'>)

字符串的格式化输出

值按照位置与%s一一对应,少一个不行,多一个也不行
res="my name is %s my age is %s" % ('egon', "18")
res="my name is %s my age is %s" % ("18", 'egon')
res="my name is %s" % "egon"
print(res)以字典的形式传值,打破位置的限制
res="我的名字是 %(name)s 我的年龄是 %(age)s" %{"age":"18","name":'egon'}
print(res)%s可以接收任意类型
print('my age is %s' %18)
print('my age is %s' %[1,23])
print('my age is %s' %{'a':333})
print('my age is %d' %18) # %d只能接收int
print('my age is %d' %"18")str.format:兼容性好
按照位置传值
res = '我的名字是 {} 我的年龄是 {}'.format('egon', 18)
print(res)res = '我的名字是 {0}{0}{0} 我的年龄是 {1}{1}'.format('egon', 18)
print(res)打破位置的限制,按照key=value传值
res = "我的名字是 {name} 我的年龄是 {age}".format(age=18,name='egon')
print(res)

填充与格式化

# 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
# *<10:左对齐,总共10个字符,不够的用*号填充
print('{0:*<10}'.format('开始执行')) # 开始执行******# *>10:右对齐,总共10个字符,不够的用*号填充
print('{0:*>10}'.format('开始执行')) # ******开始执行# *^10:居中显示,总共10个字符,不够的用*号填充
print('{0:*^10}'.format('开始执行')) # ***开始执行***
2.5 精度与进制print('{salary:.3f}'.format(salary=1232132.12351))  #精确到小数点后3位,四舍五入,结果为:1232132.124
print('{0:b}'.format(123))  # 转成二进制,结果为:1111011
print('{0:o}'.format(9))  # 转成八进制,结果为:11
print('{0:x}'.format(15))  # 转成十六进制,结果为:f
print('{0:,}'.format(99812939393931))  # 千分位格式化,结果为:99,812,939,393,931# 2.3 f:python3.5以后才推出
x = input('your name: ')
y = input('your age: ')
res = f'我的名字是{x} 我的年龄是{y}'
print(res)

基本运算符

算数运算符

print(10 + 3.1)
print(10 + 3)
print(10 / 3)  # 结果带小数
print(10 // 3)  # 只保留整数部分
print(10 % 3) # 取模、取余数
print(10 ** 3) # 取模、取余数

比较运算符: >、>=、<、<=、==、!=

print(10 > 3)
print(10 == 10)print(10 >= 10)
print(10 >= 3)name=input('your name: ')
print(name == 'egon')

赋值运算符

=:变量的赋值
age = 18增量赋值:
# age += 1  # age=age + 1
# print(age)age*=3
age/=3
age%=3
age**=3 # age=age**3链式赋值
x=10
y=x
z=y
z = y = x = 10 # 链式赋值
print(x, y, z)
print(id(x), id(y), id(z))交叉赋值
m=10
n=20
print(m,n)
交换值
temp=m
m=n
n=temp
print(m,n)m,n=n,m # 交叉赋值
print(m,n)解压赋值
salaries=[111,222,333,444,555]
把五个月的工资取出来分别赋值给不同的变量名
mon0=salaries[0]
mon1=salaries[1]
mon2=salaries[2]
mon3=salaries[3]
mon4=salaries[4]解压赋值
mon0,mon1,mon2,mon3,mon4=salaries
print(mon0)
print(mon1)
print(mon2)
print(mon3)
print(mon4)mon0,mon1,mon2,mon3=salaries # 对应的变量名少一个不行
mon0,mon1,mon2,mon3,mon4,mon5=salaries # 对应的变量名多一个也不行

引入*,可以帮助我们取两头的值,无法取中间的值

取前三个值
x,y,z,*_=salaries=[111,222,333,444,555] # *会将没有对应关系的值存成列表然后赋值给紧跟其后的那个变量名,此处为_
print(x,y,z)
print(_)取后三个值
*_,x,y,z=salaries=[111,222,333,444,555]
print(x,y,z)x,*_,y,z=salaries=[111,222,333,444,555]
print(x,y,z)salaries=[111,222,333,444,555]
_,*middle,_=salaries
print(middle)解压字典默认解压出来的是字典的key
x,y,z=dic={'a':1,'b':2,'c':3}
print(x,y,z)

流程控制之if判断

if 条件:代码块
elif 条件:代码块。。。
else:代码块

作业

0、分别画出下面两个列表在内存中是如何存放的
l1=[11,22,[333,444]]
l2=[11,22,[33,{'name':'egon','age':18}]]1、用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式
------------ info of Egon -----------
Name  : Egon
Age   : 22
Sex   : male
Job   : Teacher
------------- end -----------------2、
用户输入账号密码,程序分别单独判断账号与密码是否正确,正确输出True,错误输出False即可3、让计算机提前记下egon的年龄为18岁,写一个才年龄的程序,要求用户输入所猜的年龄
,然后程序拿到用户输入的年龄与egon的年龄比较,输出比较结果即可4、程序从数据库中取出来10000条数据,打算显示到页面中,
但一个页面最多显示30条数据,请选取合适的算数运算符,计算显示满30条数据的页面总共有多少个?最后一页显示几条数据?5、egon今年为18岁,请用增量赋值计算3年后egon老师的年龄6、将值10一次性赋值给变量名x、y、z7、请将下面的值关联到它应该对应的变量名上,你懂的
dsb = "egon"
superman = "alex"8、我们只需要将列表中的傻逼解压出来,一次性赋值给对应的变量名即可
names=['alex_sb','wusir_sb','oldboy_sb','egon_nb','lxx_nb','tank_nb']选做题:
编写用户登录接口(学的多的同学,尝试做下述作业,这是截止到下周二学完文件处理之后的作业)
#1、输入账号密码完成验证,验证通过后输出"登录成功"
#2、可以登录不同的用户
#3、同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)
#扩展需求:在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟

Python基础——垃圾回收、格式化输入输出、基本运算符、流程控制相关推荐

  1. python基础-垃圾回收机制

    垃圾回收 Python中的垃圾回收是以引用计数为主,分代收集为辅.引用计数的缺陷是循环引用的问题. 引用计数 原理:当一个对象的引用被创建或者复制时,对象的引用计数加1:当一个对象的引用被销毁时,对象 ...

  2. python基础1-注释、输入输出、运算符、变量

    1.注释 1.1单行注释 #开头后面都是注释 #这是第一个注释 print("hello注释")#这是第二个注释 print("hello注释2") 一对 连续 ...

  3. a byte of python中文版_面试官问 Python 版 “垃圾回收”机制,我没答上来

    点击"开发者技术前线",选择"星标?" 13:21 在看|星标|留言,  真爱 选自<萌萌哒的柯基> 作者:heroyfhttps://www.he ...

  4. 对比Ruby和Python的垃圾回收(2):代式垃圾回收机制

    本文由 伯乐在线 - 熊崽Kevin 翻译自 patshaughnessy.欢迎加入 技术翻译小组.转载请参见文章末尾处的要求. 对比Ruby和Python的垃圾回收(1) 上周,我根据之前在RuPy ...

  5. 关于python的垃圾回收机制_Python的垃圾回收机制

    知识点的铺垫 对象和引用 python作为一门动态语言,一个简单的赋值语句也是很值得研究的,重要特点就是引用对象分离. a = 1 其中整数1是一个对象,而a是一个引用.利用赋值语句,引用a指向对象1 ...

  6. python中垃圾回收机制_python 垃圾回收机制

    首先我们要说是 以引用计数为主 标记清楚和分代回收为辅 接下来分以下几个方面解释 一 引用计数 每个对象内部都维护了一个值,该值记录这此对象被引用的次数,如果次数为0,则Python垃圾回收机制会自动 ...

  7. 【Python知识点梳理】10.Python的垃圾回收机制、代码规范及命令行参数

    Python的垃圾回收机制.代码规范及命令行参数 文章目录 1.Python的垃圾回收机制 2.Python的引用计数机制 3.Python中的循环数据结构及引用计数 4.Python中的GC模块 5 ...

  8. python垃圾回收机制原理_详解python的垃圾回收机制

    python的垃圾回收机制 一.引子 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存空间给回收掉,而变量名是访问到变量值的唯一方式 ...

  9. 编程基础 垃圾回收_为什么我回收编程问题

    编程基础 垃圾回收 by Amy M Haddad 通过艾米·M·哈达德(Amy M Haddad) 为什么我回收编程问题 (Why I Recycle Programming Problems) M ...

最新文章

  1. 自动驾驶公交车开上苏州街头,这次不是“试运营”了,市民乘车依然免费
  2. python实现简易版成绩管理系统_Python 实现简易版成绩管理系统!
  3. spark context stop use with as
  4. SAP CRM Business partner API里的buffer设计
  5. windows下使用nginx调试简介
  6. 串的定长存储表示【数据结构】
  7. wp自定义帖子没标签_ofollow标签的作用有重大变化
  8. SCSI代码分析(3)SCSI设备的管理2
  9. 常用IP扫描工具整理一下
  10. c语言 四层电梯算法,电梯算法c语言
  11. 如何推广APP软件?
  12. 静态页面笔记包括 html和css
  13. 7-20 打印九九口诀表(分数 15)
  14. 2011大纽约区域赛试题 Decoding EDSAC Data 解题报告
  15. 学完java基础语法之后用来练习的不依赖框架的小项目
  16. linux版本有密钥吗,windows7密钥是什么意思又一Linux版本登陆微软Win10
  17. Spark Core:Scala单词计数
  18. 如何进行PLC数据采集?如何进行PLC录波?如何进行PLC时序分析?看,我的工作成果PLC-Recorder!
  19. 小学教师计算机培训课程感言,小学教师教学技能培训心得体会
  20. ARM/Linux/嵌入式/驱动必需知道的官网网站

热门文章

  1. 数模(1)——层次分析法
  2. 2021 CVVD首届车联网漏洞挖掘赛线上初赛 Writeup
  3. php 同时缩表,别被缩表吓懵了!比它更猛的料来了!
  4. 虚拟机RedHatEenterpriseLinux5安装及Oracle10.2.0安装手记
  5. Python 实现数字的打印
  6. 三维重建02技术介绍及学习路径
  7. 关于arcgis server创建站点失败的问题解决方案
  8. Google MapReduce中文版
  9. 三维坐标点绕任意轴旋转的新坐标计算
  10. 基于微信小程序的实验室教室会议室预约系统源码