如何编写一个重复提示用户输入数字然后平均数字的函数?

时间:2014-03-25 20:02:44

标签: python python-3.x

我对编程很陌生,我不知道如何解决这个问题。

基本上我需要一个重复提示用户输入整数的函数,直到它们输入非数字字符,然后它取数字并取平均值。

这就是我到目前为止,ave函数是平均数字,这不是问题

def ioAve():
   L = input("Enter your number: ")
      if L == int:
         print(L)
      if L != int:
         ave(L)

该程序根本不会返回任何内容。

4 个答案:

答案 0 :(得分:3)

这可能是我能想到解决这个问题的最灵活方式。检查输入的数字是否属于某种类型的方法不如捕获尝试转换时可能引发的异常(例如,在将无效值传递给int()时引发ValueError)。您可以在Python wiki了解有关Python异常的更多信息。

下面的解决方案还使用了一个列表,该列表是一个可以包含多个值的对象。您可以在effbot.org了解有关列表的详情。

numbers = list()
while True:
    try:
        number = int(input("Enter a number: "))
        numbers.append(number)
    except ValueError:
        break

print ("The average is", sum(numbers) / len(numbers))

答案 1 :(得分:2)

cont = True
nums = []
while cont:
    entered = input("Enter a number: ")
    cont = all(char.isdigit() for char in entered)
    if cont:
        nums.append(int(entered))
print("The average is:", sum(nums)/len(nums))

答案 2 :(得分:0)

这样的事可能。我相信你有更多的蟒蛇方式。

#import sys instead of using sys for program termination

def main():
    sum = 0
    iterations = 0
    while True:
        try:
            num = int(raw_input("Input an integer: "))
            iterations += 1
            sum += num
        except:
            print "Average: "+str(sum//iterations)
            #sys.exit() use break to "jump" out of an infinite loop
            break

if __name__ == "__main__":
    main()

答案 3 :(得分:0)

这样的事情:

print('Average: ',(lambda x:sum(x)/len(x))
([x for x in iter(lambda:(lambda x:int(x)
if x and all(x.isdigit() for x in x)else
...)(input('Enter a number: ')),...)]))

抱歉,我无法抗拒。