需要帮助使用范围进行循环

时间:2018-11-04 21:28:50

标签: python loops for-loop

我正在编写一个程序,计算用户输入的两个数字之间的所有偶数和奇数。我是Python的新手,不确定如何在循环中使用range来使程序正常工作。这是我的代码。我知道它草率的做法,不能很好地拼凑在一起,还没有完成,但是任何帮助都能奏效。

n = int(input(" please enter a number"))
m= int(input(" please enter another number"))
count =0
sum =0
for x in range(n,m+1,2):
    if x%2==0:
        count=count+x
    sum = count
    print(" the total sum of odd numbers are",sum)

3 个答案:

答案 0 :(得分:1)

重要的是要知道n是否大于m并反转情况。除此之外,您需要知道最小的数字是奇数还是偶数,并相应地开始两个范围:

n = int(input("Please enter a number: "))
m = int(input("Please enter another number: "))

# n will always be the smaller one
if n > m:
    n, m = m, n

n_is_odd = n % 2 # Gives 1 if n is odd

n_even = n + n_is_odd # Sum 1 if n is odd
n_odd = n + (not n_is_odd) # Sum 1 if n is even

print("the total sum of even numbers is %d" % sum(range(n_even, m+1, 2)) )
print("the total sum of odd numbers is %d" % sum(range(n_odd, m+1, 2)) )

答案 1 :(得分:0)

输入验证是良好编码的重要组成部分。一个很好的概述可以在这里找到:

为使验证可重复使用,我将验证放入了仅接受整数的函数中(如果提供了minval,请确保输入大于最小值。

def while_invalid_ask_input_return_integer(text, minval = None):
    """Aks for input until a number is given that is > minval if minval not None
    returns an integer."""
    while True:
        c = input (text)
        try:
            c = int(c)
            if minval is not None and c < minval:
                raise ValueError  # its too small, raise an erros so we jump to except:
            return c
        except ValueError:
            if minval is not None:
                print("must be a number and greater ", minval)
            else:
                print("not a number")

我用它来获取第一个数字,第二个数字将第一个数字作为“约束”,因此它将更大。为了求和,我只使用以n开始一次的范围,以n+1一次直到m,范围step为2。我检查n的偶数/奇数并打印文本相应地:

n = while_invalid_ask_input_return_integer("please enter a number ")
m = while_invalid_ask_input_return_integer("enter number bigger then {}".format(n),n)

print( "Odd sum:" if n % 2 == 1 else "Even sum:", sum(range(n,m+1,2)) )
print( "Even sum:" if n % 2 == 1 else "Odd sum:", sum(range(n+1,m+1,2)) )

输出:

please enter a number k
not a number
please enter a number 55
enter number bigger then 55 2
must be a number and greater  55
enter number bigger then 55 150
Odd sum: 4896
Even sum: 4944

Doku:

答案 2 :(得分:0)

这是我认为适合您上面要求的功能。如果用户没有输入他或她想要的查询类型,它将返回Nothing

因此查询可以是Noneodd,并根据此查询来计算所需的总和。该功能还利用了列表理解功能,这也很酷。

even