首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPA计算器+故障测试

GPA计算器+故障测试
EN

Stack Overflow用户
提问于 2022-11-18 20:15:35
回答 1查看 28关注 0票数 -1

当有两个需要输出时,我的代码只输入一个print命令。我知道这个问题很简单,但是我需要一个新的视角--这里是我的代码:

代码语言:javascript
复制
name = input("What is your name? \n")
h1 = ("Class Name")
h2 = ("Class Grade")
h3 = ("Credit Hours")
point = input("\nEnter your class name followed by your letter grade and hours (say Done to stop input):\n")
class_data = []
while point != "Done":
    words = point.split(" ")
    if len(words) == 1:
        print("Error: No spaces in string. Try again.")
    elif len(words) > 4:
        print("Error: Too many spaces in input. Try again. ")
    else:
        try:
            class_name = words[0]
            grades = (words[1])
            hrs = int(words[2])
            print("Name of class:", class_name)
            print("Grade:", grades)
            print("Class Hours:", hrs)
            class_data.append((class_name, grades, hrs,))
        except ValueError:
            print("Error: Space not followed by an integer.")
    point = input("\nEnter your class name followed by your letter grade and hours (say Done to stop input):\n")

    def gpa_calculator(grades):
        points = 0
        i = 0
        grade_c = {"A":4,"A-":3.67,"B+":3.33,"B":3.0,"B-":2.67, "C+":2.33,"C":2.0,"C-":1.67,"D+":1.33,"D":1.0,"F":0}
        if grades != class_data:
            for grade in grades:
                points += grade_c[item[1]]
            gpa = points / len(class_data)
            return gpa
        else:
            return None 

print("Name: ", name)
print("-" * 66)
print("%-17s|%13s|%7s|" % (h1, h2, h3))
print("-" * 66)
for item in class_data:
    print("%-17s|%13s|%12s|" % (item[0], item[1], item[2]))
print("-" * 66)
print('Your projected GPA is: ',(gpa_calculator(grades)))
print("-" * 66)
if item[0] == "Computer-Science" and item[1] == "D":
    print ("failing CS")
if item[0] == "Programming" and item[1] == "D":
    print ("failing programming")

我需要帮助的是最后四行输出:

代码语言:javascript
复制
What is your name? 
Nich

Enter your class name followed by your letter grade and hours (say Done to stop input):
Programming D 10
Name of class: Programming
Grade: D
Class Hours: 10

Enter your class name followed by your letter grade and hours (say Done to stop input):
Computer-Science D 10
Name of class: Computer-Science
Grade: D
Class Hours: 10

Enter your class name followed by your letter grade and hours (say Done to stop input):
Done
Name:  Nich
------------------------------------------------------------------
Class Name     |Class Grade|Credit Hours|
------------------------------------------------------------------
Programming    |          D|          10|
Computer-Science|          D|          10|
------------------------------------------------------------------
Your projected GPA is:  0.5
------------------------------------------------------------------
failing CS

我尝试过eliftrue命令--这是我最接近于解决这个问题的命令。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-18 20:28:35

你需要另一个循环,就像你用来打印分数表的那个。

代码语言:javascript
复制
for item in class_data:
    if item[1] in ("D", "F"):
        print(f"failing {item[0]}")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74494900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档