day03.02-07.python运算符

1.算数运算符-day03.02
# 算数运算符
# +  -  *  /   // 整除   % 取模,求余数   ** 求次方(幂)
print(10 + 3)   # 13
print(10 - 3)   # 7
print(10 * 3)   # 30
print(10 / 3)   # 3.3333333333333335  最后一位数5是计算精度的问题,其他语言也如此,是正常现象,我们就认为是3.3333333333333333就行
print(10 // 3)      # 3
# print(-10 // 3)     # -4    向下取整   -3.33 向下取整是 -4

print(10 % 3)       # 1
print(10 % 4)       # 2

print(10 ** 3)      # 1000
print(3.14e5)       # 3.14 * 10^5   等于3.14乘以10的5次方  314000

2.比较运算符   day03.03

                ASCII表可以私信或自己查找
# 比较运算符
#   >  >=(大于或等于)  <  <=  ==  !=(不等于)
#   得到的结果是布尔值

print(10 > 3)       # True
print(10 >= 3)      # True
print(10 < 3)       # False
print(10 <= 3)      # False
print(10 == 10)     # True
print(10 != 10)     # False

# bool 值
#   True   ==> 1
#   False  ==> 0
print(True == 1)    # True
print(False == 0)   # True

# str字符串比较
#   ASCⅡ码:
#      A-Z  : 65-90
#      a-z  : 97-122
#      0-9  : 48-57
print('a' > 'b')    # False
print('a' < 'b')    # True   97<98

# 字符串比较:从左往右一个一个字符比较,直到某个字符可以比较出大小
print('abcd' < 'abdc')  # True

# 练习:
print('45' > '9')      # 相当于是用 4 跟 9 比较  False
print('abc' < 'abcd')  # 最后一个字符 d 没有东西跟他比较  但是毕竟多一个所以 True

3.逻辑运算符 - day03.04

# 逻辑运算符
# and 并且(与)  or 或者  not 非

# and:并且
#      两边必须都为真才为真,否则为假(只要有一个为假就为假)
print(True and True)    # True
print(True and False)   # False
print(False and True)   # False
print(False and False)  # False

print(4 > 5 and 6 < 7)  # False


# 短路操作
# 从左往右开始判断每个操作数的值是否为False(隐式判断),如果为假,则直接返回该操作数,否则继续往右判断下一个数,全为真返回最后一个数
print(6 and 8)  # 8


print(bool(6))  # True
print(bool(8))  # True   数字只要不是0,bool()正数负数都为真True

print(0 and 8)           # 0
print(0 and print(666))  # 0  没有打印666证明只执行到0就不执行下面的数据了
print(6 and print(888))  # 888 None
print(print())      # print()的结果是None  print()自身的结果是None值

print(66 and 0 and -3)  # 0
print(print(666) and 0)     # 666 None

# bool值隐式判断  假 False  真 True
#   数值:0是假,其余为真
#   字符串:空字符串 ''和""和 '''''' 为假,其余为真
#   bool :True False
#   NoneType: None 为假
#   列表:空列表[]为假,其余为真
#   元组:空元组()为假,其余为真     空元组不用加逗号,有一个元素才需要加逗号
#   字典:空字典{}为假,其余为真

print(bool(0))  # False
print(bool(-3))  # True

print(bool(''))  # False
print(bool(' '))  # True
print(bool('abcd'))  # True

print(bool([]))  # False
print(bool([3, 4]))  # True

print(bool())  # False
print(bool(3,))  # True

print(bool({}))  # False
print(bool({'age': 13}))  # True

# 练习
print(None and 666 and 0)   # None
print((3,) and [] and -1)   # []
print(3 and False and "")   # False
print(3 and 6 and {6, 6, 6})   # {6}


# 练习:查看下面表达式的结果
# print(999 and None and 666)  # None
# print(print(8) and 30)       # 8 None
# print(' ' and -100 and [] and 8) # []
print(print(9) and print(5))   # 9 None


# or 或者
#       两边都为假才为假,否则为真(只要有一个为真则为真)
print(True or True)     # True
print(True or False)    # True
print(False or True)    # True
print(False or False)   # False

# 短路操作
#   从左往右一个个操作数进行判断,如果为真,则直接返回该值,否则继续判断下一个数
print(6 or 8)   # 6
print(0 or -1)  # -1
print('' or '雷布斯' or '乔布斯')     # ‘雷布斯’
print(0 or '小米su7' or print(666))  # '小米su7'
print(0 or print(666))   # 666 None

# 练习
a = True and 6             # 6
b = False or 1 or True     # 1
print(a, b)                # 6 1
print(a * 3 + b)           # 19

a = 6 and True             # True
b = False or 1 or True     # 1
print(a, b)                # True 1
print(a * 3 + b)           # 4

# not 非
#       得到的是True 或 False
print(not 4 > 5)    # True
print(not 5)        # False
print(not 0)        # True
print(not -1)       # False
print(not ' ')      # False

# 练习:
#   请输入一个年份year:
#   判断year是否为闰年(满足下面条件之一即可):
#       1.能被4整除(使用%),且不能被100整除
#       2.能被400整除
n = 2024
print((n % 4 == 0 and n % 100 != 0) or n % 400 == 0)    # True

# 参考答案:
# year = int(input("请输入一个年份:"))
# z = year%4 == 0 and year%100 != 0 or year%400 == 0
# print(z)

# 运算优先级() 加括号可以提高优先级
# (1+2) * 3
# n%4 == 0 如这个里面 == 优先级比较低,不需要加括号
# and or not 的优先级比 == 等比较运算符的优先级低一些,不需要用括号  不确定优先级的时候可用用括号,稳当些

'''
运算符优先级

**                                      幂 最高优先级
* / % //                                乘 除 取余数 取整数
+ -                                     加法 减法
<= < > >=                               比较运算符
== !=                                   等于运算符
= %= /= //= -= += *=                    赋值运算符
not or and                              逻辑运算符

'''

4.成员运算符和身份运算符 - day03.05

# 成员运算符和身份运算符在其他语言中是没有的 比较特殊
# 成员运算符
#   in, not in
#   右边一般不要写一个数,一般写一个序列/列表
#   判断左边的数是不是右边的列表里面,也可以判断在不在字符串里面
#   一般会结合if语句使用
print(3 in [3, 4, 5, 6])     # True
print(30 in [3, 4, 5, 6])    # False

print(30 not in [3, 4, 5, 6])    # True

# 身份运算符(了解)
#   is, is not
#   使用比较少
#   判断内存地址是否相等
#   python对一些小的整数做了内存优化
#   运行pycharm内存条建议16g,至少8g,4g是不行的,会很卡。之所以占内存主要是因为很多的变量、数据存在了内存条中。
#       内存地址:就是当前变量或数据存储在内存条中的一个门牌号/位置  现在打印出来的数是十进制的,有的地方可能是十六进制的
c = 10  # 例如我们现在定义的变量c = 10 就存储在内存条当中
# 占用空间:如整数int一般是4个字节 00000000 00000000 00000000 00000000
# 例如整数10在内存条里就存储为  00000000 00000000 00000000 00001010

# id():得到内存地址
a = 10
b = 10
print(id(a))          # 每次运行的id地址虽然会改变,但是同样的数据是一起同时改变的
print(id(b))          # python中一些小的整数做了内存优化,两个变量指向的是同一个10,所以指向的内存地址是一样的

print(a is b)      # True
print(a is not b)  # False

 5.赋值运算符和复合运算符 - day03.06

# 赋值运算符
#   =  赋值
#   先计算等号右边的值,再赋值给左边
age = 18


# 复合运算符:算术运算符+赋值运算符

age = age + 1
print(age)   # 19

age += 1     # 等价于 age = age + 1     不能写成 age =+ 1 虽然不报错,但会被识别成age等于正数1 age = 1
print(age)  # 20

# python 中不支持 i++ i--  在其它语言中基本都有这样的语法,含义是自增一 自减一
# 一元运算符 : i++ i--   python 中没有
# 三目运算符: ? :  python 中没有

age -= 1  # 等价于 age = age - 1
print(age)  # 19

age **= 2
print(age)  # 361

# 位运算符(扩展,了解)
#   前提:将数字转换为二进制使用
#       &【按位与】  | 按位或】  ^【按位异或】   <<【左移】  >>【右移】

# 按位与 &   有0就为0,全都是1才为1
print(6 & 3)    # 有的语言里没有and他会用&&代表与,但是python中的&代表按位与
# 6 ==> 110
# 3 ==> 011   # 3是11 但是要右对齐,所以写为011
# ---------
#       010  ==> 2

# 按位或 |   有1就为1,全都是0才为0
print(6 | 3)
# 6 ==> 110
# 3 ==> 011
# ---------
#       111  ==> 7

# 按位异或^  相同为0 不同为1
print(6 ^ 3)
# 6 ==> 110
# 3 ==> 011
# ---------
#       101  ==> 5

# 左移 加位数
print(6 << 2)   # 2 代表左移2位数 右边加两位0
# 6 ==>   110
#   ==> 11000
# ---------
#       11000  ==> 24

# 右移 减位数
print(6 >> 2)   # 2 代表右移2位数 去掉右边两位
# 6 ==>   110
#   ==>   1
# ---------
#         1  ==> 1
print(13 >> 2)
# 13 ==>   1101
#    ==>   11
# ---------
#          11 ==> 3

# 二进制和十进制
# 二进制 : 只有0和1
# 八进制 : 0 1 2 3 4 5 6 7
# 十进制 : 0 1 2 3 4 5 6 7 8 9
# 十六进制 : 0 1 2 3 4 5 6 7 8 9 A B C D E F            有些颜色会表示为 #FF66FF 这种就是十六进制颜色

# 二进制和十进制
# 8421法  一般只针对一些较小的数字
#   二进制 :   1       1       1       1
#   十进制 :   8       4       2       1
#          2的三次方  2的平方  2的1次方  2的0次方

# 十进制:      1           2           3           4           1234
#         1*10的三次方  2*10的平方  3*10的一次方  4*10的0次方       = 1000+200+30+4
# 二进制  110  ==>  4+2 = 6
#        11   ==>  2+1 = 3

6.运算符的练习  - day03.07


# 1.从控制台输入圆的半径,计算周长和面积, π=3.14
r = float(input("请输入半径r:"))
c = 2 * 3.14 * r
s = 3.14 * r ** 2
print(f"周长为{r},面积为{s}")

# 参考答案
# r = int(input("请输入半径r:"))
# print(f"周长为{ 2 * 3.14 * r}")
# print(f"面积为{ 3.14 * r * r}")

# 2.一辆汽车以40km/h的速度行驶,行驶了4567.89km,求所用的时间
t = 4567.89 / 40
print("所用时间为 %.2f" % t)

# 参考答案
# speed = 40
# length = 4567.89
# hour = length / speed
# print(hour)

# 3.华氏温度转摄氏温度
# 【提示:将华氏温度转换为摄氏温度(F是华氏温度)  F = 1.8C + 32】
#  => C = (F - 32) / 1.8
F = int(input("请输入华氏度F:"))
C = (F - 32) / 1.8
print(f"摄氏度C为{C}")

# 参考答案一样

# 4, 入职薪水10K,每年涨幅入职薪水的5%,50年后工资多少?
x = 10 * pow(1.05, 50)
print("50年后工资为", x)

# 参考答案
# salary = 10
# z = salary + (salary * 0.05 * 50)
# print("50年后工资为", z)   # 35k

# 参考答案二 指数增长的情况       工作一年后觉得没什么能成长的想跳槽,建议涨薪30%
# salary = 10
# z = salary * (1 + 0.05) ** 50
# print("50年后工资为", z)   # 114k

# 5, 为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?
d = 89 // 24
s = 89 % 24
print("编程计算共 %d天 %d 小时" % (d, s))

# 参考答案
# h = 89
# print(f'共 {h // 24}天{h % 24}小时')

# 6, 给定一个5位数,分别把这个数字的万位,千位,百位、十位、个位算出来并显示。如: 34567
w = 34567 // 10000
q = (34567 // 1000) % 10
b = (34567 // 100) % 10
s = (34567 // 10) % 10
g = 34567 % 10
print("万位,千位,百位、十位、个位分别是万位 %d ,千位 %d,百位 %d、十位 %d、个位 %d " % (w, q, b, s, g))
# 参考答案
# n = 34567
# a = n // 10000      # 万位
# b = n // 1000 % 10  # 千位
# c = n // 100 % 10   # 百位
# d = n // 10 % 10    # 十位
# e = n % 10          # 个位
# print(a, b, c, d, e)

# 7. 总共有5678秒, 求转换后是多少小时,多少分钟, 多少秒?
h = 5678 // (60*60)
m = (5678 // 60) % 60
s = 5678 % 60
print("编程计算共 %d小时 %d 分钟 %d 秒" % (h, m, s))
# 1 34 38

# 参考答案  多少进位就对多少求余
# n = 5678        # 秒
# hour = n // 3600    # 小时
# min = n // 60 % 60    # 分钟
# sec = n % 60    # 秒
# print(hour, min, sec)
# # 1 34 38
# print(1 * 3600 + 34 * 60 + 38)

# 8. 总共有456789秒, 求转换后是多少天,多少小时,多少分钟, 多少秒?
day = 456789 // (60*60*24)
hour = (456789 // (60*60)) % 24
min = (456789 // 60) % 60
sec = 456789 % 60
print(day, hour, min, sec)

# 验证: print(5*24*60*60+6*60*60+53*60+9)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值