2016-03-01 44 views
0

我正在编写用于从输入创建一个数字列表并获取列表的平均值。要求是:当用户输入一个号码时,该号码将被追加到列表中;当用户按Enter时,输入部分将停止并执行计算部分。 这里是我的代码:在python中使用输入3

n = (input("please input a number")) 
numlist = [] 

while n != '': 
    numlist.append(float(n)) 
    n = float(input("please input a number")) 

    N = 0 
    Sum = 0 
    for c in numlist: 
     N = N+1 
     Sum = Sum+c 

Ave = Sum/N 
print("there are",N,"numbers","the average is",Ave) 

,如果我输入数字,一切工作正常。但是当我按Enter时,它显示ValueError。我知道问题出在float()。我该如何解决这个问题?

+0

第一个'N'仍然是一个字符串添加一个尝试,catch块。 – bereal

+0

在while循环中追加期间,第一个n被转换为numlist.append()中的浮点数。我刚刚删除了第二个n的float转换,并且它工作。 – rogerc1992

+1

当您按Enter键时,输入无法转换为浮点数,并且正确显示数值错误。您可以保存输入结果并在尝试将其转换为浮点形式之前对其进行检查,或者可以使用try/catch块来捕获异常并计算平均值。除此之外,我甚至无法开始计算您在这样一个小代码片段中遇到的问题。 – Muposat

回答

2

,因为你叫float()当你追加nnumlist你不需要绕input()功能float()你的循环中。

-1

这应该解决UR的概率,由乌尔左右print语句

n = (input("please input a number")) 
numlist = [] 

while True : 
    numlist.append(float(n)) 
    #####cath the exception and break out of 
    try : 
     n = float(input("please input a number")) 
    except ValueError : 
     break 


N = 0 
Sum = 0 
for c in numlist: 
    N = N+1 
    Sum = Sum+c 



Ave = Sum/N 
print("there are",N,"numbers","the average is",Ave) 
+0

为什么不必要地调用'float()'两次? – tjohnson