Почему не работает подсчет вхождения этого массива в python? - PullRequest
1 голос
/ 19 июня 2020
Grade = [""]*20
A=0
B=0
C=0
D=0
F=0

for index in range (20):
    Grade[index]=str(input("Input A, B, C, D or F: "))

print (Grade)

for index in range(20):
    if Grade[index]==A:
        A=A+1
    elif Grade[index]==B:
        B=B+1
    elif Grade[index]==C:
        C=C+1
    elif Grade[index]==D:
        D=D+1
    else:
        F=F+1

print(A, B, C, D, F)

Когда я ввожу значения, все они go до последней буквы, даже если я ввел диапазон входных данных.

enter image description here

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Замените

if Grade[index]==A:

на

if Grade[index]=="A":

et c.

Вы сравниваете оценку со значением переменной A, это число, поэтому оно никогда не бывает равным. Все ваши проверки терпят неудачу, пока не запустится else.

Я бы также изменил последний бит на:

elif Grade[index]=="F":
    F=F+1
else:
    print("Unknown grade " + Grade[index])

Это предупредит вас, если пользователь ввел недопустимый ввод вместо того, чтобы предполагать, что они ввел F. В этом случае это могло также помочь вам найти ошибку.

0 голосов
/ 19 июня 2020

Это происходит потому, что каждый раз else часть выполняется. Чтобы исправить это, вы должны сравнить Grade[index] == 'A', а не Grade[index] == A

. Правильный код будет:

Grade = [""]*20
A=0
B=0
C=0
D=0
F=0

for index in range (20):
    Grade[index]=str(input("Input A, B, C, D or F: "))

print (Grade)

for index in range(20):
    if Grade[index]=='A':
        A=A+1
    elif Grade[index]=='B':
        B=B+1
    elif Grade[index]=='C':
        C=C+1
    elif Grade[index]=='D':
        D=D+1
    else:
        F=F+1

print(A, B, C, D, F)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...