向用户询问数字并输出总和和输入数量的程序

时间:2014-10-13 23:51:22

标签: python loops count while-loop add

我是python的初学者,我正在创建一个程序,要求用户输入任意数量的数字,直到他们输入“stop”。然后程序将输出他们输入的数字和所有数字加在一起的结果。一切都很好,但是一旦我输入另一个数字,添加将是不正确的。

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)     

5 个答案:

答案 0 :(得分:1)

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

你的sum变量在这里设置:

sum=number+number1

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

你需要做的是将最新的数字添加到总和中:sum += number1(在while循环之前将sum设置为0)。

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

number1=float(numberString)

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

答案 1 :(得分:1)

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

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

  

编写一个程序,重复读取数字直到用户输入   “完成”。输入“完成”后,打印出总数,计数和   数字的平均值。如果用户输入除a之外的任何内容   数字,使用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))

答案 2 :(得分:0)

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)

答案 3 :(得分:0)

  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
    

答案 4 :(得分:0)

修改为在输入为空时停止/中断。

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)`