2014-11-25 94 views
0
fgrades=["90","70","63","81","49"] 
a=0 
b=0  
c=0  
d=0  
f=0  
grades=raw_input("enter your final grade: ")  
fgrade+=(grades,) 

for i in range(len(fgrades)): 
    if fgrades[i]>="90": 
     a+=1   
    elif fgrades[i]>="80": 
     b+=1   
    elif fgrades[i]>="70": 
     c+=1   
    elif fgrades[i]>="60": 
     d+=1   
    else: 
     f+=1 

print a,"\n",b,"\n",c,"\n",d,"\n",f 

當我把所有的數字中的所有東西都交給F.這發生,即使你把96作爲輸入。如何使這個IF語句工作

+1

您的輸入是什麼?另外,'fgrade + =(grades,)'這行應該使用一個存在的變量,如果你正在添加它的話。你的意思是'fgrades'? – Andy 2014-11-25 03:24:01

+0

即時通訊編寫一個程序,要求用戶輸入一個號碼,因爲你看到那裏,該號碼應該恢復在列表中,然後我需要檢查該號碼是一個A或B或C或D或F – noel 2014-11-25 03:28:10

+0

讓我重述一下我的問題:當您在調試時看到提示時,您輸入了什麼答案?我們需要能夠複製您的輸入。 – Andy 2014-11-25 03:29:20

回答

2

我在這裏可以看到的一個問題是,您嘗試對字符串執行不等式,而不是數字。嘗試將輸入值轉換爲整數。

如果存儲在fgrades爲整數,例如值[90,70,60,88,96]那麼這應該工作:

fgrades=[90, 70, 60, 88, 96] 

a=0 

b=0 

c=0 

d=0 

f=0 

grades=raw_input("enter your final grade: ") 

# Clean up grades, and convert to an integer 
grades = int(grades.strip().replace(" ","") 

fgrades.append(grades) 

for i in range(len(fgrades)): 

    if fgrades[i]>=90: 
     a+=1   
    elif fgrades[i]>=80: 
     b+=1   
    elif fgrades[i]>=70: 
     c+=1   
    elif fgrades[i]>=60: 
     d+=1   
    else: 
     f+=1 

print a,"\n",b,"\n",c,"\n",d,"\n",f 

否則,如果由於某種原因需要等級是存儲爲字符串,如[ 「90」, 「70」, 「63」, 「81」, 「49」],那麼下面應該爲你工作:

fgrades= ["90","70","63","81","49"] 

a=0 

b=0 

c=0 

d=0 

f=0 

grades=raw_input("enter your final grade: ") 

# Clean up grades 
grades = grades.strip().replace(" ","") 

fgrades.append(grades) 

for i in range(len(fgrades)): 

    if int(fgrades[i])>=90: 
     a+=1   
    elif int(fgrades[i])>=80: 
     b+=1   
    elif int(fgrades[i])>=70: 
     c+=1   
    elif int(fgrades[i])>=60: 
     d+=1   
    else: 
     f+=1 

print a,"\n",b,"\n",c,"\n",d,"\n",f 
0

首先,你要做數字大於或等於對字符串的操作。如果您要比較數字,則必須將它們轉換爲數字數據類型(int,float,decimal)。

其次,Andy的評論也是一樣。 fgrade不作爲變量/對象存在。

fgrades=[] 
a=0 
b=0  
c=0  
d=0  
f=0  
grades=int(raw_input("enter your final grade: ")) 
fgrades += (grades,) 

for i in range(len(fgrades)): 
    if fgrades[i]>=90: 
     a+=1   
    elif fgrades[i]>=80: 
     b+=1   
    elif fgrades[i]>=70: 
     c+=1   
    elif fgrades[i]>=60: 
     d+=1   
    else: 
     f+=1 

print a,"\n",b,"\n",c,"\n",d,"\n",f 
1

這裏有一些建議,你可能會考慮做你的代碼。

首先你可以從

for i in range(len(fgrades)): 
    ... 

for i in fgrades: 
    .... 

等隨後,您將只需要做比較的循環語句改變你的重視i代替fgrades[i]

所以您的密碼將爲

fgrades=[] 
a=0 
b=0 
c=0 
d=0 
f=0 

grades=raw_input("enter your final grade: ") 

# Clean up grades, and convert to an integer 
grades = int(grades.strip().replace(" ","") 

fgrade.append(grades) 

for i in fgrade: 

    if i>=90: 
     a+=1   
    elif i >=80: 
     b+=1   
    elif i >=70: 
     c+=1   
    elif i >=60: 
     d+=1   
    else: 
     f+=1 

print a,"\n",b,"\n",c,"\n",d,"\n",f 
+0

你有沒有在這裏粘貼錯誤的代碼...這是一樣的@ RonRon的,並沒有改變循環語句 – Stuart 2014-11-25 04:06:11

+0

謝謝斯圖爾特!忘了改變 – biobirdman 2014-11-25 04:09:18