为什么0%5会返回0?

时间:2013-03-24 02:03:06

标签: python

我正在进行一场乒乓球比赛,我希望球能够每5次点击一次加速,但是当我跑出球时,它开始在起跑方向加速。

在没有加速球的情况下运行良好所以问题不是以前的代码。

当我试图实现这个时,我在我的Ball类中创建了一个名为self.num_hits的变量并使其最初为0.然后在我的游戏循环中每次球碰撞时,我增加ball.num_hits并反转它把x_speed。

collide_list = pygame.sprite.spritecollide(ball, players, False)
if collide_list != []:
    ball.x_speed *= -1
    hit.play()
    ball.num_hits += 1

在Ball()类中:

if self.num_hits % 5 == 0:
        if self.x_speed > 0:
            self.x_speed += 2
        else:
            self.x_speed -= 2

但是这使得球的速度以其起始速度关闭,所以我检查了self.num_hits % 5返回的是什么,它总是返回0.我一直认为0 % number = number,所以我的问题是为什么0 %5返回0?如果我无法解决0%5的问题,还有其他方法可以让球每5次点​​击一次加速吗?

7 个答案:

答案 0 :(得分:11)

分区的定义使得以下内容始终为真

  

n = q × d + r

,其中

  • n 是分子(或红利),
  • d != 0是分母(或除数),
  • q 是商,
  • r > 0是余数。

(这适用于正值和负值;如果 n d 具有相同的符号,则 q 为正值,否则为 q 。 > r 被定义为始终为正。)

在Python中,n/d == qn % d == r。如果n为0,那么q也必须为0,在这种情况下,r也必须为0 - 所有这些都与d的值无关。

(偏离主题,但请注意,这也解决了除以0的问题:对于非零 d q r 是唯一确定的;对于 d = 0, q 任何值将满足 r = n 的等式

答案 1 :(得分:4)

为什么0%5会返回0?

由于:

零除以5为零,保持为零。

0 % 5 = 0
12 % 5 = 2

答案 2 :(得分:1)

a%n与 - (n * int(a / n))相同。 0/5等于0,因为5进入0,0次。 0 * 5为0. 0减0为0。

答案 3 :(得分:1)

尝试self.num_hits / 5 == 0:

答案 4 :(得分:1)

number_1%number_2 =>是将number_1除以number_2

时的余数

在0%any_number情况下始终为0。

答案 5 :(得分:1)

0%5 = 0
1%5 = 1
2%5 = 2
3%5 = 3
4%5 = 4
5%5 = 0
6%5 = 1
7%5 = 2
...

答案 6 :(得分:1)

我认为这是在小学教的,但这有一个简单的答案。 %给出了除法问题的剩余部分。如果你有(例如)6 % 5,你会得到1,因为5次进入6次,5 * 1 == 56-5 == 1,这就是答案。这是0%5,5次(令人震惊)零次。 5*0 == 00-0 == 0。因此,