#遇到的问题
最后总是显示: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ᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
在你的代码中,tot
和 count
的赋值应该在循环外面进行,因为你需要在循环中不断累加它们的值。此外,你需要在每次循环中判断输入的数字是否在范围内,如果不在范围内,需要将 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}.")
在这个修改后的程序中,tot
和 count
的初始值在循环外面定义为 0。在每次循环中,如果输入的数字不在范围内,将 count
减 1,否则将输入的数字加入 tot
中。在循环结束后,根据 count
的值计算平均数并输出结果。如果 count
的值为 0,则表示没有输入任何数字,输出相应的提示信息。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