【问题标题】:Program that asks user for numbers and outputs the sum and the amount of numbers entered询问用户输入数字并输出输入数字的总和和数量的程序
【发布时间】:2014-12-08 15:30:06
【问题描述】:

我是 python 的初学者,我正在创建一个程序,要求用户输入任意数量的数字,直到他们输入“停止”。然后程序会输出他们输入了多少个数字以及所有数字相加的结果。第一次一切正常,但只要我输入另一个数字,加法就会不正确。

count=1
numberstring=raw_input("Please enter a number: ")
number=float(numberstring)
while number!="stop":
    numberString=raw_input("Please enter another number: ")
    number1=float(numberString)
    sum=number+number1
    count= count+1
    print "The amount of numbers you entered was: " + str(count) + " and the sum of all these numbers together is: " + str(sum)     

【问题讨论】:

    标签: python loops count while-loop add


    【解决方案1】:

    这里有几个问题。首先,您要做的是找到用户输入的所有数字的总和并将其打印出来。但是你真正要做的只是打印出用户输入的第一个数字和最新数字的总和。

    你的 sum 变量在这里设置:

    sum=number+number1
    

    number 变量永远不会更新;它始终是用户输入的第一个数字。另一方面,number1 只是用户输入的最后一个数字。所以总和总是设置为1st_number + last_number

    您需要做的是将最新的数字添加到 sum 中,如下所示:sum += number1(在 while 循环之前 sum 设置为 0)。

    您的代码的第二个问题是这一行:

    number1=float(numberString)
    

    如果numberString 不是数字,则此行将引发错误。您的 while 循环条件检查是否为numberString == 'stop',但这永远不会是真的。如果用户输入“stop”,程序将抛出错误,因为字符串无法转换为浮点数。所以在将 numberString 转换为浮点数之前,你应该检查一下你的条件是否已经满足。

    【讨论】:

      【解决方案2】:

      我也是整个编程的初学者。在这里分享我的学习作为使用这个网站的第一步。

      我正在关注的一本自学python的书有一个练习如下。

      编写一个重复读取数字直到用户输入的程序 “完毕”。输入“完成”后,打印出总数、计数和 数的平均值。如果用户输入的不是 编号,使用 try 和 except 检测他们的错误并打印错误 留言并跳到下一个号码。

      感谢@John1024,我在您的帮助下尝试了这种方式。

      inp = 'Enter a number: '
      total = 0
      count = 0
      average = 0
      
      while True:
              s = raw_input(inp)
              if s == 'done':
                      break
              try:
                      total += float(s)
                      count += 1
                      average = total / count
              except ValueError:
                      print "Invalid Input. Try again: "
              continue
      print 'You entered %s numbers whose total is %s and average is %s.' % (str(count), str(total), str(average))
      

      【讨论】:

      • 您没有在循环中的任何地方使用平均值,那么为什么每次都计算它?在需要的地方计算它。
      • 我认为counttotal 会不断变化,这也会在迭代期间影响平均值。我认为平均值必须在循环内。如果我错了,请纠正。
      • 谢谢@Nsh,我明白了。我只是将它从循环中删除并放在print 语句的最后一行,它工作正常。 print "You entered %s numbers whose total is %s......average is %s." % (....str(total/count)
      【解决方案3】:
      prompt = "Please enter a number: "
      sum = 0
      count = 0
      while True:
          s = raw_input(prompt)
          prompt = "Please enter another number: "
          if s.lower() == 'stop':
              break
          try:
              sum += float(s)
              count += 1
          except ValueError:
              print "Bad number.  Try again"
      print "You entered %s numbers whose sum is %s." % (count, sum)
      

      【讨论】:

        【解决方案4】:
        1. 我为 Python 编写了这段代码,对于手头的任务来说似乎可以正常工作。
        2. 它一个一个地取数字并计算总数并相应地计数。
        3. 如果遇到一个字母,它会从计数中减去 1,否则平均值会出错。
        4. 如果遇到“完成”,则退出循环。
        5. 平均值是在循环之外计算的,因为它只需要计算一次。

          count = 0
          total = 0
          average = 0 
          while True:
                  numlist = raw_input('Enter number\n')
                  if numlist == 'done':
                          break
                  try:
                          count = count + 1
                          total = total + float(numlist)
                  except:
                          count = count - 1
                          print 'Enter a valid number'
                          continue
          average = float(total)/float(count) 
          print 'Count:',count
          print 'Total:',total
          print 'Avg:',average
          

        【讨论】:

          【解决方案5】:

          如果输入为空,则修改为停止/中断。

          count = 0
          total = 0
          average = 0 
          while True:
              numlist = input('Enter a number or press Enter to quit: ')
              if numlist == '':
                      break
              try:
                      count = count + 1
                      total = total + float(numlist)
              except:
                      count = count - 1
                      print('Enter a valid number')
                      continue
          average = float(total)/float(count) 
          print('The sum is',total)
          print('The average is',average)`
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-09
            • 1970-01-01
            • 2018-11-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多