2016-10-16 4 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 += "Course: {} Weight: {} hours Grade: {}\n".format(course_code, course_hours, course_grade" 
#ELSE END LOOP 
... 

出力文字列にそれぞれの新しい行を追加し、出力文字列output_string

を使用します各パスからのデータをループに挿入するための書式設定。

プログラムの最後に、出力文字列を出力します。

他の人も指摘しているように、これはデータを格納する方法としては非常に愚かです。印刷する以外はアクセスするのが難しいためです。リストや辞書の方がはるかに良いでしょう。

+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)を使用するか、上記のように1つずつ印刷することです。

+0

ありがとう、ありがとう。私はそれを理解していますが、問題は学校の練習問題であり、リスト/配列/辞書を使用することはできません。 –

+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) + "%") 
関連する問題