我看到了一个类似的帖子,但它包含了函数,我的不是。
目标:编写一个读取非特定数量整数的程序,确定读取的正值和负值的数量,并计算输入值的总和和平均值(不计算0)程序将停止在0.
我遇到的问题:使用以下测试值时 1, 2, -1, 3
我得到以下内容:
积极数量:1
否定数量:2
使用的总人数:3
平均值是1.33,即4/3
应该是:
积极的数量:1
否定数量:3
使用的总人数:4
平均值为1.25,即5/4
我的尝试如下:
positive_number = 0
negative_number = 0
average = 0
count = 0
new_number = 0
user_input = eval(input("Enter enter as many integers as you want, 0 will halt: "))
if user_input == 0:
print("You didn't enter any number, code ended")
else:
while user_input != 0:
user_input = eval(input("Enter enter as many intergers as you want, 0 will halt: "))
if user_input == 0:
print("You didn't enter any number, code ended")
elif user_input != 0 and user_input > 0:
new_number += user_input
positive_number += 1
count += 1
else:
user_input != 0 and user_input < 0
new_number += user_input
negative_number += 1
count += 1
average = (new_number / count)
print("\nThe number of positives:", positive_number)
print("The number of negatives:", negative_number)
print("The total amount of numbers used:", count)
print("The average is", format(average,".2f"), "which is", str(new_number), "/", str(count))
导致此类错误的原因是什么?我只能假设这是一个小修复?
答案 0 :(得分:0)
首先,当您将if
作为循环条件进行测试时,第一个user_input != 0
语句是多余的。其次,它出错的原因是因为在你第一次输入时你立即覆盖了user_input
的值,所以我把重新提示代码放在循环的末尾。最后,我清理了if elif else
语句,因为它使用更少的字符完全相同。一旦我们退出循环,也会执行结束行的print
语句 - sinc eby定义意味着user_input == 0
positive_number = 0
negative_number = 0
average = 0
count = 0
new_number = 0
user_input = eval(input("Enter enter as many integers as you want, 0 will halt: "))
while user_input != 0:
if user_input > 0:
new_number += user_input
positive_number += 1
count += 1
else:
new_number += user_input
negative_number += 1
count += 1
average = (new_number / count)
print("\nThe number of positives:", positive_number)
print("The number of negatives:", negative_number)
print("The total amount of numbers used:", count)
print("The average is", format(average,".2f"), "which is", str(new_number), "/", str(count))
user_input = eval(input("Enter enter as many intergers as you want, 0 will halt: "))
print("You didn't enter any number, code ended")
答案 1 :(得分:0)
我已经修复了代码中的问题,并重构了陷阱错误并消除了不必要的复杂情况:
positive_number = 0
negative_number = 0
average = 0
count = 0
total = 0
user_input = None
while user_input != 0:
try:
user_input = int(input("Enter enter as many intergers as you want, 0 will halt: "))
except ValueError:
user_input=0
if user_input > 0:
total += user_input
positive_number += 1
count += 1
elif user_input<0:
total += user_input
negative_number += 1
count += 1
if count==0:
print("You didn't enter any number, code ended")
else:
average = total / count
print("\nThe number of positives:", positive_number)
print("The number of negatives:", negative_number)
print("The total amount of numbers used:", count)
print("The average is", format(average,".2f"), "which is", str(total), "/", str(count))
答案 2 :(得分:0)
就像在评论中所说的那样,你的第一个输入被忽略了。这是一个应该有效的替代方案。我排除了一些冗余的检查陈述。
{{1}}
答案 3 :(得分:0)
您的代码存在许多问题。首先,代码不会评估用户提示的第一个数字;一旦你进入while循环,它就会被覆盖。有多种方法可以解决这个问题,但最好的方法是:
cont = True
而cont为True:
user_input = int(输入(&#34;提示用户&#34;))
如果user_input == 0:
cont = False
你也可以做一个休息陈述,但这并不重要。
这样就可以解释为什么第一个数字没有被读取,以及为什么代码认为只有3个输入(以及你的计数被关闭)。那两个否定点呢?我不知道你为什么这么做。当我输入您列出的数字时,我得到一个负数和两个正数。再试一次,看看它现在是否有效,我怀疑你一定输错了。