Зацикливание и сохранение нескольких входов

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

Например:

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%

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

python,

1

Ответов: 3


0 принят

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

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

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

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

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

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


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 ) + "%")

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 + '
' + input_string
print(output_text)

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

питон,
Похожие вопросы