2015-11-06 5 views
-4

a. Прочтите файл и сообщите оценку для каждого учащегося. Оценка - это сумма оценок по каждому вопросу. Столбцы разделены табуляцией. Вам нужно будет использовать функцию float(), чтобы преобразовать строку в float. Вы также можете использовать функцию sum(), которая принимает в качестве входного списка список и возвращает сумму его элементов.Python Floats/Sum функции

ОРИГИНАЛ FILE:

%%file midterm-grades.txt 
1.1 1.2 1.3 1.4 1.5 2.1 2.2 2.3 3.1 3.2 3.3 3.4 3.5 3.6 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5.1 5.2 5.3 5.4a 5.4b 5.5 5.6 
=========================================================================================================================== 
1 1 1 1 1 3 3 4 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 2 2 2 2 2 
=========================================================================================================================== 
0 0.5 0.5 1 1 3 2 3 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 1.5 2 0 1.5 1.5 1.5 
0 0.5 1 1 1 3 3 4.5 1.5 1.5 1.5 1.5 0.5 1.5 0 0 0 0 0 0 0 0 2 2 1.5 1.5 2 2 2 
0 0.7 0.5 1 1 3 0 0 1.5 1.5 1 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 2 2 2 2 1 2 2 
1 0.5 0.8 1 1 3 0 0 1.5 1.5 1.3 1.5 1.5 0.7 1.5 1.5 1.5 1.5 0 1.5 1.5 1.5 2 1.5 2 0 2 2 2 
1 1 1 1 1 1.5 2 2 1.5 1.5 1 1.5 1.5 0.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 1.5 1.5 2 2 1 
1 0.7 0.5 0 0 2.5 0 0 1.5 1.5 1.5 1.5 0 0.5 1.5 1.5 1.5 0.5 0.5 0 0.5 0.5 2 2 2 0 0 0 0 
1 1 1 1 1 3 0 0 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 0.5 1.5 2 2 2 0 2 1.5 0 
1 0.7 0.8 1 1 3 3 3 1.5 1.5 1 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 2 2 1.5 1.5 0 0 0 
1 1 1 1 1 3 3 4 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 2 2 1.5 1.5 0 1 0 
1 1 1 1 1 2.5 3 4 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 0 1.5 1.5 1.5 2 2 2 2 2 2 2 
1 1 1 1 1 2 3 4.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 0.5 1.5 1.5 0.5 1.5 2 2 1.5 2 2 2 2 
1 0.5 1 1 1 3 2.5 4 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 1.5 1.5 2 2 2 
1 0.7 0.8 1 1 1.5 3 5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 2 1.5 1 2 2 
1 1 1 1 1 3 3 3 1.5 1.5 1 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 1.5 0 1 0 0 
1 1 1 1 1 3 3 5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 2 2 2 2 2 
1 0.7 0.5 1 1 1.5 1 0.5 1.5 1.5 1.5 1.5 1.5 0 1.5 1.5 1.5 1.5 1.5 1.5 0.5 1.5 2 2 1.5 2 0 0 0 
1 0.7 0.8 1 1 0 1 0.5 0 1.5 1 1.5 0 0.5 1.5 1.5 1.5 1.5 1.5 0 0.5 1.5 2 2 1.5 0 0 0 0 
1 0.7 0.8 1 1 1.5 0 0.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 2 2 2 0 2 2 2 
1 0.7 0.8 0.5 1 3 3 4 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 2 0 2 2 1.5 
1 1 1 1 1 3 3 5 1.5 1.5 1.5 1.5 1.5 0.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 2 2 2 2 2 2 2 
1 1 1 1 1 3 3 5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 0.5 1.5 1.5 1.5 2 2 1.5 1.5 2 2 2 
1 1 1 1 1 3 3 5 1.5 1.5 1.5 1.5 1.5 0.5 1.5 1.5 0.5 1.5 1.5 1.5 1.5 1.5 2 2 2 2 1 1 2 
1 1 1 1 1 3 2 3 1.5 1.5 1 1.5 1.5 1 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 2 2 1.5 0 2 0 2 
1 1 1 1 1 3 3 5 1.5 1.5 1 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.3 1.5 2 2 2 2 2 1 2 
1 1 1 0.5 0.5 2.5 0 0 1.5 1.5 1.5 1.3 0 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 1.5 0 1 2 0 
1 1 1 1 1 3 0 0 1.5 1.5 1 1.5 0 1.5 1.5 1.5 1.5 0.5 1.5 1.5 1.5 1.5 2 2 1.5 0 2 2 0 
1 0.5 0.8 1 1 3 0 0 1.5 1.5 1 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 1 1.5 2 2 2 0 2 2 2 
1 1 1 1 1 3 3 5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 1 1.5 2 2 2 0 1 2 2 
1 0.7 1 1 1 3 2 4 1.5 1.5 1 1.5 1.5 1 1.5 1.5 1.5 1.5 1 1.5 0.5 1.5 2 2 2 0 2 2 2 
1 0.5 1 1 1 3 2 3 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 1.5 1 2 2 2 
1 0.7 1 1 1 2.5 3 3 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 0.5 1.5 2 2 1.5 0 2 2 1.5 
1 0.7 0.8 1 1 3 2 2 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 1.5 1.5 2 2 1 0 2 2 2 
1 1 1 1 1 3 3 4 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 1.5 1.5 2 2 2 
1 0.5 0.3 1 1 1.5 3 3.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 1.5 0 1 1 1 
1 0.8 1 0 0 0 0 0 1.5 1.5 1 1.5 1.5 0 1.5 1.5 1.5 1.5 1.5 1.5 0.5 1.5 2 2 1.5 1.5 2 2 1.5 
1 0.5 0.8 1 1 3 1 1.5 1.5 1.5 1 1.5 1.5 1.5 1.5 1.5 1.5 0.5 1.5 1.5 1.5 1.5 2 2 2 2 2 2 2 
1 0.3 0.8 1 1 1.5 3 3 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1 1.5 1 1.5 2 2 1.5 1.5 2 2 2 
1 1 1 1 1 3 2 2 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 2 2 2 2 2 2 2 

