【三】Python

运算符

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:
	语句
'''

 

posted @ 2023-09-18 10:26  しみずよしだ  阅读(38)  评论(0)    收藏  举报