我几乎在那里,但程序无法识别否定

时间:2018-02-26 08:47:56

标签: python-3.x

程序必须计算正数和负数并计算平均值。我觉得我有正确的代码,但也许有些东西是关闭的。这是在python idle 3.5上完成的。我将不胜感激任何帮助。

   if(inputStream != null) {
       if (parameters.containsKey("Range")) {
                String range =parameters.get("Range").toString();
                String[] ranges = range.split("=")[1].split("-");
                final int from = Integer.parseInt(ranges[0]);
                if(parameters.containsKey("Content-Length")) {
                    int sLength = (int) parameters.get("Content-Length");
                    int to = 10005 + from;
                    if (to >= sLength) {
                        to = (int) (sLength - 1);
                    }
                    if (ranges.length == 2) {
                        to = Integer.parseInt(ranges[1]);
                    }
                    final String responseRange = String.format("bytes %d-%d/%d", from, to, sLength);
                    parameters.put("Responserange", responseRange);
                    } 

           }

1 个答案:

答案 0 :(得分:1)

您的代码存在的一个问题是,您输入的第一个数字不计入循环中的正数或负数,因为它不在其中。一旦你进入循环,你就把它添加到总数中,但是你要求下一个数字。这样,您的第一个号码永远不会被评估。

你可以做的是一个具有条件“True”的while循环,所以每次启动程序时它都会运行。您的输入是否为零的评估可以(在这种情况下必须)在您的else / elif / else块中处理。 如果你没有在那里包含休息,你将获得无限循环。

你不应该我们eval()。 python上的文档说明了这一点:

  

此函数也可用于执行任意代码对象(例如由compile()创建的代码对象)。在这种情况下,传递代码对象而不是字符串。如果使用'exec'编译代码对象作为mode参数,则eval()的返回值将为None。

如果使用int(),程序会知道它是否为负数,因为你在if语句中将输入与零进行比较。

也许做这样的事情:

#Variables
total = 0
pos = 0
neg = 0
# avg = 0 (you don't have to declare this variable since you calculate it
# anyway later on)

# removed the input from here since it did not contribute to the pos/neg count

#main
while (True):
    # maybe use a while loop with the condition "True" so it runs every time

    i = int(input("Enter an integer, the input ends if it is 0: "))

    total = total + i

    if(i > 0):
        # counts 1 up if integer is positive
        pos += 1

    elif(i < 0):
        # counts 1 up if integer is negative
        neg += 1

    else:
        # break out of the loop as soon as none of the above conditions is true
        # (since it hits a 0 as input)
        # else you get an infinite loop
        break

avg = total / (pos + neg)

print("The number of positives is ", pos)
print("The number of negatives is ", neg)
print("The total is ", total)
print("The average is ", avg)