i * i和i ^ 2在for循环中的行为不同

问题描述

我要解决的问题:编写一个Python函数,该函数接受一个正整数n,并返回所有小于n的正整数的平方和。

在为问题编码时,我观察到一些非常奇怪的东西。 (python3.7

迭代1:我在for循环中使用了i ^ 2作为要添加的术语。

n = int(input('Enter the value of integer upto which sum needs to be computed: '))
sum = 0
for i in range(1,n):
  sum += i^2

迭代2:我在for循环内使用i * i作为要添加的术语

n = int(input('Enter the value of integer upto which sum needs to be computed: '))
sum = 0
for i in range(1,n):
  sum += i*i

尽管在数学上是相同的,但是两次迭代都产生不同的答案(总和是输出),我不明白为什么。请在这里帮助我,以便我可以更好地了解Python。

解决方法

在python ^中表示exclusive-or (bitwise)

使用**代替^

,

这是因为^是按位XOR而不是幂。 您可以使用:

i*i

您已经完成的操作,或者:

i**2