我正在编写一个程序,计算用户输入的两个数字之间的所有偶数和奇数。我是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)
答案 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:
"Odd sum:" if n % 2 == 1 else "Even sum:"
)答案 2 :(得分:0)
这是我认为适合您上面要求的功能。如果用户没有输入他或她想要的查询类型,它将返回Nothing
。
因此查询可以是None
或odd
,并根据此查询来计算所需的总和。该功能还利用了列表理解功能,这也很酷。
even