python - 需要帮助在我的 python 代码上查找错误
问题描述
我正在编写一个程序来提示分数在 0.0 和 1.0 之间。如果分数超出范围,则打印错误。如果分数介于 0.0 和 1.0 之间,请使用下表打印等级:Score Grade >= 0.9 A>= 0.8 B>= 0.7 C>= 0.6 D< 0.6 F。
举个例子说明它最后应该做什么:
输入分数:0.95,A 输入分数:完美,无效输入 输入分数:10.0,无效输入 输入分数:0.75,C 输入分数:0.5,F
这是我现在的代码:
score = input("Enter Score: ")
try:
score= float(score)
if(score >= 0.0 and score <= 1.0):
if (score>= 0.9):
print("A")
elif (score>= 0.8):
print("B")
elif(score>= 0.7):
print("C")
elif (score>= 0.6):
print("D")
elif (score < 0.6):
print("F")
else:
print("Invalid input")
我似乎无法启动并运行它。任何帮助,将不胜感激。
解决方案
您的try
语句可能想要做两件事:验证用户输入是否可以转换为 a float
,以及生成的浮点数是否在 0-100 范围内。声明中不应包含其他内容try
。
如果该值不是浮点数或超出范围,您可以让循环继续获取另一个输入。否则,您可以继续使用单个if
语句将分数映射到字母等级。
while True:
score = input("Enter score: ")
try:
score = float(score) # Could raise ValueError
if not (0 <= score <= 1.0):
raise ValueError
except ValueError:
print("invalid input")
else:
break
if (score>= 0.9):
print("A")
elif (score>= 0.8):
print("B")
elif(score>= 0.7):
print("C")
elif (score>= 0.6):
print("D")
else: # Only option left for an in-range value.
print("F")
try
严格来说,范围检查也可以从语句中移出:
while True:
try:
score = float(score)
except ValueError:
print("invalid input")
continue
if 0 <= score <= 1.0:
break
print("invalid input")
我将失败的范围检查转换ValueError
为主要有一个错误消息和一个我们使用的地方break
,而不是显式的continue
. 有几种构造它的方法,但共同的特点是您首先验证它score
具有适合以下等级图的值。
推荐阅读
- java - 使用 bean ref 在骆驼路线中设置标题
- php - 删除多维数组中的重复项
- c# - C#:FastColoredTextBox 不更新语法突出显示
- c++ - 在这种情况下显式调用时,std::cout 如何改变析构函数的行为?
- xml - Facebook Zapier 解析器 XML 提要
- clojure - Clojure 不知道如何创建 ISeq
- ruby-on-rails - 保持未经许可的参数不打印到日志
- amazon-web-services - 限制对特定 IAM 用户的 API 网关访问
- javascript - 如何将dom元素旋转一定量(纯js)
- google-sheets - 如何在 Google 表格中按 1 列自动排序