python day 05

目录

上节课复习

今日内容

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

# 1、引用计数

# 2、标记清除

# 3、分代回收

# 接收用户的输入

# 字符串的格式化输出

# 2.1 %

# 2.2 str.format:兼容性好

算数运算符

比较运算符

赋值运算符

# 3.1 =:变量的赋值

# 3.2 增量赋值:

# 3.3 链式赋值

# 3.4 交叉赋值

# 3.5 解压赋值


上节课复习


    1、什么是变量?为何要有变量?
    2、变量的三大组成部分是?每部分的作用是什么?
        先定义后引用
            xxx=10
            print(xxx)

    3、变量名的命名原则、规范、风格
        name="egon"

        age_of_egon=18
        AgeOfEgon=18

    4、变量值的三个特征是什么?
        id(18):id是值在内存中的身份证号
        type(18)
        18
    5、is与==的区别
        is:判断的是id,id是变量值的身份,所以is称之为身份运算符
        ==:判断的是值

    6、id相同值是否可以相同?
           id相同值一定相同
    7、id不同值是否可以相同?
           id不同值可以相同

            value1 == value2
            value1 is value2
    8、用变量的定义说明int、float、str、list、dict、bool类型用于记录何种状态,每种类型
        至少写出三个示例,如下所示
            # int型
            age = 10
            level = 3
            year = 1990


        list与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}

今日内容


    1、垃圾回收机制详解(了解)
        引用计数
        标记清除
        分代回收

    2、与用户交互
        接收用户输入
            # python3中
                input
            # python2.7(了解)
                input
                raw_input
        格式化输出
            %
            str.format
            f''

    3、基本运算符
        算数运算符
        赋值运算符
            =
            增量赋值
            链式赋值
            交叉赋值
            解压赋值
        比较运算符
        逻辑运算符
            not、and、or
            区分优先级:not > and > or

            了解:
                短路运算
        成员运算符
            in
        身份运算符
            is

    3、流程控制之if判断
        if 条件:
            代码块
        elif 条件:
            代码块
        。。。
        else:
            代码块

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

# 1、引用计数

# x = 10  # 直接引用
# print(id(x))
# y = x
# z = x
#
# l = ['a', 'b', x]  # 间接引用
# print(id(l[2]))  #
#
# d = {'mmm': x}  # 间接引用
#
# print(id(d['mmm']))


# x=10
# l=['a','b',x] # l=['a'的内存地址,'b'的内存地址,10的内存地址]
#
# x=123
# print(l[2])
#
#
# x=10
# x=[10,]
#
# l=['a','b',10]


# 2、标记清除

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


# 循环引用=>导致内存泄露
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

# 3、分代回收

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

# 接收用户的输入


# 在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(): 要求用户必须输入一个明确的数据类型,输入的是什么类型,就存成什么类型,这样子就给客户造成了麻烦,必须了解python语法
# >>> 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'>)
# >>>


# 字符串的格式化输出


# 2.1 %


# 值按照位置与%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")

# 2.2 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)

# 了解知识
"""
2.4 填充与格式化
# 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度]
# *<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')


赋值运算符


# 3.1 =:变量的赋值


# 3.2 增量赋值:


# age = 18
# # age += 1  # age=age + 1
# # print(age)
#
# age*=3
# age/=3
# age%=3
# age**=3 # age=age**3

# 3.3 链式赋值


# x=10
# y=x
# z=y
# z = y = x = 10 # 链式赋值
# print(x, y, z)
# print(id(x), id(y), id(z))

# 3.4 交叉赋值


m=10
n=20
# print(m,n)
# 交换值
# temp=m
# m=n
# n=temp
# print(m,n)

# m,n=n,m # 交叉赋值
# print(m,n)

# 3.5 解压赋值


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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

右耳要加油

你们的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值