【解決方法】文字列と整数の両方である入力を取得する方法がわかりません


このタイプの (学生の) 入力を繰り返し受け取るプログラムを作成します: 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) として計算されます。 いずれかの入力が有効でない場合は、適切なメッセージ (「コース番号が正しくありません」、「単位が正しくありません」、または「成績が正しくありません」) を出力し、その入力を無視します。

私が試したこと:

Python
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

質問に示されているコース番号とグレードは、整数ではなく文字列です。 したがって、コードは次のようになります。

Python
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 有効性は非常に単純です。 12 また 4.
  • にとって grade 入力を検証することと、それを数値に変換することの両方が必要です ( SGPA)、単純な関数で両方のタスクを同時に満たすことができます。例:
    Python
    def 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

入力値を正しく処理したら、データを並べ替えて出力を生成する必要があります。 この方法で進めてみてください。行き詰まっている場合は、ここに具体的な質問を投稿してください。

コメント

タイトルとURLをコピーしました