2016-09-03 62 views
-3

我不知道我做錯了什麼,但是這讓我感覺很糟糕。爲什麼我會收到語法錯誤?我必須使用while語句對平均計算器進行編碼,其中「0」表示程序需要執行計算。無效的語法錯誤 - 平均計算器「IF」和「WHILE」

enter image description here 這裏的示例輸出我的教授定義:

SAMPLE RUN 

Enter test score 80 

Enter test score 70 

Enter test score 90 

Enter test score 88 

Enter test score 0 

The average is 82.000% 
+1

提防師'如果測試==「0''不是它自己的一個有效行。你想在那裏做什麼? – Harrison

+4

請不要發佈您的代碼的屏幕截圖。將你的代碼複製粘貼到你的問題中,並使用格式化工具。另外,請粘貼發生語法錯誤的地方的* exact *錯誤信息 – idjaw

+0

我看不到你如何退出無限循環,或者你爲什麼期望檢查一個整數與字符串相比 –

回答

1

我已經固定的代碼爲您服務。對於將來的問題,請將您的代碼直接發佈到您的問題中,並將其全部縮進4格以正確格式化。

addition_integer = 0 
divison_integer = 0 

while True: 
    test = int(input("Enter test score: ")) 
    if test == 0: 
     break 
    else: 
     addition_integer += test 
     divison_integer += 1 

print("The average is {}%".format(addition_integer/divison_integer)) 

這裏是我做了什麼來解決這個問題的解釋:

你被循環while True,這是正確的,但是你沒有辦法打出來的,而循環。你的文字if test == '0'永遠不會解析爲真,因爲你將輸入作爲用戶的int,更不用說它不合適,並且沒有合適的語法。我在上面的代碼中所做的是繼續循環,直到來自用戶的輸入等於0(整數,而不是字符串)。如果用戶輸入0,那麼我們簡單地跳出循環並打印平均值。在此之前,我們繼續輸入添加到addition_integer和1

總而言之增加division_integer,你是相當接近的解決方案,您只需要幾個語法的變化,並在正確的方向進行轉向你如何擺脫無限循環。

最後,這裏是使用你已經在你的問題中提供的數字測試:

Enter test score: 80 
Enter test score: 70 
Enter test score: 90 
Enter test score: 88 
Enter test score: 0 
The average is 82% 
2

圖像中的if聲明(請發表你的問題的實際代碼)無效。它需要冒號,即if test == '0':。它也需要一個身體。

示例輸出表明0將終止循環。先檢查一下,然後再修改division_integer,否則平均值會受到影響。然後,當你得到一個0突破跳出while循環與break,即

while True: 
    test = int(input('Enter test score:')) 
    if test == 0: 
     break 
    addition_integer += test 
    division_integer += 1 

請注意,您在輸入轉換爲整數,但你的測試是爲字符串"0"。如上所示,您需要測試整數0

還有一點,你應該輸入轉換爲整數時使用try/except塊,這樣就可以趕上無效輸入:

while True: 
    try: 
     test = int(input('Enter test score:')) 
    except ValueError: 
     print('Invalid number entered, try again.') 
     continue 
    # etc. 
0

備選答案

使用列表,相加,然後除以。相同的概念,比較while循環內的測試以突破它。另外檢查你是否得到有效的輸入,可以用try/except做成整數。

此外,通過零

values = [] 

while True: 
    try: 
     test = int(input('Enter test score:')) 
     if test == 0: 
      break 
     values.append(test) 
    except: 
     break 

total = len(values) 
avg = 0 if total == 0 else 1.0 * sum(values)/total 

print("The average is", avg)