Python 循环和保存多个输入

Python 循环和保存多个输入,python,Python,我试图通过一组输入循环,其中我要求用户提供课程成绩、课程时数和课程代码。循环不断重复,直到用户输入“完成”。一旦用户输入了done,我希望它打印出输入的课程以及成绩和学时 例如: course_count = False #LOOP through Inputs while not course_count: #GET course code course_code = input( "Please Enter the Course Code (or done if fini

我试图通过一组输入循环,其中我要求用户提供课程成绩、课程时数和课程代码。循环不断重复,直到用户输入“完成”。一旦用户输入了done,我希望它打印出输入的课程以及成绩和学时

例如:

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%

这是一个学校实践问题,不允许使用列表、数组或字典(如果有意义的话)

请查看是否可以将此简化示例与代码关联起来。要获得您描述的输出,您需要以某种方式存储输出文本,并在以后访问它:

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)
从注释中,仅使用字符串“累加”(警告:二次坏):


请注意,构建长字符串的首选方法是附加到列表并使用“分隔符”。加入(字符串列表)或如上所述逐个打印。

您可能会发现将信息保存在
字典
结构中非常有用,其中密钥存储为课程代码。然后,只需迭代字典中保存的每门课程即可获得详细信息

示例:

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

使用输出字符串
output\u字符串

将每一新行添加到输出字符串中

...
output_string += "Course: {} Weight: {} hours Grade: {}\n".format(course_code, course_hours, course_grade"
#ELSE END LOOP
...
这将信息累积到一个字符串中,使用标准字符串格式插入循环中每次传递的数据

在程序结束时,打印输出字符串


正如其他人所指出的,这是一种非常愚蠢的数据存储方式,因为除了打印外,访问数据将非常困难。列表/字典会更好

打印前添加一个选项卡?@tim,它不会给出他想要创建的格式化输出,其中提供了运行时插入的信息的摘要。嘿,YXD,谢谢:)。我确实理解这一点,但问题是这是学校的实践问题,不允许使用列表/数组/字典,只有字符串累加(如果有意义的话)?在我看来,这是一个非常愚蠢的要求,但你可以在循环中打印,这意味着你的输出看起来会有点不同(试试看),或者在循环外声明变量并附加到它。就性能而言,这是相当糟糕的——请参阅和其他内容。我完全同意。显然有很多比这更简单的方法。我现在就试试。谢谢。效果很好。再次感谢我的朋友。我比你知道的还要感激,这很有效!非常感谢你,我花了这么多时间在这上面,哈哈。我真的很感激
...
output_string += "Course: {} Weight: {} hours Grade: {}\n".format(course_code, course_hours, course_grade"
#ELSE END LOOP
...