【问题标题】:Python: (Count positive and negative numbers and compute the average of numbers)Python:(计算正数和负数并计算数字的平均值)
【发布时间】:2014-10-16 08:33:06
【问题描述】:

问题陈述:编写一个程序,读取未指定数量的整数,确定已读取的正值和负值的数量,并计算输入值的总和和平均值(不计算零)。您的程序以输入 0 结束。将平均值显示为浮点数。

示例输出(忽略项目符号,不知道如何将文本格式化为控制台输出):

  • 输入一个整数,如果为0则输入结束:1
  • 输入一个整数,如果为0则输入结束:2
  • 输入一个整数,如果为0则输入结束:-1
  • 输入一个整数,如果为0则输入结束:3
  • 输入一个整数,如果为0则输入结束:0
  • 您没有输入任何数字
  • 阳性数为 3
  • 底片数为 1
  • 一共5个
  • 平均为1.25

尝试的解决方案:

def main():
    i = int( input ("Enter an interger, the input ends if it is 0: "))
    count_pos = 0
    count_neg = 0
    total = 0
    if (i != 0):
        while (i != 0):
            if (i > 0):
                count_pos += 1
            elif (i < 0):
                count_neg += 1
            total += i
            i = int( input ("Enter an interger, the input ends if it is 0: "))
            count = count_pos + count_neg
            average = total / count

        print ("The number of positives is", count_pos)
        print ("The number of negatives is", count_neg)
        print ("The total is", total)
        print ("The average is", float(average))
    else:
        print ("You didn't enter any number.")

main()

【问题讨论】:

  • 你有什么问题?
  • 问题陈述位于标有“问题陈述:”的块的顶部
  • 你的输出中有什么错误?
  • eval 不仅危险,就我而言,它是邪恶的。 eval 所做的是执行您传递给它的任意 Python 代码。因此,如果用户输入import os;os.listdir(os.getcwd()),该代码将被执行,以便用户可以看到您当前工作目录的内容。他们将能够随意移动您的文件系统并像您一样删除/复制/移动内容。 eval 非常危险,如果你发现自己认为应该使用它,你应该非常仔细地考虑你是否在做正确的事情。
  • @DanielSchulze 如果您传递一个数字,它也不会做任何事情。在你的情况下这是完全没有必要的。

标签: python nested-loops python-3.4


【解决方案1】:

你不需要这一行(这就是你的错误发生的原因):

main(i)

要不断获取用户输入,请使用无限循环,并测试中断循环的条件。

while (true):
    i = input("Enter an integer (0 to stop): ")
    if(i == 0)
        break
    sum1 += i
    if (i > 0):
      count_pos += 1
    elif (i < 0):
      count_neg += 1

然后计算并返回平均值。

【讨论】:

    【解决方案2】:

    您正在使用不存在的参数“i”调用主函数。您不能使用在该函数之外的函数中声明的变量

    查看:Python Scopes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      相关资源
      最近更新 更多