[ad_1]
このタイプの (学生の) 入力を繰り返し受け取るプログラムを作成します: course_no、number_of_credits、および grade_received (例: CSE101 4 A)。 これらの入力は、学生がその学期に行ったコース用です。 入力が与えられていない場合 (つまり、単に返された場合)、それはコースが残っていないことを意味します。 このデータから、学生の学期の成績証明書を次のように印刷します。
Course_no: 学年
Course_no: 学年
…。
SGPA: n.nn (小数点以下第 2 位)
トランスクリプトでは、レコードは course_no でソートされるように出力する必要があります (ヒント: タプル/リストのリストをソートする場合、デフォルトのソートはタプル/リストの最初の要素で行われます)。
コース番号は、先頭が大文字で末尾が数字の英数字の文字列です (例: CSE101、CSSS21)。単位は 1、2、または 4 で、成績は A+ (10)、A(10)、A- です。 (9)、B(8)、B-(7)、C(6)、C-(5)、D(4)、F(2) (( )内の数字はSGPA計算に相当する数値です。) SGPA は (合計: credits*grade/ total_credits) として計算されます。 いずれかの入力が有効でない場合は、適切なメッセージ (「コース番号が正しくありません」、「単位が正しくありません」、または「成績が正しくありません」) を出力し、その入力を無視します。
私が試したこと:
while True: course_no=int(input("enter course number: ")) number_of_credits=int(input("enter number of credits: ")) grade_received=int(input("enter grade received: ")) l1=[] l1.append(course_no) l1.append(number_of_credits) l1.append(grade_received)
解決策 1
質問に示されているコース番号とグレードは、整数ではなく文字列です。 したがって、コードは次のようになります。
course_no = input("enter course number: ") number_of_credits = int(input("enter number of credits: ")) grade_received = input("enter grade received: ")
次に、正しい出力を生成するために、セットやマップなどの適切なコンテナーに詳細を記録する必要があります。 見る 5. データ構造 — Python 3.11.1 ドキュメント[^].
[edit]
修正しました grade_received
解決策 2 で CPallini (別名 Hawkeye) が指摘した項目。
[/edit]
解決策 2
入力データ型は次のとおりです。
course - string credits - integer grade_- string
入力を検証する必要があります:
course
大文字で始まり数字で終わる文字列でなければなりません。 その文字を反復するか、使用してチェックすることができますPython
パターンマッチング機能。- チェック中
credits
有効性は非常に単純です。1
、2
また4
. - にとって
grade
入力を検証することと、それを数値に変換することの両方が必要です (SGPA
)、単純な関数で両方のタスクを同時に満たすことができます。例:Pythondef grade_val(grade): d = { "A":10, "A+":10, "A-":9, "B":8, "B-":7, "C":6, "C-":5, "D":4, "F":2 } if grade in d: return d[grade] else: return -1 # this signals an invalid input
入力値を正しく処理したら、データを並べ替えて出力を生成する必要があります。 この方法で進めてみてください。行き詰まっている場合は、ここに具体的な質問を投稿してください。
[ad_2]
コメント