python 计算平均成绩问题

#遇到的问题
最后总是显示:Arvosanojen keskiarvo on -1.0

#代码:
num=0
end=0
while(num!=-1):
    tot=0
    count=0
    num=int(input("Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): "))
    tot=tot+num
    count=count+1
    end=tot/count
    if(num not in range(1,6) and num!=-1):
        print("Väärä syöte. Vain arvosanat 1-5 kelpaavat (-1 lopettaa).")
        count=count-1
        continue
    if(num==-1):
        break

print(f"Arvosanojen keskiarvo on {end}")

#自己运行
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 5
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 3
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 1
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 0
Väärä syöte. Vain arvosanat 1-5 kelpaavat (-1 lopettaa).
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): -1
Arvosanojen keskiarvo on -1.0


#程序运行预期示例:

Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 5
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 3
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 1
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 0
Väärä syöte. Vain arvosanat 1-5 kelpaavat (-1 lopettaa).
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): 4
Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): -1
Arvosanojen keskiarvo on 3.25.

num=0
end=0
count=0
tot=0
while(num!=-1):
    num=int(input("Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): "))
    if(num==-1):
        break
    if(num not in range(1,6) and num!=-1):
        print("Väärä syöte. Vain arvosanat 1-5 kelpaavat (-1 lopettaa).")
        continue
    tot=tot+num
    count=count+1
if count > 0:
    end=tot/count 
print(f"Arvosanojen keskiarvo on {end}")
 

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
在你的代码中,totcount 的赋值应该在循环外面进行,因为你需要在循环中不断累加它们的值。此外,你需要在每次循环中判断输入的数字是否在范围内,如果不在范围内,需要将 count 减 1,以保证计算平均数时不包括错误输入的数字。

以下是修改后的代码:

num = 0
tot = 0
count = 0
while num != -1:
    num = int(input("Anna kurssiarvosana väliltä 1-5 (-1 lopettaa): "))
    if num == -1:
        break
    if num not in range(1, 6):
        print("Väärä syöte. Vain arvosanat 1-5 kelpaavat (-1 lopettaa).")
        count -= 1
        continue
    tot += num
    count += 1

if count == 0:
    print("Et syöttänyt yhtään arvosanaa.")
else:
    avg = tot / count
    print(f"Arvosanojen keskiarvo on {avg:.2f}.")

在这个修改后的程序中,totcount 的初始值在循环外面定义为 0。在每次循环中,如果输入的数字不在范围内,将 count 减 1,否则将输入的数字加入 tot 中。在循环结束后,根据 count 的值计算平均数并输出结果。如果 count 的值为 0,则表示没有输入任何数字,输出相应的提示信息。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