P12 比较运算符
'''
关系运算符: 结果: True False
> < >= <= == != is
'''
a = 10
b = 23
print(a > b) # False
print(a < b) # True
print(a == b) # False
print(a != b) # True
# 字符串比较大小
x = 'abc'
y = 'abcd'
print(x == y) # False
print(x < y) # True
y = 'abd'
print(x < y) # True
# 字符串的比较 ASCII码 从第一个字母开始比较
# 1+2=3
a = 10
c = 10
print(a >= c) # True 有等号就在范围内
'''
输入考试分数,判断成绩是否在100到80之间
'''
score = float(input('请输入考试分数:'))
print(80 <= score <= 100)
'''
输入华为手机价格:
输入iPhone 12 价格:
判断是否价格相等
'''
price1 = float(input('华为手机价格:'))
price2 = float(input('iPhone手机价格:'))
print(price1 == price2)
P13 逻辑运算符
'''
逻辑运算符:
and or not
结果:
and: 与 并且
A and B
True and True ---> True
True and False ---> False
False and True ---> False
False and False ---> False
or : 或者 只要有一侧为真True,结果即为True
A or B
True or True ---> True
True or False ---> True
False or True ---> True
False or False ---> False
not:
not True ---> False
not False ---> True
'''
a = 1
b = 3
print(a and b) # 3
print(b and a) # 1
# and 两边都是非0数字,结果是最后的数字值
c = 0
print(a and c) # 0
print(c and a) # 0
# and 两边只要有一边为0,结果即为0
print(a > c and a < b) # True
print(a == c and a < b) # False
# username == 'xiaohua' and password
print('#' * 20) # 打印20个#
a = 1
b = 3
c = 0
print(b or a) # 3
print(a or b) # 1
# or 两边都是非0数字,结果是第一个值
print(c or b) # 3
print(a > c or a < b) # True
print(a == c or a < b) # True
# 场景:1.账号密码 or 2.手机号码 验证码
# 账号名/手机号码+密码
print('-*' * 20)
flag = True
print(not flag)
print(not a > c) # True
P14 复习与格式化输入
print('%G %f %e %g' % (1234567890000,1234567890000,1234567890000,1234567890000))
#1.23457E+12 1234567890000.000000 1.234568e+12 1.23457e+12
name = 'mmm'
age = 26
# 我喜欢听26岁的mmm唱歌
#
print('我喜欢听' + str(age) + '岁的' + name + '唱歌')
# 字符串如何进行格式化?
'''
符号:
%s 字符串 string
%d 整数 digit
%f 浮点数 float
'''
# print('我喜欢听%d岁的%s唱歌' % (name, age))
# name写前面对应d,格式不对
print('我喜欢听%d岁的%s唱歌' % (age, name))
money = 999.95
# 26岁的mmm一首歌挣了999.95块钱
print('%d岁的%s一首歌挣了%f块钱' % (age, name, money))
# 26岁的mmm一首歌挣了999.950000块钱
print('%s岁的%s一首歌挣了%s块钱' % (age, name, money))
# 26岁的mmm一首歌挣了999.95块钱
# str(age) 要保证是能转成字符串类型才能转
print('%d岁的%s一首歌挣了%.2f块钱' % (age, name, money))
P15 进制转换
'''
二进制: 0,1
八进制: 0,1,2,3,4,5,6,7,
十进制: 0-9
十六进制: 0-9 a-f
# 前缀:
0b 二进制
0o 八进制
0x 十六进制
默认十进制
'''
# 转二进制
n = 149
result = bin(n) # binary
print(result)
# 转八进制
result = oct(n)
print(result)
# 转16进制
result = hex(221)
print(result)
'''
思考:
n=0x558
1. 十进制输出
2. 二进制输出
3. 八进制输出
函数:
bin() 0b
int()
oct() 0o
hex() 0x
已知2进制-->16进制,将2进制从右侧开始4位一组,最后不足4位补0
已知2进制-->8进制,将2进制从右侧开始3位一组,最后一组不足3位补0
'''
n = 0x558
# 1. 十进制输出
print(int(n))
# 2. 二进制输出
print(bin(n)) # 无论当前参数是几进制,都可以转
# 3. 八进制输出
print(oct(n))
'''
2进制 跟 16进制 的转换,
有两种方法,
1.先转为10进制,在计算;
2.把2进制分成4位
0x558--->二进制
0b 0101 0101 1000
0xac3
0b 1010 1100 0011
'''
'''
十六进制转8进制
先转2进制,再转8进制
0x558
-->二进制 0b 0101 0101 1000
-->8进制 0o 010 101 011 000 即 2 5 3 0
'''
P16 位运算
'''
位运算:针对二进制进行的运算
& | ^ ~ << >>
& 类似 and
'''
n1 = 0b0110 # 6
n2 = 0b0010 # 2
# "与"运算 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1
print(n1 & n2) # 2
print('-' * 20)
# "或"运算 0 | 0= 0 , 1 | 0= 1 , 0 | 1= 1 , 1 | 1= 1
print(n1 | n2) # 6
print(5 | 9) # 13
# "异或" 相同为0不同为1
print('-' * 20)
print(n1 ^ n2) # 4
print(5 ^ 9) # 12
'''
异或;上下两个数位相同为0不同为1
n1 = 0b0110 # 6
n2 = 0b0010 # 2
------------
0100
5=0101
9=1001
----
1100
'''
'''
1为真 0为假
n1 = 0b0110 #6
n2 = 0b0010 #2
0&0-->0
1&1-->1
1&0-->0
0&0-->0
0b0010 --->十进制:2
5&9 --->
0101
1001
0001
'''
print('-' * 20)
print(~n1) # -7
print(~5) # -6
'''
n1 = 0b0110
bit byte
1byte = 8bit
n = 2
1G ---> 256M
已知十进制负数,求二进制负数
1.正数的原码
2.原码取反
3.加1
---》得到的二进制的就是负数的二进制
-7:
1. +7--->0000 0111
2. 原码取反 --->1111 1000
3. +1 ----> 1111 1001
二进制的负数表示:
原码 0110
反码 1001
补码 反码+1
1001
+ 1
-------
1010
'''
print(~7)
print(bin(-4))
print(11111101)
- 已知十进制负数,求二进制负数
1.正数的原码
2.原码取反
3.加1
—》得到的二进制的就是负数的二进制
-
已知二进制负数(判断是否是负的二进制的依据),看二进制的最高位
1–负 0–正 求对应的十进制
- 二进制(负)
- 二进制-1
- 取反
- 将原码转成十进制,加上负号
-
~num-----------》将num的二进制取反
-
练习1:~7 打印出来的十进制?
- 7的二进制表示:0000 0111
- 取反-----------------1111 1000
- 即 -8
-
练习2:-9的二进制表示
- 9的原码 0000 1001
- 取反 1111 0110
- 加1 1111 0111
-
练习3:~-4 打印出来的十进制?
- -4的二进制:
- 4的二进制:0000 0100
- 取反 1111 1011
- 加1 1111 1100
- 二进制取反 0000 0011------3
- -4的二进制:
-
练习4:1111 1101 的十进制表示
- 减1 1111 1100
- 取反 0000 0011
- 加个负号 -3
P18 运算符优先级
n = 12
print(n << 2)
P19 条件语句
-
区间比较
5<a<10 这种写法在很多编程语言中是不允许的,需要使用逻辑和运算符连接
-
条件语句:
if
if…else
if…elif…else-
if语句的格式
if条件:
条件成立要执行的语句 -
if…else
if条件:
条件成立要执行的语句else:
条件不成立要执行的语句
if a > b: c = a else: c = b c = a if a > b else b
-
if…elif…else语句格式
if 条件1:
条件1成立要执行的语句
elif 条件2:
条件2成立要执行的语句…
else:
1 2都不成立要执行的语句
print(1) print(2) print(3) # 4,5有条件打印 result = input('请输入(y/n):') if result == 'y': print(4) print('over') print('------')
随机数实例
#随机数 import random # random是导入的一个包 ran = random.randint(1,10) print(ran) guess = input('请输入你猜的数:') if ran == int(guess): # 9 == '9' 键盘输入的都是字符串类型 print('恭喜猜对了')
-
练习
# import random
# ran = random.randint(1,22)
# print(ran)
'''
输入四位整数,十位和百位相加大于10则success,否则fail
'''
# # 2569 千位:2569//1000 百位;2569//100%10 十位:2569//10%10 个位:2569%10
# a = int(input('请输入4位整数:'))
# if (a//100%10)+(a//10%10)>10:
# print('success')
# else:
# print('fail')
'''
产生两个随机整数1-10,判断两个数字之间的和是否大于8并且差小于等于3,如果是则显示:success,
否则显示fail
'''
import random
ran1 = random.randint(1, 10)
ran2 = random.randint(1, 10)
print(ran1)
print(ran2)
if ran1 + ran2 > 8 & abs(ran1 - ran2) <= 3:
print('success')
else:
print('fail')
money = 100000
if 10000<money<=50000:
print('1000元')
elif 50000<money<=100000:
print('笔记本IBM')
elif 100000<money<=1000000:
print('i12')
elif money>1000000:
print('特斯拉')
else:
print('鼓励奖')
print('-------欢迎进入人员管理系统--------')
choice = input('请选择功能:\n1.添加员工\n2.删除员工\n3.查询员工\n4.修改员工信息')
if choice == '1':
print('添加员工')
elif choice =='2':
print('删除员工')
elif choice =='3':
print('查询员工')
elif choice =='4':
print('修改员工信息')
else:
print('输入错误!')
练习
'''
练习:
双十一,用户名,消费总金额,账户金额,优惠券
输入总购买金额
如果金额0-500则是Lv1
如果金额500-2000则是Lv2,2000以上是Lv3
Lv1:随机赠送3张1-10的优惠券
Lv2:赠送2张50元优惠券,如果充值则送充值金额的10%
Lv3:赠送2张100优惠券,如果充值则送15%的金额
'''
import random
username = 'mtc'
total = 1500
money = 0
coupon = 0
if 0 < total <= 500:
# 随机赠送3张1-10的优惠券
ran1 = random.randint(1, 10)
ran2 = random.randint(1, 10)
ran3 = random.randint(1, 10)
coupon = ran1 + ran2 + ran3
elif 500 < total <= 2000:
# 赠送2张50元优惠券,如果充值则送充值金额的10%
coupon = 2 * 50
recharge = input('是否充值(充值则送充值金额的10%),(y/n):')
if recharge == 'y':
money = 1.1 * int(input('请输入充值金额:'))
elif total > 2000:
# 赠送2张100优惠券,如果充值则送15%的金额
coupon = 2 * 100
recharge = input('是否充值(充值则送充值金额的10%),(y/n):')
if recharge == 'y':
money = 1.15 * int(input('请输入充值金额:'))
print(username)
print(total)
print(money)
print(coupon)