Полностью завис на функциях ....
У меня есть файл .txt:
Bronson 90 85 75 76
Conor 90 90 90 90
Austyn 50 55 32 75
Mark 96 95 85 85
Anthony 85 85 85 85
И я пытаюсь взять этот код (ниже). И превратить его в функции для получения того же вывода:
with open(argv[1]) as f:
names = []
for line in f:
names.append(line.split()[0])
print('\nNames of students who have written tests:')
print(*sorted(names), sep=' ')
# prompt user to input which student you want to view
name = input('Enter name of student whose test results '
'you wish to see: ')
if name not in names:
print('\nNo test data found for ', name)
input("Press Enter to continue ...")
else:
name_print = "\nSummary of Test Results for " + name
# print test scores of the student selected
with open(argv[1]) as f:
for line in f:
parts = line.split()
if parts[0] == name:
print(name_print)
print('=' * ((len(name_print)) - 1))
test_scores = ' '.join(parts[1:])
print('Test scores: ', end=' ')
print(test_scores)
В настоящее время выводит:
Names of students who have written tests:
Anthony Austyn Bronson Conor Mark
Enter name of student whose test results you wish to see: Anthony
Summary of Test Results for Anthony
===================================
Test scores: 85 85 85 85
Number of tests written .................. 4
Я хочу, чтобы он работал на одном модуле main (), используя process_marks(f)
:
from functions import process_marks
def main():
try:
f = open(argv[1])
except FileNotFoundError:
print("\nFile ", argv[1], "is not available")
exit()
process_marks(f). #The program essentially runs in this function with help from helpers
f.close()
main()
Это то, что у меня сейчас есть:
def process_marks(f):
names = []
for line in f:
names.append(line.split()[0])
print('\nNames of students who have written tests:')
names = sorted(names)
print(*names, sep=' ')
name = input('Enter name of student whose test results '
'you wish to see: ')
check_name(name, names)
print_grades(name, line)
def check_name(name, names):
if name not in names:
print('\nNo test data found for ', name)
input("Press Enter to continue ...")
else:
name_print = "\nSummary of Test Results for " + name
print(name_print)
print('=' * ((len(name_print)) - 1))
def print_grades(name, line):
test_scores = ' '.join(line[1:])
print('Test scores: ', end=' ')
print(test_scores)
Это то, что выводится с использованием кода выше:
Names of students who have written tests:
Anthony Austyn Bronson Conor Mark
Enter name of student whose test results you wish to see: Mark
Summary of Test Results for Mark
================================
Test scores: n t h o n y 8 5 8 5 8 5 8 5
Я не хочу go далеко от текущего кода, который у меня есть (я хочу использовать списки et c, потому что id хотел бы в конечном итоге включать средние значения, max, min и c. Однако, я некоторое время размышлял над этим, имея очевидные проблемы с получением код для доступа к строке, соответствующей имени.