Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何编写一个函数,反复提示用户输入一个数字,然后对这些数字求平均值?_Python_Python 3.x - Fatal编程技术网

Python 如何编写一个函数,反复提示用户输入一个数字,然后对这些数字求平均值?

Python 如何编写一个函数,反复提示用户输入一个数字,然后对这些数字求平均值?,python,python-3.x,Python,Python 3.x,我对编程相当陌生,我不知道该怎么做 基本上,我需要一个函数,反复提示用户输入一个整数,直到他们输入一个非数字字符,然后取数字并求平均值 这就是我到目前为止所知道的,ave函数是平均数,这不是问题所在 def ioAve(): L = input("Enter your number: ") if L == int: print(L) if L != int: ave(L) 程序根本不返回任何内容。可能是这样的。我相信有一种更像蟒

我对编程相当陌生,我不知道该怎么做

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

这就是我到目前为止所知道的,ave函数是平均数,这不是问题所在

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

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

可能是这样的。我相信有一种更像蟒蛇的方式

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))
#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()

也许是这样的。我相信有一种更像蟒蛇的方式

#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()

这可能是我能想到的解决这一问题的最有说服力的方法。检查输入的数字是否属于某一类型的方法不如捕获在尝试转换时可能引发的异常(例如,在这种情况下,当向int()传递无效值时,会引发ValueError)。您可以在网站上了解有关Python中异常的更多信息

下面的解决方案还使用一个列表,它是一个可以包含多个值的对象。您可以在上了解有关列表的更多信息


这可能是我能想到的解决这一问题的最有说服力的方法。检查输入的数字是否属于某一类型的方法不如捕获在尝试转换时可能引发的异常(例如,在这种情况下,当向int()传递无效值时,会引发ValueError)。您可以在网站上了解有关Python中异常的更多信息

下面的解决方案还使用一个列表,它是一个可以包含多个值的对象。您可以在上了解有关列表的更多信息

大概是这样的:

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: ')),...)]))
对不起,我忍不住了。

像这样的:

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: ')),...)]))

抱歉,我无法抗拒。

这个问题似乎离题了,因为OP需要培训,而不是“我该如何解决这个问题?”我知道问题是什么,但你真的应该发布观察到的行为是什么,以及它如何偏离预期行为。这个问题似乎离题了,因为OP需要培训,不是“我该如何解决这个问题?”我知道问题出在哪里,但是你应该发布观察到的行为是什么,以及它如何偏离预期的行为。这是C潜入Python的。最明显的Cism是函数末尾的sys.exit(),程序在完成后无论如何都会退出。最明显的Cism是函数末尾的sys.exit(),程序将在完成后退出。