python - 有时在计算平均程序时得到错误的输出
问题描述
当我输入数字 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
解决方案
您提供的代码无法运行:您在强制转换为浮点数时缺少右括号,并且由于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))
推荐阅读
- batch-file - 批处理 - 如何在作为参数传递给子程序的字符串中回显感叹号?
- r - Multi-line text output in R Shiny
- unit-testing - 为什么 ActiveRecord 在查询同一记录时会创建不同的 ruby 对象?
- powershell - Powershell CREDSSP 问题
- php - Woocommerce 电子邮件 - 根据产品数量发送多封电子邮件
- botframework - 处理 AdaptiveCard 操作得到“抱歉,我的机器人代码有问题。”
- php - Update one value in table sql
- javascript - Required click for called Function
- c# - 在 C# 中正确使用 Try Catch 进行 SQL 连接
- java - java存储在同一个对象中的两个不同的类加上在网格中显示