【问题标题】:Issues with Loops and Conditional Statements in Python 3 [duplicate]Python 3 中的循环和条件语句问题 [重复]
【发布时间】:2014-12-07 23:08:31
【问题描述】:

我是一个刚入门的程序员,我正在尝试为大学教授创建一个成绩簿程序,以便他可以输入他的期中和期末考试成绩,并获得每个学生每门课程的平均成绩和字母成绩.该程序应该获取课程编号、课程级别、考试数量和学生信息(ID 和考试分数)的输入。

起初我想创建一个以 ID 为键,平均值为值的字典,但后来似乎不起作用,所以我开始尝试创建带条件的 while 循环。

基本上代码是一团糟,我不确定我做错了什么。我已经在网上观看了教程并阅读了很多东西,但我正在为此碰壁。一方面,我在第 22 行使用 elif 语句不断收到 Invalid Syntax 错误。任何人都可以为此提供任何帮助,我们将不胜感激!对于我在这里遗漏的任何内容提前道歉 - 我对这一切都很陌生。

谢谢!

print("Hello! Welcome to your Grading Program!\n")
courseCode = input("Please enter the course code : ")
courseLevel = input("Please enter the course level : ")
numberExams = float(input("Please enter the number of exams : "))
enterStudents = input("Would you like to input a student, Yes or No? : ")

student = 0

while enterStudents == "Yes" or "yes" or "y" or "Y" :
    if courseLevel == "undergrad" or "Undergrad" or "undergraduate" or "u" or "U":
        for student in range(int(numberExams)):
            ID = input("Please enter student ID: ")
            midterm = int(float(input("Please enter midterm score: ")))
            finalExam = int(float(input("Please enter final exam score: ")))
            undAverage = (midterm * .60) + (finalExam * .40)
    elif courseLevel == "grad" or "Grad" or "Graduate" or "g" or "G":
        for student in range(int(numberExams)):
            ID = input("Please enter student ID: ")
            midterm = int(float(input("Please enter midterm score: ")))
            finalExam = int(float(input("Please enter final exam score: ")))
            undAverage = (midterm * .30) + (finalExam * .70)               
elif enterStudents == "No" or "no" or "n" or "N" :
    print("\nSee you next time!")
else:
    enterStudents == "" :
        input("Invalid Entry! Would you like to input a student, Yes or No?:")

def Grade():
    for letter in Grade:
        total = 100
    for letter in Grade(A,B,C,D,E,F):
        if undGrade == "A":
                    undAverage >= range(85,101)
        elif undGrade == "B":
                    undAverage >= range(70,85)
        elif undGrade == "C":
                    undAverage >= range(55,70)
        elif undGrade == "D":
                    undAverage >= range(40,55)
        elif undGrade == "F":
                    undAverage >= range(0,40)
    print(Grade)

【问题讨论】:

  • 问题出在while循环之后的elif中

标签: python loops python-3.x while-loop conditional-statements


【解决方案1】:

您的 or 陈述应该是“完整的”。

elif courseLevel == "grad" or "Grad" or "Graduate" or "g" or "G":

需要成为:

elif courseLevel == "grad" or courseLevel == "Grad" or courseLevel == "Graduate" or courseLevel == "g" or courseLevel == "G":

更简单的做法是:

elif courseLevel.lower() in ['grad', 'graduate', 'g']:

.lower(): 忽略区分大小写的单词

in []: 在列表/数组中查找项目

此外(归功于@Ashwini),while-elif 组合不存在。

【讨论】:

  • 主要问题是 while-elif 条件,OP 的代码甚至没有首先编译。
  • 我会改变这一点——我知道必须有更好的方法来做到这一点。谢谢!
  • @AshwiniChaudhary -- 是的,我无法让它循环遍历每门课程正确输入的测试数量。它似乎只是无限循环,让我无休止地输入学生和成绩。我不理解那里的结构或其他东西。
  • 啊,确实还有其他问题。而 elif 确实无效。
猜你喜欢
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
  • 2014-02-14
  • 2017-03-10
相关资源
最近更新 更多