3

ここでは、特定のコーディングの問題ではなく、ifステートメントを使用せずに特定の変数出力を生成する方法についての質問をしています。

ここで明確にするために、例を示します。スミス氏は、5-A、4-B、3-C、2-D、1-E、0-Fのスケールで評価される5つのポイントクイズを出題しています。クイズのスコア(1〜5)を入力として受け入れ、ifステートメントを使用せずに対応する成績を出力するプログラムを作成します。

うまくいけば、それが私のジレンマをより明確にするでしょう。ifステートメントを使用せずに、成績(AF)を対応するクイズスコア(1〜5)に関連付ける方法を探しています。私はまだPythonにかなり慣れていないので、遅い学習者と呼んでもかまいませんが、助けていただければ幸いです。

4

3 に答える 3

6

最も簡単で柔軟な方法は、辞書を使用することです。

>>> score_grade_mapping = {6: 'A+', 5: 'A', 4: 'B', 3: 'C', 2: 'D', 1: 'E', 0: 'F'}
>>> score_grade_mapping[4]
'B'
>>> score_grade_mapping[6]
'A+'

これは、ゼロから始まり、個々の文字にマッピングされる一連の数字ですが、文字列のインデックスを使用すると、文字列を使用してこれをより効率的に行うことができます(それほど明白ではありませんが)。

>>> score_grade_mapping = 'FEDCBA'
>>> score_grade_mapping[4]
'B'

複数の文字が必要であるが、それでもゼロ以降の一連のスコアが必要な場合は、リスト(可変)またはタプル(不変、したがって変更しない場合はより効率的)をインデックス付けで使用できます。

>>> score_grade_mapping = 'F', 'E', 'D', 'C', 'B', 'A', 'A+'
>>> score_grade_mapping[4]
'B'
>>> score_grade_mapping[6]
'A+'
于 2012-05-23T06:49:27.047 に答える
3

あなたが使用することができます:

'FEDCBA'[score]

これscoreは、文字列内の位置にある文字を取得することによって機能します'FEDCBA'F位置0Eある、位置1にあるなど。

例えば:

In [1]: 'FEDCBA'[0]
Out[1]: 'F'

In [2]: 'FEDCBA'[5]
Out[2]: 'A'
于 2012-05-23T06:41:39.717 に答える
2

辞書を使用する:

dic={5:'A',4:'B',3:'C',2:'D',1:'E',0:'F'}
score=int(input())
grade=dic.get(score,'invalid input')
print(grade)
于 2012-05-23T06:48:35.627 に答える