问题:编写一个程序,连续询问用户以整数百分比形式给出的考试分数,范围为0到100。如果输入的值不在该范围内(-1除外),则打印错误并提示用户重试。计算所有有效分数输入的平均值沿着每个字母等级类别中的总分数,如下所示:90到100为A,80到89为B,70到79为C,60到69为D,0到59为F。使用负分数作为标记值来指示输入的结束。(负值仅用于结束循环,因此不要在计算中使用它。)例如,如果输入为。
#Enter in the 4 exam scores
g1=int(input("Enter an exam score between 0 and 100 or -1 to end: "))
g2=int(input("Enter an exam score between 0 and 100 or -1 to end: "))
g3=int(input("Enter an exam score between 0 and 100 or -1 to end: "))
g4=int(input("Enter an exam score between 0 and 100 or -1 to end: "))
total =(g1 + g2 + g3 + g4)
while g1 is range(0,100):
continue
else:
print("Sorry",g1,"is not in the range of 0 and 100 or -1. Try again!")
while g2 is range(0,100):
continue
else:
print("Sorry",g2,"is not in the range of 0 and 100 or -1. Try again!")
while g3 is range(0,100):
continue
else:
print("Sorry",g3,"is not in the range of 0 and 100 or -1. Try again!")
while g4 is range(0,100):
continue
else:
print("Sorry",g4,"is not in the range of 0 and 100 or -1. Try again!")
#calculating Average
def calc_average(total):
return total/4
def determine_letter_grade(grade):
if 90 <= grade <= 100:
1 + TotalA
elif 80 <= grade <= 89:
1 + TotalB
elif 70 <= grade <= 79:
1 + TotalC
elif 60 <= grade <= 69:
1 + TotalD
else:
1 + TotalF
grade=total
average=calc_average
#printing the average of the 4 scores
print("You entered four valid exam scores with an average of: " + str(average))
print("------------------------------------------------------------------------")
print("Grade Distribution:")
print("Number of A's: ",TotalA)
print("Number of B's: ",TotalB)
print("Number of C's: ",TotalC)
print("Number of D's: ",TotalD)
print("Number of F's: ",TotalF)
给我的输出示例:
Enter an exam score between 0 and 100 or -1 to end: 88.64
Enter an exam score between 0 and 100 or -1 to end: 103
Sorry, 103 is not in the range of 0 and 100 or -1. Try Again!
Enter an exam score between 0 and 100 or -1 to end: 99.10
Enter an exam score between 0 and 100 or -1 to end: 71.52
Enter an exam score between 0 and 100 or -1 to end: 73
Enter an exam score between 0 and 100 or -1 to end: -1
You entered 4 valid exam scores with an average of 83.07.
Grade Distribution
Number of A’s = 1
Number of B’s = 1
Number of C’s = 2
Number of D’s = 0
Number of F’s = 0
注:这是我的第一堂计算机科学课,所以我肯定有一个明显的工作,我错过了,但我感谢任何帮助,我可以得到
4条答案
按热度按时间rwqw0loc1#
以下是我的详细说明:
因此,程序应该询问用户他们得到了什么分数,直到他们说他们得到了
-1
,在这个过程中,在你给予他们的结果之后,要循环直到他们给出-1
,我们可以使用while
循环:希望我的注解能帮助您弄清楚我的代码中发生了什么!
blpfk2vs2#
这里你问题可以被分成几个部分,
1.从用户处获取检查编号
1.从用户处获取这些检查的有效输入
1.计算所有检查的平均值
1.计算品位分布
1.如果用户输入为-1,则退出
下面的代码遵循所有这些步骤
luaexgnf3#
每当你有多个类似的示例需要处理时(评分范围、总计数),你必须尝试使用多值结构而不是单个变量,Python的列表和字典是为收集多个条目而设计的,可以是位置列表,也可以是键控索引(字典)。
这将使你的代码更加通用。当你操纵概念而不是示例时,你会知道你走在了正确的道路上。
例如:
grading
列表包含得分字母和最小值对(元组)。这种结构允许您通过查找值小于或等于输入值的第一个条目并使用相应的字母,将中的成绩值转换为得分字母。通过策略性地在100之后放置None值并且不放置小于零的值,相同的列表用于验证输入值。
next()
函数将为您执行搜索,并在不存在有效条目时返回None。你的主程序循环需要继续,直到输入值为-1,但它需要至少遍历输入一次(典型的repeat-until结构,但Python中只有
while
),所以while
语句将永远循环(即while True),并且需要在满足退出条件时被任意中断。要累计分数,字典(
scores
)比列表更适合,因为字典允许使用键(分数字母)访问示例,这允许跟踪单个变量中的多个分数,同样的方法也适用于计算每个分数的输入数量。要在最后得到平均值,只需将
scores
字典中的values scores相加,然后除以添加到counts
字典中的scores的计数。最后,要打印得分计数的摘要,您可以再次利用字典结构,并且只为所有得分字母和总计编写一个通用打印行。
vxbzzdmp4#
这可能对您有用: