亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算整數的奇數和偶數平均值

計算整數的奇數和偶數平均值

慕的地8271018 2022-06-28 17:08:27
我需要編寫一個程序來計算用戶輸入的整數的偶數和奇數平均值。用戶鍵入“完成”以完成。輸出將顯示奇數的平均值和偶數的平均值。我有我的while循環程序來計算數字的總和,我正在嘗試添加奇數和偶數的額外要求。這是該代碼:total = 0done = Falsewhile(not done):    user_in = input("Give me an integer or type 'done' to be done.")    if( user_in.lower() == "done"):        done = True    else:        # assume that they've typed in an integer        total += int(user_in)print (total)下面是我修改后的代碼,用于對奇數和偶數進行排序,然后平均每個組。total = 0evenSums = 0oddSums = 0done = Falsewhile(not done):    user_in = input("Give me an integer or type 'done' to be done.")    if( user_in.lower() == "done"):        done = True    else:        # assuming they've typed in an integer        total += int(user_in)        if user_in % 2 == 0:            evenSums += user_in            evenAverage = evenSums / user_in        else:            oddSums += user_in            oddAverage = oddSums / user_inprint(total)print("Even Average: " + str(evenAverage))print("Odd Average: " + str(oddAverage))預期的:Enter number: 11Enter number: 24Enter number: 18Enter number: 29Enter number: 7Enter number: doneEven Average: 21Odd Average: 15.666666666666666實際的:Give me an integer or type 'done' to be done.6Traceback (most recent call last):  File "C:/Users/guita/Documents/School/CSCI100/CSCI100_Lab4_P/CSCI100_Lab4_P/problem7.py", line 14, in <module>    if user_in % 2 == 0:TypeError: not all arguments converted during string formatting
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

user_in是一個字符串,因此你不能取它的模數。改為int(user_in) % 2..



查看完整回答
反對 回復 2022-06-28
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

user_in在對其執行算術運算之前,您應該轉換為數字。您還應該分別跟蹤偶數和奇數的計數,以便計算每個的正確平均值:


evenSums = 0

oddSums = 0

evenCount = 0

oddCount = 0

done = False

while not done:

    user_in = input("Give me an integer or type 'done' to be done.")

    if user_in.lower() == "done":

        done = True

    else:

        user_in = int(user_in)

        if user_in % 2 == 0:

            evenSums += user_in

            evenCount += 1

        else:

            oddSums += user_in

            oddCount += 1

print("Even Average: " + str(evenSums / evenCount))

print("Odd Average: " + str(oddSums / oddCount))


查看完整回答
反對 回復 2022-06-28
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

if user_in % 2 == 0:

在上一行中,int(user_in) 不會導致user_in成為整數。它創建一個新值,它是整數等價物。


結果,%被解釋為字符串格式化運算符而不是模運算符,并且錯誤消息與您所期望的完全一樣。


首先用它的整數等效替換user_in,然后用它做所有適當的操作和測試:


user_in = int(user_in)

total += user_in

if user_in % 2 == 0:

    # etc.

此外:


evenAverage = evenSums / user_in

這里有兩個邏輯錯誤(對于 也是類似的oddAverage)。首先,您需要除以輸入的偶數個數,而不是最近輸入的偶數。您將不得不單獨計算輸入了多少偶數。其次,這個除法必須只發生一次,在所有數字都被輸入之后——因此,它不屬于循環內部。


查看完整回答
反對 回復 2022-06-28
  • 3 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號