python学习笔记(二)P12-20

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. 二进制(负)
    2. 二进制-1
    3. 取反
    4. 将原码转成十进制,加上负号

在这里插入图片描述

  • ~num-----------》将num的二进制取反

  • 练习1:~7 打印出来的十进制?

    1. 7的二进制表示:0000 0111
    2. 取反-----------------1111 1000
    3. 即 -8
  • 练习2:-9的二进制表示

    1. 9的原码 0000 1001
    2. 取反 1111 0110
    3. 加1 1111 0111
  • 练习3:~-4 打印出来的十进制?

    1. -4的二进制:
      1. 4的二进制:0000 0100
      2. 取反 1111 1011
      3. 加1 1111 1100
    2. 二进制取反 0000 0011------3
  • 练习4:1111 1101 的十进制表示

    1. 减1 1111 1100
    2. 取反 0000 0011
    3. 加个负号 -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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值