2013-11-20 61 views
1

即時新的Python和我正在練習一些東西,但我似乎無法弄清楚爲什麼我的代碼中下面顯示的4個等級不會正確地除以4.例如,我將輸入所有等級爲2並顯示6.5作爲總平均分。用Python劃分

繼承人的代碼:

#FinalGrade 
Student = str(input("Student Name: ")) 
Grade1 = int(input("Enter Student's First Grade: ")) 
Grade2 = int(input("Enter Student's Second Grade: ")) 
Grade3 = int(input("Enter Student's Third Grade: ")) 
Grade4 = int(input("Enter Student's Fourth Grade: ")) 

print ("Total Grade Average: %G" % (Grade1+Grade2+Grade3+Grade4/4)) 

print ("%s has:" % (Student)) 

if Grade1+Grade2+Grade3+Grade4/4 < 40: 
print ("Failed!") 
if Grade1+Grade2+Grade3+Grade4/4 > 40: 
print ("Passed!") 

回答

3

變化

Grade1+Grade2+Grade3+Grade4/4 

(Grade1+Grade2+Grade3+Grade4)/4 

看到這裏的區別:

>>> 1 + 2 +3 +4/4 
7 
>>> (1+2+3+4)/4 
2 
>>> 

在第一種情況下,價值被評估爲

Grade1+Grade2+Grade3+(Grade4/4) 

你想要的是

(Grade1+Grade2+Grade3+Grade4)/4 

考慮提取它作爲一個局部變量。

#FinalGrade 
Student = str(input("Student Name: ")) 
Grade1 = int(input("Enter Student's First Grade: ")) 
Grade2 = int(input("Enter Student's Second Grade: ")) 
Grade3 = int(input("Enter Student's Third Grade: ")) 
Grade4 = int(input("Enter Student's Fourth Grade: ")) 

average = (Grade1+Grade2+Grade3+Grade4)/4 
print ("Total Grade Average: %G" % (average)) 

print ("%s has:" % (Student)) 

if average < 40: 
    print ("Failed!") 
if average > 40: 
    print ("Passed!") 

#what if average == 40 ? 

在同一行中輸入的一切,

passed_or_failed = "Passed" 
if average < 40: 
    passed_or_failed = 'Failed' 

print ("%s has: %s" % (Student, passed_or_failed)) 
+0

非常感謝你:)你知道如何讓「通過」/「失敗」出現在與'學生有'行同一行嗎? – Oscar

+0

是的..檢查編輯。 – karthikr

+0

對不起,應該看到了! – Oscar

1

由於order of operations,什麼實際被評價爲

Grade1 + Grade2 + Grade3 + (Grade4/4) 

爲了解決這個問題,使用括號周圍的等級或它們求和分別爲:

gradeAvg = (Grade1 + Grade2 + Grade3 + Grade4)/4 

gradeSum = Grade1 + Grade2 + Grade3 + Grade4 
gradeAvg = gradeSum/4 
+0

非常感謝,哇,我是愚蠢的錯過這個! – Oscar

1
if (Grade1+Grade2+Grade3+Grade4)/4 < 40: 
3

這不是python。您需要了解數學運算符的優先級規則。

您只將Grade4除以4,而不是等級總和。