python学习~基础变量、垃圾回收、运算符与流程控制

一、变量与常量

1.变量的定义(底层逻辑)

变量名 赋值符号 变量值

2.变量名的命名规范

数字 字母 下划线的组合
数字不能开头 下划线尽量不要用(后续有特殊含义)
不能与关键字冲突
'''变量名一定要做到见名知意'''

3.变量名的命名风格

1.下划线式(python推荐使用)
	user_name = 'jason'
2.驼峰体(js推荐使用)
	大驼峰
    	UserName = 'jason'
    小驼峰
    	userName = 'jason'

4.python中没有严格意义上的常量 默认使用全大写的变量名作为常量
全大写的变量名主要用在配置文件
# ps:在其他编程语言中有真正的常量

二、垃圾回收机制

定义:
python解释器自带的一种机制,专门用来回收不可用的变量值所占用的内存空间。

堆区与栈区
# 1、变量名与值内存地址的关联关系存放于栈区
# 2、变量值存放于堆区,内存管理回收的则是堆区的内容,

引用计数
一个值的引用计数一旦变为0,其占用的内存地址就应该被解释器的垃圾回收机制回收
标记清除

标记清除
标记/清除算法的做法是当应用程序可用的内存空间被耗尽的时,就会停止整个程序,然后进行两项工作,第一项则是标记,第二项则是清除。

标记的过程其实就是,遍历所有的GC Roots对象(栈区中的所有内容或者线程都可以作为GC Roots对象),然后将所有GC Roots的对象可以直接或间接访问到的对象标记为存活的对象,其余的均为非存活对象,应该被清除
清除的过程将遍历堆中所有的对象,将没有标记的对象全部清除掉。

分代回收

分代回收的核心思想是:在历经多次扫描的情况下,都没有被回收的变量,gc机制就会认为,该变量是常用变量,gc对其扫描的频率会降低,

三、基本数据类型

整型int
age = 18
浮点型float
salary = 1.1
字符串str
引号引起来的部分 描述性 文本
name = ‘jason’
name1 = “jason”
name2 = “”“jason”""
name3 = ‘’‘jason’’’
# 三引号还可以用来表示注释
列表list
中括号括起来 内部可以存放多个元素
元素与元素之间都好隔开 元素可以是任意数据类型
[1, ‘jason’, [1,2,3,4]]
字典dict
大括号括起来 内部可以存放多个元素
元素的表现形式是k:v键值对
k一般是对v的描述性信息
v可以是任意数据类型
{‘username’:‘jason’,‘password’:123}
布尔值bool
True False
“”"
当变量名存储的值是布尔值的情况下
那么变量名一般都是以is开头
is_delete
is_right
is_status
“”"

四、与用户交互

1、输入

input
# python2与python3的区别

'''python3'''
# 将获取到的用户输入赋值给变量名res
res = input('please input your username>>>:')
print(res, type(res))  # id返回一串数字(可以看成是内存地址)  type返回变量值的数据类型
**'''input获取到的用户输入都会存成字符串形式'''**

'''python2'''
input需要用户自己人为的指定输入的数据类型
	'jason' [1,2,3,4]
 
**raw_input等价于python3里面的input**

2、输出

print
1.先写print
	print('jason')
2.先写待打印的内容
	'jason'.print   # tab键即可

3、格式化输出

%s
tmp = ‘my name is %s,my age is %s’ “%s是一个占位符,后续传值替换即可”
name = input(‘username:’)
age = input(‘age:’)
print(tmp%(name,age))

%d
print(‘my name is %s my age is %d’%(‘jason’,123) ) ‘%d也是一个占位符 只能给数字占位’

五、运算符

1.赋值运算符
	name = 'jason'
    # 先看右边再看左边
 
