2014-03-25 52 views
0

我對編程相當陌生,我不知道如何去做這件事。如何編寫一個重複提示用戶輸入號碼然後平均數字的功能?

基本上我需要一個函數,重複提示用戶輸入一個整數,直到他們輸入一個非數字字符,然後它將這些數字取平均值。

這是我到目前爲止,大街功能是平均數字,這不是問題

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

程序完全不返回任何東西。

+3

這個問題似乎是題外話,因爲OP想要訓練,而不是'我該如何解決這個問題?' – KevinDTimm

+0

我看到了什麼問題,但是您應該真正發佈觀察到的行爲,以及它與預期行爲的差異 – inspectorG4dget

回答

3

這可能是我能想到解決這個問題的最pythonic方式。您檢查輸入的數字是否爲某種類型的方法不如捕獲嘗試轉換時可能引發的異常(例如,在將無效值傳遞給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)) 
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)) 
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() 
+1

這是C潛入Python的。最明顯的Cism是函數末尾的sys.exit(),程序結束時會退出。 – Davidmh

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

對不起,我無法抗拒。

相關問題