繁体   English   中英

偶数和奇数的总和包括范围外的数字,如果不是偶数或奇数

[英]Sum of Even and Odd numbers includes numbers on outside of range, if if not even or odd

所以这是我学习计算机科学的第一个学期,我目前正在学习 Python。 我的任务是创建一个程序来显示您选择的整数之间的奇数和偶数之和。 它几乎有效,除了它添加了定义为范围的数字,而不仅仅是其中的几率或偶数。 有人能指出我做错了什么吗? 我已经坚持了一段时间了。 谢谢您的帮助!

我已经定义了范围并使用 sum 函数来查找和,但是包括我用于范围的值。

enter code here
print("Welcome to my Odd/Even sum generator.")
print("This program will show you the sum of all even and odd numbers between two integers of your choice.")
Num1 = int(input("What is your first, lower integer?"))
Num2 = int(input("What is your second, higher integer?"))


def sum_even(Num1, Num2):
    count1 = 0
    for i in range(Num1, Num2+1):
        if(i % 2 == 0):
            count1 += i
    return count1

def SumOdds(Num1,Num2):
  count2= Num1 + Num2 
  for i in range(Num1,Num2+1):
     if(i == Num1 or i == Num2):
         pass
     elif (int(i%2==1)):
        count2=count2+i

  print("The sum of the odd numbers is",(count2),".")
SumOdds(Num1,Num2)
print("The sum of the even numbers is",(sum_even(Num1, Num2)),".")

我希望它仅在这些范围值适用于奇数/偶数和时才添加范围值。 比如说,我输入了 5 和 25 的范围。我希望范围值包含在我的 OddSum 的总和中,但不包含在我的 EvenSum 中。

您的问题是您在 SumOdds 中放置了以下代码。

for i in range(Num1,Num2+1):
     if(i == Num1 or i == Num2):
         pass

这会跳过第一个和最后一个数字,但如果您将其移动到 sum_evens,您的代码应该可以按预期工作。

您的代码看起来很棒,对您有帮助的更改如下:

def SumOdds(Num1,Num2):
    count2 = 0 # here ur adding NUM1+NUM2 by defualt initial it must be zero
    for i in range(Num1,Num2+1):
        if(i == Num1 or i == Num2):
            continue #If you don't want to consider the start and end so you can use continue 
        if (int(i%2==1)):
            count2+=i
    print(f"The sum of the odd numbers is: {count2}") # if your using above 3.5 python so u can use this type of formating also.

def sum_even(Num1, Num2):
    count1 = 0
    for i in range(Num1, Num2+1):
        if(i == Num1 or i == Num2):
            continue #If you don't want to consider the start and end so you can use continue 
        if(i % 2 == 0):
            count1 += i
    return count1

sum_of_odd = sum(filter(lambda x: (x % 2 != 0), range(Num1, Num2+1))) # Another way of doing
sum_of_even = sum(filter(lambda x: (x % 2 == 0), range(Num1, Num2+1))) #Another way of doing 


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM