문제

나의 할당은 텍스트 파일에서 열리고 읽는 프로그램을 만드는 것입니다. 평균 가중치를 포함한 등급을 계산하고 최종 성적을 부여하고 문자 등급으로 변경 한 다음 새 텍스트 파일에 씁니다.모든 것은 포인트를 레터 등급으로 변환 할 때까지 잘 작동했습니다.모든 등급은 70-89 사이이므로, A, B 또는 E (F)에 다른 코드를 넣지 않았습니다.등급을 편지 등급으로 변환하려고 할 때마다 모든 사람의 학년을 C로 바꿉니다. 어디에서 잘못 갔습니까?

infile = open("c:\\Python34\\MyFiles\\ClassGradebook.txt","r")  
outfile = open("c:\\Python34\\myfiles\\ClassGrades.txt","w") 

aline = infile.readline()  # uses readline method to read the first line of the file

def quizsum():
        quizsum1 = quiz1 + quiz2 + quiz3
        quizavg = (quizsum1 / 30) * .3
        return float(quizavg)

def midtermsum():
        midtermsum1 = midterm1 + midterm2
        midtermavg = (midtermsum1 / 200) * .4
        return float(midtermavg)

def finalsum():
        finalsum1 = final1
        finalavg = (finalsum1 / 100) * .3
        return float(finalavg)
def lettergrade():
        if printedgrade >= 70 <= 79:
                return "C"
        else:
                return "B"       

while aline:
        items = aline.split()   
        dataline = items[0] + " " + items[1] 
        quiz1 = int(items[2])
        quiz2 = int(items[3])
        quiz3 = int(items[4])
        midterm1 = int(items[5])
        midterm2 = int(items[6])
        final1 = int(items[7])
        quizavg = quizsum()
        midtermavg = midtermsum()
        finalavg = finalsum()
        gradetotal = quizavg + midtermavg + finalavg
        printedgrade = gradetotal * 100
        printedgrade2 = lettergrade()
        print(dataline)
        print(printedgrade2)
        outfile.write(printedgrade2 + '\n')   newline character
        aline = infile.readline()   

infile.close()  
outfile.close()  
.

도움이 되었습니까?

해결책

if가 주문이 없으므로 항상 True를 평가하는 것이므로.그것은해야합니다 :

70 <= printedgrade <= 79

귀하의 진술은 모든 등급이 70-89이므로 printedgrade가 70 이상이고 70 이하가 79보다 작거나 70보다 작으므로 항상 평가됩니다.

모든 성적을 위해 코드를 강하게 제안 할 것이라는 것을 강력히 제안 할 것입니다.이 시간이 항상 그들이 항상 될 것이라는 일정한 범위에 있기 때문에 가정 할 수 없습니다.

다른 팁

if printedgrade >= 70 <= 79:
.

이어야합니다
if printedgrade >= 70 and printedgrade <= 79:
.

또한 다음과 같이 할 수 있습니다 :

if printedgrade >= 90:
    return "A"
elif printedgrade >= 80:
    return "B"
elif printedgrade >= 70:
    return "C"
...
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top