2016-10-16 2 views
1

Я пытаюсь выполнить цикл ввода, в котором я прошу указать курс обучения, курс и курс курса. Цикл продолжает повторяться до тех пор, пока пользователь не войдет в «сделанный». После ввода пользователя я хочу, чтобы он распечатывал введенные курсы со степенью и часами.Зацикливание и сохранение нескольких входов

Для примера:

course_count = False 

#LOOP through Inputs 
while not course_count: 

    #GET course code 
    course_code = input("Please Enter the Course Code (or done if finished): ") 

    #IF course code is not equal to done (convert to lowercase) 
    if course_code.lower() != "done": 

     #GET course hours 
     course_hours = int(input("How many credit hours was " + course_code + "? ")) 

     #GET grade earned 
     course_grade = float(input("What grade did you earn in " + course_code + "? ")) 

    #ELSE END LOOP 
    else: 
     course_count = True 

    print("Course: " + course_code + " Weight: " + str(course_hours) + " hours " + "Grade: " + str(course_grade) + "%") 

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

Выход Я ищу, чтобы сделать это:

# Please Enter the Course Code (or done if finished): COMP 10001 
# How many credit hours was COMP 10001? 5 
# What grade did you earn in COMP 10001? 75 

# Please Enter the Course Code (or done if finished): COMP 20002 
# How many credit hours was COMP 10001? 8 
# What grade did you earn in COMP 10001? 95 

# Please Enter the Course Code (or done if finished): done 

# Course: COMP 10001 Weight: 5 Grade: 75% 
# Course: COMP 20002 Weight: 8 Grade: 95% 

Это для проблемы школьной практики и не было разрешено использовать списки, массивы или словари, если это имеет смысл

+0

Добавить вкладку перед печатью? – tim

+0

@tim, который не дал бы форматированный результат, который он хочет создать, где есть сводка, предоставленная о том, какая информация вставляется во время выполнения. –

ответ

0

Используйте выходную строку output_string

Добавить каждую новую строку в выходной строки

... 
output_string += "Course: {} Weight: {} hours Grade: {}\n".format(course_code, course_hours, course_grade" 
#ELSE END LOOP 
... 

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

В конце программы напечатайте выходную строку.

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

+0

Это сработало! Большое вам спасибо, что я провел столько часов на этом ха-ха. Я действительно ценю это –

1

Смотрите, если вы можете связать этот упрощенный пример с вашим кодом. Для того, чтобы получить результат, вы можете описать, что вам нужно магазин вывод текста каким-то образом и доступа позже:

output_lines = [] 

for i in range(10): 
    input_string = input("Enter some input") 
    output_lines.append(input_string) 

for output_line in output_lines: 
    print(output_line) 

Из комментариев, используя только строку «накопление» (предупреждение: квадратично плохо):

output_text 

for i in range(10): 
    input_string = input("Enter some input") 
    output_text = output_text + '\n' + input_string 
print(output_text) 

Обратите внимание, что предпочтительным способом создания длинной строки является, чтобы добавить в список и использовать 'separator'.join(list_of_strings) или распечатать один за другим, как указано выше.

+0

Эй, YXD, Спасибо :). Я понимаю это, но проблема в том, что это касается проблемы школьной практики, и им не разрешалось использовать списки/массивы/словари и только накопление строк, если это имеет смысл? –

+0

Это довольно глупое требование IMO, но вы можете печатать в цикле, что означает, что ваш результат будет немного отличаться (попробуйте) или объявите переменную за пределы цикла и добавьте ее.Это довольно плохо с точки зрения производительности - см. Http://stackoverflow.com/a/1967732/553404 и другие. – YXD

+1

Я полностью согласен. Очевидно, есть много простых способов сделать это, чем это. Я сейчас попробую поблагодарить вас. –

1

Возможно, вам будет полезно сохранить информацию в структуре dictionary, где ключ хранится в виде кода курса. Тогда это так же просто, как итерация по каждому курсу, сохраненному в вашем словаре, чтобы получить детали.

Пример:

course_count = False 
course_info = {} 
#LOOP through Inputs 
while not course_count: 

    #GET course code 
    course_code = input("Please Enter the Course Code (or done if finished): ") 
    course_info[course_code] = {}; 

    #IF course code is not equal to done (convert to lowercase) 
    if course_code.lower() != "done": 

     #GET course hours 
     course_hours = int(input("How many credit hours was " + course_code + "? ")) 
     course_info[course_code]['hours'] = course_hours; 

     #GET grade earned 
     course_grade = float(input("What grade did you earn in " + course_code + "? ")) 
     course_info[course_code]['grade'] = course_grade 

    #ELSE END LOOP 
    else: 
     course_count = True 

For course_code in course_info : 
    course_hours = course_info[course_code]['hours'] 
    course_grade = course_info[course_code]['grade'] 
    print("Course: " + course_code + " Weight: " + str(course_hours) + " hours " + "Grade: " + str(course_grade) + "%") 
Смежные вопросы