И это мой код:

# Read file 
midterm = open("midterm-grades.txt", "r") 
# Report grade for each student 
midterm_content = midterm.read() 
indiv = midterm_content.split("\n") 
# Get rid of Headers 
students = indiv[4:] 
for i in students : 
    withouttabs = i.split("\t") 
    print "Student grade is ", sum(float(withouttabs)) 

не могу понять, как плавать класс, так что я могу сделать функцию суммы, или почти полностью утрачена в этом точка.

+0

Предположительно вы получаете 'TypeError: поплавок() аргумент должен быть строкой или number', в этом случае [mcve], который вы должны были разместить, является 'float ([])' - вам нужно преобразовать каждое число в список * отдельно *. – jonrsharpe

+0

Можете ли вы предоставить несколько строк своего файла? – Kasramvd

+0

Привет, Джон, спасибо, что вернулись ко мне! В исходном наборе данных есть много цифр - есть ли более быстрый способ сделать это? –

ответ

0

Как уже упоминалось, вы не можете плавать() в списке строк. Просто итерацию по списку отдельных строк, и поплавок() их по одному за раз, как показано ниже:

midterm = open("midterm-grades.txt", "r") 
# Report grade for each student 
midterm_content = midterm.read() 
indiv = midterm_content.split("\n") 
# Get rid of Headers 
students = indiv[4:] 
for i in students : 
    withouttabs = i.split("\t") 
    total = 0 ## initialize total for each student 
    for j in withouttabs: ## now, iterate over each list of strings 
     total = total + float(j) 
    print "Student grade is ", total ## finally, print the total 
+0

Спасибо, я все еще получаю это от этого. Это лучше? – gariepy

+0

Определенное улучшение, спасибо – jonrsharpe

+0

Спасибо вам столько! Я все еще пытаюсь понять всю терминологию Python, поэтому приношу извинения за любую путаницу с моей стороны. –

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