麻烦涉及Python

时间:2014-05-08 01:32:37

标签: python

在这段代码中我用数字做一个循环,直到我写完"完成"在此之后我写的所有数字都会被添加,计算,然后计算出数字的平均值。但是我在这里遇到了一些问题

    from types import *
    while True:
        number = input("Enter a number")
        junction=[]
        if type(number)is FloatType :
            ju.append(number)
            continue
        elif number=="done":
            break
        else :
            print ("Invalid Input")
            continue

    print (sum(junction))
    print (len(junction))
    print (sum(junction)/len(junction))

2 个答案:

答案 0 :(得分:3)

您应该考虑改为使用try/except块(另外:您应该在<{1}}循环之外创建空列表):

while

另请注意,x = [] while True: a = input("Enter a number: ") try: x.append(int(a)) except ValueError: if a == 'done': break else: print ("Invalid Input") continue print ('Results') print (sum(x)) print (len(x)) print (sum(x)/len(x)) 适用于python3,如果您使用的是python2,则应使用input代替相同的效果。

答案 1 :(得分:1)

非常简单的答案是,您每次都要重置循环中的junction列表。所以它几乎一直都是空的,特别是当你输入"done"退出时。

将其移至程序的顶部;在while语句之上,它应该更适合你。

(另外,您不需要使用continue,因为循环的唯一方法是继续使用break语句。在所有其他情况下,循环将自行继续。)

from types import *
junction=[]
while True:
    number = input("Enter a number")
    if type(number)is FloatType :
        junction.append(number)
    elif number=="done":
        break
    else:
        print ("Invalid Input")

print (sum(junction))
print (len(junction))
print (sum(junction)/len(junction))