Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要使用循环范围的帮助吗_Python_Loops_For Loop - Fatal编程技术网

Python 需要使用循环范围的帮助吗

Python 需要使用循环范围的帮助吗,python,loops,for-loop,Python,Loops,For Loop,我正在制作一个程序,计算用户输入的两个数字之间所有奇偶数的总和。我是Python新手,不知道如何在循环中使用范围,使程序正常工作。这是我的密码。我知道它马虎,没有很好地放在一起,还没有完成,但任何帮助工作,谢谢 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:

我正在制作一个程序,计算用户输入的两个数字之间所有奇偶数的总和。我是Python新手,不知道如何在循环中使用
范围
,使程序正常工作。这是我的密码。我知道它马虎,没有很好地放在一起,还没有完成,但任何帮助工作,谢谢

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)

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

为了使验证可重用,我将验证放在一个只接受整数的函数中(如果提供了
minval
,请确保输入大于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")
输出:

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
请输入一个数字k
不是数字
请输入数字55
输入大于552的数字
必须是大于等于55的数字
输入大于55 150的数字
奇数和:4896
偶数和:4944
Doku:

  • (这就是问题@
    “奇数和:”如果n%2==1,则在print语句中为“偶数和”:

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

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)) )
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)) )

这里有一个函数,我认为它符合您上面所要求的描述。如果用户没有输入他或她想要的查询类型,它将返回
None

因此,查询可以是
奇数
偶数
,根据这一点,它可以计算您想要的总和。该函数还利用了列表理解功能,这一功能也非常酷

def calculate_odd_or_even_sum(query):
    start = int(input(" please enter a number"))
    end = int(input(" please enter another number"))
    count = 0

    if query == 'even':
        return sum([x for x in range(start, end) if x % 2 == 0])
    elif query == 'odd':
        return sum([x for x in range(start, end) if x % 2 != 0])
    else:
        return 0

如果我输入奇数或偶数,您不会进行测试。您的范围仅每隔2个数字进行一次测试,因此不需要x%2==0测试-您只需要奇数或偶数,这取决于您从什么开始。不要使用
sum
作为变量名,已经有一个名为
sum
的内置函数-您正在对其进行阴影处理。如果您想要求和可以执行的值:
print(总和(范围(10,21,2)))
并得到10+12+14+16+18+20的结果
计算两个数之间所有奇偶数之和
:这是否意味着要进行两次求和,一次求偶数,另一次求奇数?@emi是的,我正在计算两次求和,tmp是一个时间变量,用于交换
n
m
值。用列表ass修复签字。