我是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)
你这里有几个问题。首先,您要做的是找到用户输入的所有数字的总和并将其打印出来。但你真正做的只是打印出用户输入的第一个数字和最新数字的总和。
你的sum变量在这里设置:
sum=number+number1
但number
变量永远不会更新;它始终是用户输入的第一个数字。另一方面,number1
只是用户输入的最后一个数字。所以总和被设定为1st_number + last_number
。
你需要做的是将最新的数字添加到总和中:sum += number1
(在while循环之前将sum设置为0)。
您的代码的第二个问题是这一行:
number1=float(numberString)
如果numberString
不是数字,则该行将抛出错误。你的while循环的条件检查是否numberString == 'stop'
,但这永远不会是真的。如果用户输入“stop”,程序将抛出错误,因为字符串无法转换为float。因此,在将numberString转换为float之前,您应该检查是否已满足您的条件。
在整个编程中我也是初学者。在这里分享我的学习作为使用本网站的第一步。
我关注自学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))
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)
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