簡體   English   中英

循環並保存多個輸入

[英]Looping and saving multiple inputs

我試圖通過一組輸入來詢問用戶的課程等級,課程時間和課程代碼。 循環不斷重復,直到用戶輸入“完成”為止。 用戶輸入完成后,我希望它打印出輸入的課程以及年級和學時。

例如:

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)

從注釋中,僅使用字符串“ accumulation”(警告:二次錯誤):

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)或如上所述逐一打印。

您可能會發現將信息保存在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 ) + "%")

使用輸出字符串output_string

將每行添加到輸出字符串

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

這會使用標准字符串格式將信息累積到一個字符串中,以插入每次循環中的數據。

在程序末尾,輸出輸出字符串。

正如其他人所指出的那樣,這是一種非常愚蠢的數據存儲方式,因為除打印輸出外,訪問數據非常困難。 列表/字典會更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM