我要写一个程序,接受5分,并确定每个分数相当于字母等级。结果将以表格形式打印
我了解问题的要求,以及所有其他步骤,我没有转述,因为他们不属于我的问题
我很难弄清楚的是如何将代码压缩成某种循环。
我觉得我所拥有的是非常多余的,应该有一个方法来浓缩它。 另外,我不能使用列表来解决这个问题。
# Letter grade constants
A_SCORE = 90
B_SCORE = 80
C_SCORE = 70
D_SCORE = 60
# Gather scores from user
num1 = int(input("Enter score 1: "))
if num1 >= A_SCORE:
letter1 = "A"
elif num1 >= B_SCORE:
letter1 = "B"
elif num1 >= C_SCORE:
letter1 = "C"
elif num1 >= D_SCORE:
letter1 = "D"
else:
letter1 = "F"
num2 = int(input("Enter score 2: "))
if num2 >= A_SCORE:
letter2 = "A"
elif num2 >= B_SCORE:
letter2 = "B"
elif num2 >= C_SCORE:
letter2 = "C"
elif num2 >= D_SCORE:
letter2 = "D"
else:
letter2 = "F"
num3 = int(input("Enter score 3: "))
if num3 >= A_SCORE:
letter3 = "A"
elif num3 >= B_SCORE:
letter3 = "B"
elif num3 >= C_SCORE:
letter3 = "C"
elif num3 >= D_SCORE:
letter3 = "D"
else:
letter3 = "F"
num4 = int(input("Enter score 4: "))
if num4 >= A_SCORE:
letter4 = "A"
elif num4 >= B_SCORE:
letter4 = "B"
elif num4 >= C_SCORE:
letter4 = "C"
elif num4 >= D_SCORE:
letter4 = "D"
else:
letter4 = "F"
num5 = int(input("Enter score 5: "))
if num5 >= A_SCORE:
letter5 = "A"
elif num5 >= B_SCORE:
letter5 = "B"
elif num5 >= C_SCORE:
letter5 = "C"
elif num5 >= D_SCORE:
letter5 = "D"
else:
letter5 = "F"
# Print results
print("score 1: \t\t" + str(num1) + "\t\t" + letter1)
print("score 2: \t\t" + str(num2) + "\t\t" + letter2)
print("score 3: \t\t" + str(num3) + "\t\t" + letter3)
print("score 4: \t\t" + str(num4) + "\t\t" + letter4)
print("score 5: \t\t" + str(num5) + "\t\t" + letter5)
下面是显示内容的示例。这是正确的格式,我刚刚排除了表格标题
Enter score 1: 75
Enter score 2: 88
Enter score 3: 91
Enter score 4: 80
Enter score 5: 85
score 1: 75 C
score 2: 88 B
score 3: 91 A
score 4: 80 B
score 5: 85 B
您可以使用
bisect
模块来获取成绩。这里,get_score
将采用数字等级并返回字母等级是不是家庭作业的限制条件不存在,以防止名单上的所有和工作的艰苦方式
我能想象的最好的缩短代码的方法是一个函数:
请注意,也不需要将int转换为字符串。print函数隐式地执行此操作
您的代码是使用循环的教科书案例。每当您发现自己在编写充满命令的重复代码时,每次只更改一些小细节,看看是否可以使用循环:
输出:
相关问题 更多 >
编程相关推荐