我不知道我做錯了什麼,但是這讓我感覺很糟糕。爲什麼我會收到語法錯誤?我必須使用while語句對平均計算器進行編碼,其中「0」表示程序需要執行計算。無效的語法錯誤 - 平均計算器「IF」和「WHILE」
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%
我不知道我做錯了什麼,但是這讓我感覺很糟糕。爲什麼我會收到語法錯誤?我必須使用while語句對平均計算器進行編碼,其中「0」表示程序需要執行計算。無效的語法錯誤 - 平均計算器「IF」和「WHILE」
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%
我已經固定的代碼爲您服務。對於將來的問題,請將您的代碼直接發佈到您的問題中,並將其全部縮進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%
圖像中的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.
備選答案
使用列表,相加,然後除以。相同的概念,比較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)
提防師'如果測試==「0''不是它自己的一個有效行。你想在那裏做什麼? – Harrison
請不要發佈您的代碼的屏幕截圖。將你的代碼複製粘貼到你的問題中,並使用格式化工具。另外,請粘貼發生語法錯誤的地方的* exact *錯誤信息 – idjaw
我看不到你如何退出無限循環,或者你爲什麼期望檢查一個整數與字符串相比 –