首页 > 解决方案 > 有时在计算平均程序时得到错误的输出

问题描述

当我输入数字 0、3、3、4、2、-1 时,我得到正确的平均值 2.4。但是,当我输入 4、4、3、2、4、-99 时,我得到的结果是 2.6 而不是 3.4。以下是程序必须执行的操作和代码的摘要。任何想法或提示将不胜感激。

该程序允许每位影院顾客输入一个从 0 到 4 的值,指示该顾客授予该指南的本周精选电影的星级数。程序连续执行,直到剧院经理输入负数退出。在节目结束时,会显示电影的平均星级。

totalStars = 0  
numPatrons = 0  
averageStars = 0
numStars = 0

while numStars <= -1:
    numStarsString = float(input("Enter rating for featured movie: ")
    numPatrons += 1
    totalStars += numStars

averageStars = totalStars / numPatrons
print("Average Star Value: " + str(averageStars))

编辑:想办法让它工作。感谢大家!

totalStars = 0 
numPatrons = 0 

numStarsString = input("Enter rating for featured movie: ")
numStars = float(numStarsString)
totalStars += numStars
numPatrons += 1

while numStars >= 0 and numStars <= 4:
    numStarsString = input("Enter rating for featured movie: ")
    numStars = float(numStarsString)
    if numStars <= -1:
        break
    totalStars += numStars
    numPatrons += 1

averageStars = totalStars / numPatrons

标签: python

解决方案


您提供的代码无法运行:您在强制转换为浮点数时缺少右括号,并且由于NumStars初始化为零,您的while循环永远不会执行 - 它仅在numStars <= -1. 即使纠正了这些,您仍然会遇到问题。numStars永远不会更新 - 用户的输入转到numStarsString.

它不起作用的事实使得调试非常不可能。

以下代码可以满足您的需求,并结合了一些 Python 功能/约定(变量是带下划线的小写字母,.format())。我会将它与您实际编写的代码进行比较,看看有什么区别。

total_stars = 0  
patrons = 0  
average_stars = 0
stars = 0

while True:
    stars = float(input("Enter rating for featured movie: ")
    if stars < 0:
        break
    patrons += 1
    total_stars += stars

average_stars = total_stars / patrons
print("Average Star Value: {}".format(average_stars))

推荐阅读