[英]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.