def newRecord(record):
    record= {'name' : 'test'}
    students = int(input('How many students are in your class? '))
    tests = int(input('How many tests have you given? '))
    for name in range(students):
        record ['name'] = input('Please enter students name: ')
        for test in range(tests):
            record ['test'] = input('Please enter test score: ')
    print (record)

Например, в зависимости от пользовательского ввода я пытаюсь распечатать запись, как показано ниже, а также пытаюсь получить все значения для теста, которые будут сохранены под указанными именами.

{'name' : ' sam', 'test':  '99','98','78'}
{'name' : 'john', 'test':  '92','68','70'}

Или

{'sam': '99','98','78'}
{'john':'92','68','70'}
0
Milky 8 Дек 2016 в 10:25

3 ответа

Используйте list, как подразумевают ваши теги:

record['test'] = []
for test in range(tests):
    score = input('Please enter test score: ')
    record['test'].append(score)
0
georgexsh 8 Дек 2016 в 07:33

Вы должны хранить список в качестве значений для каждого из ключевых элементов словаря, где будут находиться ключи имена учеников и list будут содержать результаты тестов. Смотрите пример ниже.

record= {}
students = int(input('How many students are in your class? '))
tests = int(input('How many tests have you given? '))
for name in range(students):
    name = input('Please enter students name: ')
    testScores = []
    for test in range(tests):
        testScores.append(input('Please enter test score: '))
    record[name] = testScores
print (record)

Это выводит:

How many students are in your class? 2
How many tests have you given? 3
Please enter students name: Alex
Please enter test score: 80
Please enter test score: 75
Please enter test score: 95
Please enter students name: Mac
Please enter test score: 90
Please enter test score: 88
Please enter test score: 79
{'Alex': ['80', '75', '95'], 'Mac': ['90', '88', '79']}
0
Wasi Ahmad 8 Дек 2016 в 07:38

Вы можете продолжать использовать словарь, если хотите:

def newRecord():
    record = {}
    students = int(input('How many students are in your class? '))
    for name in range(students):
        name = input('Please enter students name: ')
        test = input('Please enter test score: ')
        record[name] = test
    print(record)

Это войдет:

How many students are in your class? 3
Please enter students name: john
Please enter test score: 12
Please enter students name: mike
Please enter test score: 33, 45, 66
Please enter students name: otherjohn
Please enter test score: 9
{'john': '12', 'otherjohn': '9', 'mike': '33, 45, 66'}

Или вы можете сделать это на месте с помощью:

for name in range(students):
    record[input('Please enter students name: ')] = input('Please enter test score: ')
print (record)

Это сначала попросит вас набрать баллы, а затем и название.

0
Alex C. 8 Дек 2016 в 07:51