سؤال

مهمتي هي إنشاء برنامج يفتح ويقرأ من ملف نصي ، ويحسب الدرجات ، بما في ذلك متوسط الأوزان ، ويعطي درجة نهائية ، ويغيرها إلى درجة حرف ، ثم يكتبها في ملف نصي جديد.لقد عمل كل شيء بشكل جيد حتى تحويل النقاط إلى درجات الحروف.جميع الدرجات بين 70-89 ، لذلك أنا لم يكلف نفسه عناء وضع أي رمز آخر ل ، ب ، أو ه(و).كلما حاولت تحويل الدرجة إلى درجة حرف ، فإنه يغير درجة الجميع إلى درجة ج.أين ذهبت خطأ?

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 هو دائما تقييم صحيح لأنه خارج الترتيب.يجب أن يكون:

70 <= printedgrade <= 79

بيانكم هو دائما تقييم صحيح لأنه كما قلت جميع الدرجات هي 70-89 لذلك printedgrade سيكون أكبر من أو يساوي 70 و 70 أقل من 79 لذلك سيكون دائما True.

على الرغم من أنني أقترح بشدة جعل التعليمات البرمجية الخاصة بك تعمل لجميع الدرجات.لا يمكنك الافتراض لأن الدرجات هذه المرة في نطاق معين ستكون عليه دائما.

نصائح أخرى

giveacodicetagpre. يجب أن يكون

giveacodicetagpre.

يمكنك أيضا فعل شيء مثل:

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top