python - 哨兵值不起作用,程序运行得太早
问题描述
所以当我输入给我的值时,程序在它应该停止之前停止,它是 123 而不是 -1。我确实将 {while Grade_entered >=0 和 Grade_entered <= 100:} 替换为 {while grade_entered != '-1':} ,这是一个标记值,但如果我这样做,程序就不会运行。我还添加了 continue ,因为我认为如果我输入的数字不在 0 - 100 范围内,它会使程序继续运行,但这根本没有帮助。我的问题是我应该在哪里添加标记值{while grade_entered != '-1':} 以便在我插入 -1 后程序结束?
<您需要计算输入了多少及格分数。使用哨兵控制的 while 循环,该循环将要求用户输入学生成绩,直到输入值 -1。使用计数器变量来计算所有通过成绩的成绩,其中 50 是最低及格成绩。如果有任何成绩超出有效范围(0 到 100),则向用户显示错误消息,并且不要将该成绩视为通过(或有效)。我们还想看看有效成绩通过的百分比。>
# 1st Test Case
# 45
# 90
# 70
# 87
# 123 That is not a valid test grade!
# 100 You have entered 4 passing grades.
# -1 80.0% of the valid grades are passing.
count = 0
total = 0
grade_entered = 0
print('Enter test scores to average. Enter -1 to Quit:')
while grade_entered >= 0 and grade_entered <= 100:
grade_entered = float(input(""))
if grade_entered >= 0 and grade_entered <= 100:
total += grade_entered
count += 1
continue
else:
print('This is not a valid grade!')
print("You have entered " + str(count) + " passing grades.")
average = total / count
print("{:.2f}% of the valid grades are passing".format(average))
这是我得到的结果
Enter test scores to average. Enter -1 to Quit:
45
90
70
87
123
This is not a valid grade!
You have entered 4 passing grades.
73.00% of the valid grades are passing
解决方案
使用 python 时进行正确的缩进很重要,你的 else 子句不再是 while 循环的一部分,因为它离得太远了。
整个事情看起来应该是这样的:
grade_entered = float(input(""))
while grade_entered != -1:
if grade_entered >= 0 and grade_entered <= 100:
total += grade_entered
count += 1
#continue this is unnecesarry
else:
print('This is not a valid grade!')
grade_entered = float(input(""))
推荐阅读
- python - Gunicorn 工作人员在请求后不会缩小内存
- dependency-injection - 在 dotnet core 中使用 DI 为多个实例创建多个范围
- python - pandas groupby 中“as_index = False”和“reset_index()”之间的区别
- java - 复合图形白到异或
- r - 将数据框中列中括号之间的文本提取到数据框中的新列中
- python - 如何将 pip 包安装到特定的 Python 版本?
- java - Java 登录到亚里士多德元数据注册表
- java - Niolocker 在 Spring Boot 应用程序中不起作用
- git - ssh-keygen 没有找到 ssh_askpass
- r - 传播交错的data.frame