لماذا تطبع هذه نفس درجة الحرف لكل شيء?
-
02-01-2020 - |
سؤال
مهمتي هي إنشاء برنامج يفتح ويقرأ من ملف نصي ، ويحسب الدرجات ، بما في ذلك متوسط الأوزان ، ويعطي درجة نهائية ، ويغيرها إلى درجة حرف ، ثم يكتبها في ملف نصي جديد.لقد عمل كل شيء بشكل جيد حتى تحويل النقاط إلى درجات الحروف.جميع الدرجات بين 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.