【问题标题】:Use Python to find average of some numbers使用 Python 求一些数字的平均值
【发布时间】:2012-10-01 14:02:42
【问题描述】:

我正在使用 Python 做一个问题,比如不断要求用户输入数字。如果不是,程序应该计算这些数字的平均值。似乎我的程序无法从第二个 while 循环中逃脱,并且“except”仍然是错误的。这是我的程序:

count =0
total=0
ask=input ("Do you want to enter a number? (Y/N)")
while ask=="Y":
    numbers=float(input("Enter number"))
    count= count+1
    total=total+numbers
    con_ask=input ("Do you want to continue entering a number? (Y/N)")
    if con_ask=="Y":
        numbers=float(input("Enter number"))
        count=count+1
        total=total+numbers
    elif con_ask=="N":
        print ("The average of", count, "numbers is", total/count)
except :
    print ("Zero Division Occured. Average cannot be calculated")

【问题讨论】:

    标签: python while-loop except


    【解决方案1】:

    你似乎在循环ask == "Y",但后来设置了变量con_ask。 你能重复使用ask吗?

    另外,实现此目的的另一种方法是首先使用输入中的所有数字填充一个数组,然后平均值变为:

    sum(numbers) / len(numbers)
    

    【讨论】:

    • 在第二个“Y”输入后,程序一直要求我输入数字。但我希望它在每次输入数字之前都问我“你想继续吗”。
    【解决方案2】:

    这里只有一个while 循环。您可以重复使用ask,以便在每次循环迭代后对其进行测试。

    ask=input ("Do you want to continue entering a number? (Y/N)")
    

    【讨论】:

      【解决方案3】:

      我的计算平均数的版本:

      count = 0
      total = 0
      ask = raw_input("Do you want to enter a number? (Y/N)")
      try:
          while ask == "Y":
              numbers = float(raw_input("Enter number"))
              count = count + 1
              total = total + numbers
              con_ask = raw_input("Do you want to continue entering a number? (Y/N)")
              if con_ask == "Y":
                  continue
              elif con_ask == "N":
                  print "The average of", count, "numbers is", total / count
                  break
      except:
          print "Zero Division Occured. Average cannot be calculated"
      

      【讨论】:

        【解决方案4】:

        如果您想要一个简单的程序来计算某个数字的平均值,您可以查看Python Cookbook

        【讨论】:

          【解决方案5】:

          另一种方法:

          numbers = []
          ask = raw_input("Do you want to enter a number? (Y/N) ")
          while ask == "Y":
             numbers.append(float(raw_input("Enter number ")))
             ask = raw_input("Do you want to continue entering a number? (Y/N) ")
          
          if numbers:
              avg = sum(numbers,0.0) / len(numbers)
              print "The average of {0} numbers is {1}".format(len(numbers),avg)
          else:
              print "You didn't enter any numbers"
          

          【讨论】:

            【解决方案6】:
            from sys import argv
            
            t=0
            c=0
            ans=raw_input("Enetr the choice")
            
            while ans=="Y" or ans=="y":
                a=float(raw_input("Value\t"))
                t=t+a
                c=c+1
                print  "-------------------------------------------"
                print "avarage %f\n" %(t/c)
                ask=raw_input("do you wanna continue \t")
                if ask=="y" or ask=="y":
                    continue
                else:
                    print "Not wanna more inputs\n"
                    break
                    print "---------- END ----------------------------"
            

            【讨论】:

              【解决方案7】:

              如果你知道你需要输入多少数字

              我的回答是:

              l=[]
              
              a=int(input('How much numbers you need to enter:'))
              
              for x in range(a):
              
                  s=float(input())
                  l.append(s)
              print(sum(l)/a)
              

              如果你不知道你需要输入多少数字

              l=[]
              
              a=input('If you want to enter a number then enter a Y if you dont't enter N:')
              
              while a=='Y':
                   s=float(input())
                   l.append(s)
                   a=input('If you want to enter a number then enter a Y if you dont't enter N:')
              print(sum(l)/len(l))
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-01-29
                • 2022-08-18
                • 2016-12-25
                • 1970-01-01
                • 2022-11-19
                • 1970-01-01
                相关资源
                最近更新 更多