程序必须计算正数和负数并计算平均值。我觉得我有正确的代码,但也许有些东西是关闭的。这是在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);
}
}
答案 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)