2014-11-25 2 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

+0

im, пишу программу, в которой пользователь просит указать номер, как вы видите там, и этот номер должен быть восстановлен в списке, и после этого мне нужно проверить, является ли номер A или b или c или d или f – noel

+0

Позвольте мне перефразировать мой вопрос: когда вы видите приглашение во время отладки, что вы вводите в качестве ответа? Мы должны иметь возможность тиражировать ваши данные. – Andy

ответ

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), если вы сравниваете числа.

Во-вторых, комментарий Энди также является корневым. 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: 
    .... 

и так впоследствии, вам просто нужно сделать Comparision дорожить 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's, и не изменил оператор цикла – Stuart

+0

спасибо stuart! Забыл внести изменения – biobirdman

Смежные вопросы