运算符
Python 支持的比较运算符如下:
>:大于,如果运算符前面的值大于后面的值,则返回 True;否则返回 False。
>=:大于或等于,如果运算符前面的值大于或等于后面的值,则返回 True;否则返回 False。
<:小于,如果运算符前面的值小于后面的值,则返回 True;否则返回 False。
<=:小于或等于,如果运算符前面的值小于或等于后面的值,则返回 True;否则返回 False。
==:等于,如果运算符前面的值等于后面的值,则返回 True;否则返回 False。
!=:不等于,如果运算符前面的值不等于后面的值,则返回 True;否则返回 False。
is:判断两个变量所引用的对象是否相同,如果相同则返回 True。
is not:判断两个变量所引用的对象是否不相同,如果不相同则返回 True。
# n1 = int(input('请输入第一个数:'))
# n2 = int(input('请输入第二个数:'))
# # 判断n1 与 n2
# result = n1 > n2 # 结果False True
# # 8 > 12 --->False
# print('n1>n2:',result)
# result = n1 == n2
# print('n1==n2:',result)
# m1='hello'
# m2='hello'
# result = m1==m2
# print('m1==m2:',result)
# username= input('输入用户名:')
# uname ='admin123'
# # result = username==uname
# result = username != uname # 如果两者不相等则会返回True,相等则返回False
# print('用户名的验证结果是:',result)
# is 用户对象的比较
age = 20
age1 = 20
print(id(age))
print(id(age1))
print(age is age1)
money = 2000000
salary = 2000000
print(id(money))
print(id(salary))
print(money is salary)
小整数对象池和大整数对象池
批量处理的文件,和终端执行的结果不一样,为什么?
1. 小整数对象池
整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。
Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,
所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。
2.大整数对象池。说明:终端是每次执行一次,所以每次的大整数都重新创建,而在pycharm中,每次运行是所有代码都加载都内存中,属于一个整体,所以
这个时候会有一个大整数对象池,即处于一个代码块的大整数是同一个对象。c1 和d1 处于一个代码块,而c1.b和c2.b分别有自己的代码块,所以不相等。
逻辑运算符
# and or not
# and 逻辑与
# or 逻辑或
# not 逻辑非
# 逻辑运算符的运算结果也是返回True False
#
'''
只要有一边为假False,结果就是False
左 右
True and True ----》True 其他情况
True and False --->False
False and True ----》False
False and False ----》False
8>10 and 6<8
False and True ---->False
'admin' == 'admin123' and '123456'=='123456' ---->False
False True
'''
n1= 8
n2 =5
n3=3
result = n1>=(n2+n3) and n1>n2
'''
步骤:
1. n1>=(n2+n3) 8 >= 8 True
2. n1>n2 8>5 True
3. True and True
4. 结果:True
'''
n2=n2+n3
# n2--->8
result = n1>=n2 and n1==n3
# True and False ---->False
n4=(n1+n3)-n2 # n4=3
result = n4<n1 and (n4+n3)>n2 # False
'''
or: 或者
手机号 或者 账户名
只要有一边为真True,结果即为真True
True or True ---->True
True or False ---->True
False or True ---->True
False or False ---->False
'''
# 判断是否存在用户
username = ''
email ='63478364@qq.com'
result = username=='admin123' or email =='63478364@qq.com'
# False or True ---->True
print('or ---->',result)
a=2
b=5
c=7
result = (a+b)!=c or c>a
print('or--222-->:',result)
flag = False
result = not flag # not就是取反
print('not ---->:',result)
#输出
or ----> True
or--222-->: True
not ---->: True
二进制、八进制、十进制、十六进制
# 位运算
# 二进制: 0 1
'''
1 1
8 4 2 1
'''
a =3
print(bin(a)) # 0b 11
a=13
print(bin(a))
b = 0b10111 # 0b 二进制 二进制的表示: 0b1000101
print(int(b))
c=-8 # -0b1000 0000 1000
print(bin(c))
c= 0o6430 # 0o 开头的都是八进制 里面的数字不能超过8
print(int(c))
# 开头表示0x 0-9 a-f
# 应用: FFFFFF 000000 FF0000 00FF00
d=0x9ab16
print(int(d))
'''
&
|
~
^
<<
>>
'''
print(3 & 2)
'''
类似and
1 True 0 False
0000 0011
& 0000 0010
------------
0000 0010
| 类似or
1 True 0 False
'''
print(5 | 3)
'''
0000 0101
| 0000 0011
--------------
0000 0111
'''
print(~5) # 取反 将十进制的数字对应的二进制进行取反操作。
'''
0000 0101
取反:
1111 1010
-6
1111 1010 减1
1111 1001 取反
0000 0110 6
看第一位(第一位是符号位,只要第一位是1的就是负数,第一位是0的就是整数)
-6:
0000 0110
1111 1001 反码
1111 1010 补码
'''
# 异或 ^ 相同的是0 不同的是1
print(3^5)
'''
# 步骤:
1. 左边的数字转成二进制
2. 右侧的数字转成二进制
3. 对齐,上下进行比较(相同的是0 不同的是1)
4. 将计算的结果转成十进制
3 0000 0011
5 0000 0101
----------------
0000 0110 -----> 6
'''
# 左移:
print(2<<1) # 4
print(2>>1) # 1
'''
2的二进制:
0000 0010
左移: m<<n m*2的n次方
右移: m>>n m//2的n次方
'''
print(16<<2)
print(16>>2)
print(-0b1000000)
print(64<<1)
#输出
0b11
0b1101
23
-0b1000
3352
633622
2
7
-6
6
4
1
64
4
-64
128
三目运算符
# 三目运算符
# 格式:表达式 ? 真 : 假
# result = (8>10)?'真':'假'
# print(result)
# python的格式: 结果 if 表达式 else 结果
a=6
b=5
result = (a+b) if a<b else (b-a)
'''
判断表达式是True还是False
如果是True则 将if前面的内容进行运算,并将结果赋值成result
如果是False则将else后面的内容运算结果,并将结果赋值成result
'''
print(result)
#输出
11
# 运算符的优先级:
'''
排序:
**
~
+ - (符号运算符)
* / // %
+ - 加减
<< >>
&
^
|
== != > >= < <=
is is not
not
and
or
'''
if ... else ...
'''
变量
运算符
语句:
条件判断语句
循环语句
跳转语句
条件语句:(判断)
应用场景:
1. 用户名和密码登录
2. 用户登录验证(看影院信息,判断用户是否登录了,没有登录弹窗口,登录看到信息)
if 条件:
条件成立执行的语句
'''
username='admin' # 没有登录
# password=''
# python: 判断的变量是'' 0 None 默认是False
# python: 如果变量有值'abc','kkkk','yueryu',认为是True
if username: # 'admin'!='' True 如果条件运算结果是True则进入内层
print('嘿嘿!我登录啦!')
print('-------------')
num =9
if num:
print('------>',num)
'''
if num:
print('.....')
等效:
if num!=0:
print('.....')
'''
'''
练习:
如果年龄大于18 并且 输入le姓名,则打印xxx今年xxx岁
'''
# age = int(input('输入年龄:'))
# username=input('输入用户名')
# if age>18 and username: # True and False --->False
# print('{}今年{}岁了!'.format(username,age))
# print('---game over----')
'''
if 判断的第二种使用方式:
if 表达式(条件):
条件成立
else:
条件不成立执行的语句
注意:添加缩进 一个tab
'''
'''
需求:
消消乐
lv1
lv2
lv1: 免费玩 随便玩
lv2: 充值 买道具 继续玩
'''
# print('*'*10,'欢迎来到消消乐','*'*10)
# level = input('请输入你的级别(lv1,lv2):')
# if level=='lv1':
# print('免费玩 随便玩')
# else:
# print('已经进入付费级别,充值继续玩')
# money = int(input('请充值(必须是100的倍数):'))
# # if 语句是允许嵌套,注意缩进问题
# if money%100==0 and money>0:
# print('充值成功!充值金额是:',money)
# else:
# print('充值失败,充值金额必须是100的倍数!')
'''
if 条件1:
成立
if 条件2:
成立
else:
不成立
else:
不成立
if 条件3:
成立
else:
不成立
'''
# 随机数:
import random
# print(random.randint(1,10))
'''
猜大小
步骤:
1. 系统产生一个随机数
2. 键盘输入一个数
3. 将系统产生的与键盘输入的进行比较
4. 猜对了,中大奖 猜错啦 拜拜下次再来
'''
# ran = str(random.randint(1,10)) # 8
# num =input('请输入(1-10)之间的随机:') # '8'
# # print(8 =='8')
# if ran == num:
# print('恭喜中大奖啦!奖品是:笔记本')
# else:
# print('很遗憾你猜错啦!与奖品擦肩而过~~~')
'''
多层条件判断:
if 100-90:
优+
elif 90-80
优-
elif 80-70
良
elif 70-60
及格
else
不及格
'''
age = int(input('请猜猜宋宋姐年龄:'))
if age <= 18 and age>0:
print('(o゜▽゜)o☆[BINGO!] 太有眼光啦!')
elif age>18 and age<=30:
print('人家还是宝宝呢.....')
elif age>30 and age<=40:
print('长得太年轻了吧!!!!')
else:
print('输入错误!')
'''
4种:
if 条件:
语句
----------
if 条件:
语句
else:
语句
----------
if 条件1:
.....
if 条件2:
语句
else:
语句
else:
.....
-----------
if 条件1:
语句
elif 条件2:
语句
elif 条件3:
....
else:
语句
'''