2016-11-07 61 views
2

列表計算平均值[以下是我迄今爲止]需要一些幫助從整數

import statistics 

print ("Type '0' at any time to end program.") 

my_numbers=[] 

while True: 

    try: 
     x=int(input("Enter a positive integer. ")) 
     my_numbers.append(x) 
     while x<0: 
      print ("Enter a POSITIVE integer.") 
      x=int(input("Enter a positive integer. ")) 
    except ValueError: 
     print ("Invalid character entered. Enter a positive integer.") 
    if x==0: 
     print ('Your mean is',statistics.mean(my_numbers)) 
     print ('Your median is',statistics.median(my_numbers)) 
     print ('Your range is',max(my_numbers) - min(my_numbers)) 
     break 

本質的代碼需要問正整數計算平均數,中位數,和他們的範圍在用戶輸入「0」之後。該代碼還需要不允許用戶輸入非正整數。我有兩個問題。

  • 最終計算包括負整數和零。我需要負數和零來排除最後的計算。注意:由於某些原因,小數未包含在最終計算中。

  • 非整數返回錯誤「NameError:名字‘X’沒有定義」中第13行

任何幫助將不勝感激。謝謝。

+0

把你的代碼中的問題本身,作爲文本,格式爲代碼。 – TigerhawkT3

+1

此外,您的問題似乎沒有問題。請看[問]。 – TigerhawkT3

+1

看起來更像一個「請做我的工作」的帖子,而不是一個實際的問題。 –

回答

0

感謝您提出這樣的問題,使Python更容易爲此頁面的下一個訪問者開始。

  • 最終計算包括負整數和零,因爲您在測試之前將其附加到列表中。 my_numbers.append(x)應該在while測試之後和之外,例如:
  • 當 這些字符串或字符無法解析爲整數(如預定義的Python變量)時,會爲用戶輸入(如字符串或字符)引發NameError。你 應該趕上NameError以及你做的ValueError

希望這會有所幫助。

0
  1. 沿着while循環移動my_numbers.append(x)
  2. 你需要的是趕上NameError
0

只有當您獲得有效的x時,才應該致電my_numbers.append(x)

-1
import statistics 

print ("Type '0' at any time to end program.") 

my_numbers=[]  #list to hold integer input from the user 


while True: 
    try: 
     x = int(input("Enter a positive integer. ")) 
     while x<0: 
      print("Enter a POSITIVE integer.") 
      x = int(input("Enter a positive integer: ")) 

except ValueError: 
    print ("Invalid character entered. Enter a positive integer.") 

if (x==0): 
    print ('Your mean is: ',statistics.mean(my_numbers)) 
    print ('Your median is: ',statistics.median(my_numbers)) 
    print ('Your range is: ',max(my_numbers) - min(my_numbers)) 
    break 

# my_numbers.append(x) is moved down the loop 
# the value of x will only be appended to my_numbers if it is valid input 
my_numbers.append(x) 
0

The final calculations are including negative integers and zero. I need negative numbers and zero to be excluded from the final calculations.

因爲你是檢查while x<0前追加投入。

解決方案:在塊的同時移動下面的附加語句my_numbers.append(x)

Note: Decimals aren't being included in the final calculations, for some reason.

int(x)將小數點/浮點數轉換爲整數,即從技術上說,您沒有任何小數。

:使用float()代替int()

Non-integers return the error "NameError: name 'x' is not defined" in line 13.

傳遞不能被轉換一個characeter(型鑄造)到整數,使用int()引發NameError

解決方案:您需要處理與您所期望的相同的效果ValueError


最終代碼:

import statistics 

print ("Type '0' at any time to end program.") 

my_numbers=[] 

while True: 
    try: 
     x=int(input("Enter a positive integer. "))   
     while x<0: 
      print ("Enter a POSITIVE integer.") 
      x=int(input("Enter a positive integer. ")) 
    my_numbers.append(x) 
    except ValueError: 
     print ("Invalid character entered. Enter a positive integer.") 
    except NameError: 
     print ("Invalid character entered. Enter a positive integer.") 
    if x==0: 
     print ('Your mean is',statistics.mean(my_numbers)) 
     print ('Your median is',statistics.median(my_numbers)) 
     print ('Your range is',max(my_numbers) - min(my_numbers)) 
     break