У меня проблемы с моей программой, и мои навыки программирования довольно элементарны. Что мне нужно сделать, так это взять введенный список от пользователя и расположить его по букве A (66–100), B (33–65), C (0–32). Я предполагаю, что мне нужно, чтобы введенный список был кортежем, но я не совсем уверен, как это сделать. Я знаю, что мне нужно (или могу) использовать elif для этого, но я не уверен, как сделать это диапазоном между двумя числами для B, поскольку C - это else, а A просто больше, чем. Это мой код:

def scores():
    print('we are starting')
    count = int(input('Enter amount of scores: '))
    print('Each will be entered one per line')
    scoreList = []
    for i in range(1, count+1):
            scoreList.append(int(input('Enter score: ')))
            print(scoreList)
    print(scoreList)
    if scoreList > 66:
        print('A')
    #elif scoreList > 33:
        #print('B')
    else:
        print ('C')
0
Jennga 22 Фев 2016 в 10:17
score не существует в вашем коде.
 – 
poke
22 Фев 2016 в 10:21
, спасибо, я забыл указать "Список" в переменной оценки.
 – 
Jennga
22 Фев 2016 в 10:24
Что ж, в этом случае: scoreList - это список чисел, а 6633) - просто число; вы не можете их сравнивать. Сначала вам нужно будет что-то сделать со своим списком или перебрать его и проверить каждое значение внутри.
 – 
poke
22 Фев 2016 в 10:28

2 ответа

Просто объедините свои условия, используя логические операторы (and, or, not), и прокрутите каждый элемент в списке:

def scores():
    print('we are starting')
    count = int(input('Enter amount of scores: '))
    print('Each will be entered one per line')
    scoreList = []
    for i in range(1, count+1):
            scoreList.append(int(input('Enter score: ')))
            print(scoreList)
    print(scoreList)
    for score in scoreList:
        if score >= 66:
            print('A')
        elif score >= 35 and score <=65:
            print('B')
        else:
            print('C')
0
Ben 22 Фев 2016 в 10:24

Возможное решение для if-структуры:

for score in scoreList:
    if 66 <= score <= 100:
        print('A')
    elif 33 <= score <= 65:
        print('B')
    elif 0 <= score <= 32:
        print('C')
    else:
        # handle out of range input

Таким образом, вы можете использовать else для обработки ввода, который не находится между 0 и 100.

0
pp_ 22 Фев 2016 в 10:51
if score >= 66 … elif score >= 33 … else … на самом деле то же самое, если предположить, что значение score находится между 0 и 100.
 – 
poke
22 Фев 2016 в 10:29
Ценность score исходит от пользователя, а люди все время совершают ошибки.
 – 
pp_
22 Фев 2016 в 10:32
Это правда, но если вы не добавите в свое решение какой-нибудь умный else, принятие значений за пределами диапазона будет лучшей идеей, чем молчаливая ошибка;)
 – 
poke
22 Фев 2016 в 10:33
Спасибо, добавлю это к своему ответу.
 – 
pp_
22 Фев 2016 в 10:34