我是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)
答案 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)
平均值是在循环外计算的,因为它只需要计算一次。
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)`