如何编写一个 for 循环程序,该程序查找范围内所有奇数的总和,但不使用 if 函数



我需要编写一个代码,要求用户输入任何数字的"num",并计算 1 到 num 范围内所有奇数的总和。我似乎不知道如何编写这段代码,因为我们有一个类似的问题,关于在我能够弄清楚的范围内添加偶数。

我还添加了我已经编写的代码行,用于对我可能做对/做错的任何批评。非常感谢对此:)的任何帮助

total = 0
for i in range(0, num + 1, 1):
total = total + i
return total
total = sum(range(1, num + 1, 2))

如果你真的需要一个 for 循环:

total = 0
for i in range(1, num+1, 2):
total += i

为了使它更具异国情调,您可以考虑仅对奇数i%2==1和对偶数i%2==0的属性(注意:您使代码不可读(

total = 0
for i in range(1, num+1):
total += i * (i % 2)

您可以通过利用奇偶属性来发明更多方法来解决此问题,例如:

  • (-1)^i为 1 或 -1
  • i & 0x1为 0 或 1
  • abs(((1j)**i).real)为 0 或 1

等等

范围函数有三个参数:开始、停止和步进。

例如:for i in range(1, 100, 2)将在奇数上从 1-99 循环。

最简单的解决方案

您可以使用数学公式

#sum of odd numbers till n
def n_odd_sum(n):
return ((n+1)//2)**2
print(n_odd_sum(1))
print(n_odd_sum(2))
print(n_odd_sum(3))
print(n_odd_sum(4))
print(n_odd_sum(5))
1
1
4
4
9

使用过滤器:

start_num = 42
end_num = 500
step = 7
sum([*filter(lambda x: x % 2 == 1, [*range(start_num, end_num+1, step)])])

您可以使用数学公式(每次都有效(:

num = int(input("Input an odd number: "))
total = (1+num)**2//4
print(total)

输出:

Input an odd number: 19
100
total = 0
num = int(input())
for i in range(num+1):
if i%2 == 1:
total += i
print (total)

%运算符返回余数,在本例中为除以 n/2 时的余数。如果这是 1,则表示您的数字是奇数,您可以将其添加到您的总数中。

你当然可以用python在一行中做到这一点,但这可能更容易理解。

最新更新