算术运算符:
# /表示除法,结果是小数
print(9 / 3)
print(9 / 1)
# %表示取模,即取余数
# 对于两个浮点数 a 和 b(其中 b 不为0),a % b 的结果是 a 减去 b 的整数倍,这个整数倍使得结果尽可能接近0(但结果的符号与 a 相同)
# 如果你需要高精度的取模运算(比如金融计算中的货币取模),可能需要使用decimal模块来处理Decimal对象
# 取模公式: a % b = a - (a//b) * b
print(9 % 2) # 1
print(3.5 % 1.5) # 输出: 0.5
print(-3.5 % 1.5) # 输出: -0.5
print(3.14 % 2.0) # 输出: 1.140000104904175
# //表示取整除,返回商的整数部分,向下取整
print(9 // 2) # 4
print(-9 // 2) # -5
print(-9.2 // -3) # 3.0
# 97天放假 ,还剩多少周零多少天
print("97天换算后,为", 97 // 7, "周", 97 % 7, "天")
"""
运行结果:
3.0
9.0
1
0.5
1.0
1.1400000000000001
4
-5
3.0
97天换算后,为 13 周 6 天
"""
比较运算符:
str1 = "abc##"
str2 = "abc##"
# pycharm做了处理
print(id(str1))
print(id(str2))
print(str1 == str2) # True
print(str1 is str2) # True
str3 = "257"
str4 = "257"
print(id(str3))
print(id(str4))
# python中比较两个字符串时, == 和is有区别吗?
"""
Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> str1= "##"
>>> str2 = "##"
>>> id(str1)
2270114618416
>>> id(str2)
2270114723696
>>> str1 == str2
True
>>> str1 is str2
False
>>>
"""
# python中比较两个字符串时, == 和is有区别吗?
#答:有的,== 运算符用于比较两个字符串的内容是否相同。is 运算符用于比较两个对象的身份(即它们在内存中的地址)是否相同。
"""
交互模式下地址不一样了,涉及到字符串的驻留机制
Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> str1= "##"
>>> str2 = "##"
>>> id(str1)
2270114618416
>>> id(str2)
2270114723696
>>> str1 == str2
True
>>> str1 is str2
False
>>>
"""
逻辑运算符:
为什么python中x and y的x为false,返回x的值?
答:在Python中,and
运算符用于逻辑与操作,但它的行为在处理布尔上下文(Boolean context)和非布尔值(如整数、浮点数、字符串等)时略有不同。当使用 x and y
这样的表达式时,Python实际上会遵循以下规则:
- 首先,Python会评估
x
的布尔值(即bool(x)
)。如果x
为False
(在Python中,这包括False
、None
、任何数值零、空序列如''
、[]
、()
、{}
和特殊的单元素类型如set()
、frozenset()
等),则整个x and y
表达式的结果就是x
的值,而不会评估y
。 - 如果
x
的布尔值为True
,那么Python会评估y
的值,并且整个x and y
表达式的结果就是y
的值。
这种“短路”行为(short-circuit behavior)是Python中逻辑运算符的一个重要特性,它允许你在不评估可能产生副作用或不必要的计算的表达式的情况下,提前确定整个表达式的结果。
关于你的问题“为什么python中x and y的x为false,返回x的值”,这是因为Python的设计者选择了这样的行为。这种设计有几个原因:
- 直观性:在很多情况下,当你知道第一个条件(
x
)已经失败时,就没有必要再去看第二个条件(y
)了。返回x
的值可以立即告诉你哪个条件导致了整个表达式的失败。 - 性能:通过避免不必要的计算,可以提高程序的执行效率。
- 一致性:这种行为在逻辑上是一致的,因为
and
运算符的目的是确保所有条件都为真。如果第一个条件已经为假,那么整个表达式的真值就已经确定了,无需进一步评估。
因此,在Python中,x and y
当 x
为 False
时返回 x
的值,是Python语言设计的一个有意为之的特性。