aka小捞戴 发表于 2020-5-15 21:21:41

自学遇到不懂就问

X == (x//y)*y+(x%y)怎么用比较好的表达去解释这一个公式呢?

永恒的蓝色梦想 发表于 2020-5-15 21:25:41

x==x 或 True 都可以

Twilight6 发表于 2020-5-15 21:48:03

假设: x = 104   y = 10
x = 104 ; y = 10
# 先看(x//y)*y
>>> x // y = 10   
# // 地板除法,不要小数的
>>> 10 * y = 100
# 下面是 (x%y)   求 x 除以 y 的余数
>>> 104 % 10 = 4
# 最后
>>> 100 + 4 = 104 # 我们发现就是等于x本身
所以可以直接写成 x == x

永恒的蓝色梦想 发表于 2020-5-15 22:03:38

Twilight6 发表于 2020-5-15 21:48
假设: x = 104   y = 10

所以直接写成 True 就好了

Twilight6 发表于 2020-5-15 22:05:46

永恒的蓝色梦想 发表于 2020-5-15 22:03
所以直接写成 True 就好了

! ! ! !对 嗷 {:10_278:}

zltzlt 发表于 2020-5-16 07:19:08

假设 x = 1, y = 2 :

x == (x // y) * y + (x % y)

也就是:

1 == (1 // 2) * 2 + (1 % 2)

地板除法只保留商,截断小数部分,所以 1 // 2 等于 0 :

1 == 0 * 2 + (1 % 2)

% 是取余数,1 除以 2 的余数是 1,所以 1 % 2 等于 1:

1 == 0 * 2 + 1

0 * 2 == 0 :

1 == 0 + 1

0 + 1 == 1 :

1 == 1

所以这个表达式可以简化为:

x == x

aka小捞戴 发表于 2020-5-17 10:24:50

{:10_266:}懂了懂了,感谢大佬,也就是地板除那里是往下取,感谢思密达
页: [1]
查看完整版本: 自学遇到不懂就问