2.算术运算符
	+-*///  整除
    %	取余
    **  幂指数
	print(1 - 1)
    print(1 * 10)
    print(10 / 2)
    print(10 // 3)
    print(10 % 3)
    print(2 ** 4)
    # python语言对数字的精确的其实并不是很高  需要借助于'大佬'辅助
    # 其他数据类型也可以使用局部的数学运算符
    print('hello' + 'world')  # 字符串拼接
    print('hello'*2)  # 字符串复制
 
3.增量赋值
	x = 1
	x = x + 1  # 等价于 x += 1  
	print(x)
    
    x -= 1  # x = x - 1
    x *= 1  # x = x * 1
    x /= 1  # x = x / 1
    ...

4.链式赋值
	# x y z 10
    # x = 10
    # y = x
    # z = x
    # 链式赋值
    x = y = z = 10
  
5.交叉赋值(面试题可能会出)
	x = 10
    y = 999
    # 将x与y对调指向
    # x = y
    # y = x
    # print(x,y)

    # 方式1  中间变量
    # z = x
    # x = y
    # y = z
    # print(x,y)
    # 交叉赋值
    x, y = y, x
    print(x, y)
    
6.解压赋值
	# name_list = ['jason','egon','tony','kevin']
    # name1 = name_list[0]
    # name2 = name_list[1]
    # name3 = name_list[2]
    # name4 = name_list[3]
    # print(name1,name2,name3,name4)
    # 解压赋值
    # name1, name2, name3, name4 = name_list  # 按照位置一一对应赋值
    # print(name1, name2, name3, name4)

    # name1, name2, name3 = name_list  # 少了不行
    # name1, name2, name3, name4, name5 = name_list  # 多了不行

    # 可以打破个数必须相等的情况
    l = [11, 22, 33, 44, 55, 66, 77, 88, 99]
    a, b, *_, c = l
    print(a, b, _, c)
    a, b, *_ = l
    print(a, b, _)
    """
    *_  下划线表示接收到的数据无需使用 
    """

7.比较运算符
	> < >= <= == !=
    print(10 > 2)
    print(2 == 2)
    print(3 != 4)

    # 补充
    print('hello' > 'world')
    """
    字母内部对应着数字
        A-Z 65-90
        a-z 97-122
    """
    print([1,2,3] > [0,1,2,3,4,5,6,7,8,9])

8.逻辑运算符
	与	and
    	连接多个条件 条件必须都成立
    或	or
    	连接多个条件 一个成立就可以
    非	not
    	取反
    print(True and False and 8)
    print(True or False or 8 )
    print(not True)
    # 布尔值为False: 0 None '' [] {}  (重要)
    """
    三者混合使用是存在优先级的
        但是我们在混合使用的时候不应该考虑优先级
        通过加括号的形式来明确优先级

六、 成员运算

in
	判断在...里面
not in
	取反
 
print('a' in 'hello world aaa')
print('hello' in 'hello world aaa')
print('jason' in ['jason', 'egon', 'kevin'])

# 字典参与成员运算 只有key参加 value无法参与
print('jason' in {'name': 'jason', 'pwd': 123})
print('name' in {'name': 'jason', 'pwd': 123})

七、身份运算

==  仅仅判断值是否相等   
is	判断内存地址是否相等(id)

l1 = ['jason', 'egon', 'kevin']
l2 = ['jason', 'egon', 'kevin']
# print(id(l1),id(l2))
print(l1 == l2)  # True
print(l1 is l2)  # False
"""
值相等内存地址不一定相等
内存地址相等值一定相等
"""

八、流程控制

顺序结构
	代码自上而下依次运行(我们之前所写的代码都是顺序结构)
分支结构
	代码运行到某个节点之后根据条件的不同执行不同的代码(if判断)
循环结构
	代码运行到某个节点之后一直重复执行某一段代码直到结束(whilefor)

分支结构

"""
必备知识
	代码缩进
	在python中使用缩进来表示代码的从属关系
	一般情况下我们采取四个空格来表示缩进(推荐)
	
	并不是所有的代码都可以拥有子代码
	截至目前为止只有if可以拥有子代码
	
	同属于一个关键字的子代码必须要保持相同的缩进量
	ps:可以简单的记忆遇到冒号下面的代码必缩进
"""
# 如果女孩子的年龄小于30岁 打印小姐姐
# girl_age = 58
# if girl_age < 30:  # if判断
#     print('小姐姐好')
#     print('小姐姐好')
#     print('小姐姐好')
#     print('小姐姐好')
"""
if 条件:
   条件成立之后才会执行的代码
"""

# 如果女孩子的年龄小于30岁 打印小姐姐 否则打印认错人了
# girl_age = 68
# if girl_age < 30:
#     print('小姐姐好')
# else:
#     print('认错人了')
"""
if 条件:
    代码1
    代码2
    ...
else:
    代码1
    代码2
    ...
如果条件成立则走if的子代码
如果条件不成立则走else的子代码
"""
# 如果女孩子的年龄小于30岁 打印小姐姐 小于40随打印阿姨我不想努力了 小于50岁老宝贝 否则躺平

# girl_age = 28
# if girl_age < 30:
#     print('小姐姐')
# elif girl_age < 40:
#     print('阿姨我不想努力了')
# elif girl_age < 50:
#     print('老宝贝')
# else:
#     print('躺平')
"""
if 条件1:
    代码1
    代码2
    ...
elif 条件2:
    代码1
    代码2
    ...
else:
    代码1
    代码2
    ...
    
"""

条件1成立 执行if的子代码 elif和else都不执行
条件2成立(说明条件1没有成立) 执行elif的子代码 if和else都不执行
如果条件都不成立 则走最后的else子代码 if和elif都不执行
elif可以写多个

分支结构补充

# 条件可以是一个 也可以是多个连接
# gender = 'female'
# age = 18
# height = 165
# is_beautiful = True
# if gender == 'female' and age < 22 and height > 155 and is_beautiful:
#     print('吃饭看电影 天黑了')
# else:
#     print('我有事先走了')


# if嵌套
# gender = 'female'
# age = 18
# height = 165
# is_beautiful = True
# is_success = True
# if gender == 'female' and age < 22 and height > 155 oand is_beautiful:
#     print('能否加个微信认识一下?')
#     if is_success:
#         print('吃饭 散步 看电影 交流')
#     else:
#         print('你是个好人')
# else:
#     print('我有事先走了')


# 成绩评判系统
"""
分数大于90 打印优秀
分数大于80 打印良好
分数大于70 打印一般
分数大于60 打印及格
分数小于60 打印挂科
"""
# score = input('score>>>:')
# # 暂且先忽略
# score = int(score)
# if score > 90:
#     print('优秀')
# elif score > 80:
#     print('良好')
# elif score > 70:
#     print('一般')
# elif score > 60:
#     print('及格')
# else:
#     print('挂科')



# 2.用户登录功能
# 1.获取用户的用户名和密码
# username = input('username>>>:')
# password = input('password>>>:')
# # 2.判断用户名和密码是否正确
# if username == 'jason' and password == '123':
#     print('老板好 来宾三位!')
# else:
#     print('去你妹的')


# 3.根据星期的不同做出不同的动作  周一到周五划水  周六周日躺平
# today = input('周几>>>:')
# if today in ('一','二','三','四','五'):
#     print('划水')
# elif today in ('六','七'):
#     print('躺平')
# else:
#     print('见了鬼了')

循环结构

# while True:
#     # 1.获取用户的用户名和密码
#     username = input('username>>>:')
#     password = input('password>>>:')
#     # 2.判断用户名和密码是否正确
#     if username == 'jason' and password == '123':
#         print('登录成功')
#     else:
#         print('用户名或密码错误')

"""
while 条件:
    循环体代码1
    循环体代码2
    ...
当条件成立的情况下 会依次执行while子代码
子代码运行结束之后再次返回到条件处判断条件是否成立 如果成立继续执行
如果不成立则结束循环
"""
# while True:
#     res = input('start>>>:')
#     while True:
#         # 1.获取用户的用户名和密码
#         username = input('username>>>:')
#         password = input('password>>>:')
#         # 2.判断用户名和密码是否正确
#         if username == 'jason' and password == '123':
#             print('登录成功')
#             # 结束循环
#             break  # 结束离它最近的一个循环  本层循环
#         else:
#             print('用户名或密码错误')
#     break



# 循环打印1-10 除了数字7
# count = 1
# while count < 11:
#     if count == 7:
#         count += 1
#         # 跳过本次循环 开始下一次循环
#         continue
#     print(count)
#     # 让count自增1
#     count += 1


# count = 1
# while count < 11:
#     if count == 7:
#         break
#     print(count)
#     # 让count自增1
#     count += 1
# else:
#     print('当while没有被break主动结束的情况下自动结束了 则会走else')

循环嵌套

# 循环嵌套
# while True:
#     # 1.获取用户的用户名和密码
#     username = input('username>>>:')
#     password = input('password>>>:')
#     # 2.判断用户名和密码是否正确
#     if username == 'jason' and password == '123':
#         print('登录成功')
#         # 循环结构
#         while True:
#             command = input('command>>>:')
#             if command == 'q':
#                 break
#             print('正在执行您的命令:%s'%command)
#         break
#     else:
#         print('用户名或密码错误')


# 全局标志位
# flag = True
# while flag:
#     # 1.获取用户的用户名和密码
#     username = input('username>>>:')
#     password = input('password>>>:')
#     # 2.判断用户名和密码是否正确
#     if username == 'jason' and password == '123':
#         print('登录成功')
#         # 循环结构
#         while flag:
#             command = input('command>>>:')
#             if command == 'q':
#                 flag = False
#             print('正在执行您的命令:%s'%command)
#     else:
#         print('用户名或密码错误')

for循环

for循环能够做到的事情while循环都可以做到
但是for循环使用起来比while更加的简单快捷

# name_list = ['jason','egon','kevin','tony']
# print(len(name_list))  # 4
# 使用while循环将列表中的元素依次打印出来
# count = 0
# while count < len(name_list):
#     print(name_list[count])
#     count += 1

# for循环
# for name in name_list:
#     print(name)
"""
for 变量名 in 可迭代对象:  # 看成是 字符串 列表 字典等类型
    for循环的循环体代码
    
变量名如果你真的不知道起什么 一般都是以
    i、j、item
"""

# for i in 'hello world':  # for循环字符串 将单个单个的字符依次赋值给变量名i
#     print(i)


# for i in {'name':'jason','pwd':123}:  # for循环字典 指挥依次拿到字典的key
#     print(i)


# 打印0-10
# count = 0
# while count < 11:
#     print(count)
#     count += 1

# for i in range(11):  # range简单的看成是一个能够产生一个含有多个元素的列表
#     print(i)

# for i in range(1,11):  # range简单的看成是一个能够产生一个含有多个元素的列表
#     print(i)
"""
range(起始位置,终止位置)
    顾头不顾尾
"""

"""
range
在python3中 类似于是一个老母猪 
    需要值的时候才会给你 不需要的时候就不给    节省内存
在python2中 直接生成一个列表
    不节省内存
    xrange(10)  等价于 python3里面的range()
"""



# break
# for i in [1,2,3,4,5,6]:
#     if i == 4:
#         break  # 结束本层for循环  与while+break一致
#     print(i)

# continue
# for i in [1,2,3,4,5,6]:
#     if i == 4:
#         continue  # 结束本次for循环  与while+continue一致
#     print(i)

# else  for循环正常结束之后走else 否则不走  与while+else一致
# for i in range(5):
#     if i == 3:
#         break
#     print(i)
# else:
#     print('快结束了')


# 九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print('%s*%s=%s'%(i,j,i*j),end=' ')
    print()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值