2016-05-27 24 views
-1

"クイズ"(0-5)で受け取ったポイントをユーザーにプロンプ​​トするプログラムを作成する必要があります。次に、5 = A、4 = B、3 = Cなどのスケールに基づいて等級を返します。グレードを数値に割り当てると、Cannot assign to literalと表示されます。リテラルPythonエラーに割り当てることができません

grade = eval(input("How many points did you receive? ")) 

grade = str(A, B, C, D, F) 

1, 0 = F 
2 = D 
3 = C 
4 = B 
5 = A 


print("The grade you received was a(n)", str(grade),".") 
+3

あいまいな説明ではなく[mcve]を付けてください。 – jonrsharpe

+0

コードと完全なエラートレースを表示できますか?それは何が起こっているのか把握するのに役立ちます。 –

+0

それは私に写真をアップロードさせてはいけません。もし私がコードを貼り付けると面白く見えます。ありがとう!! –

答えて

1

エラーは整数に値を代入しようとしたために発生します。整数自体はリテラルであり、単なる値です。変数のように割り当てることはできません。 this答えとして

は言う:

=演算子の左辺は変数である必要があります。あなたがここでやっていることは、Pythonに "あなたは1番目のことを知っていますか?入力された文字列に設定します。" 1は変数ではなく、リテラル番号です。 1は常に1ですが、それを他のものに「設定」することはできません。

このため、pythonは「私は1が何であるかを変更することはできません」と言っています。


これをリファクタリングするには、変数に入力を割り当ててから、変数の値を調べます。これを行うには2つの方法があります。

  • スタック(理由は簡潔さと持続可能性のより良いプラクティスと考え、)

    1. 辞書であれば辞書文

    :ちょうど

    score = str(input("Enter the grade: ")) 
    
    grades = {0: 'F', 
          1: 'F', 
          2: 'D', 
          3: 'C', 
          4: 'B', 
          5: 'A'} 
    
    print(grades[score]) 
    

    それをそのスコアに関連付けられた文字等級を辞書に印刷する。 if年代で

    score = str(input("Enter the grade: ")) 
    
    if score == 0 or score == 1: 
        print('F') 
    
    elif score == 2: 
        print('D') 
    
    elif score == 3: 
        print('C') 
    
    elif scoe == 4: 
        print('B') 
    
    else: 
        print('A') 
    

    これが機能する方法は非常に明確です。しかし、私はそれを使用することをお勧めしませんが、それはひどく書き込みが面倒で他のものよりも長いためです。

  • 0

    直接ではなく5 = Aなどを設定しようとすると、あなたは、文字列の文字の等級に各数値、文字列に関する辞書を使用することができます。これはあなたの質問に直接答えるものではありませんが、これは数字を等価なものと関連付けるための最良の方法でしょう。

    def score(): 
        score_dict = {'0' : 'F', '1' : 'F', '2' : 'D', '3' : 'C', '4' : 'B', '5' : 'A'} 
        score = input('Enter a score:') 
        if score in score_dict.keys(): 
         print("The grade you received was a(n) ",score_dict[score],".") 
        else: 
         print("Invalid score.") 
    

    編集:コードで質問を更新したので、これが必要なのかどうかはわかりません。これは実用的な解決策ですが、あなたの持つものとまったく同じように動作しません。あなたの質問に対する解決策ではなく、実用的な解決策が必要な場合に備えて、私はここに残しておきます。

    +0

    これは問題を解決しますが、将来彼らを助けたり、将来これを見る人を助けたりしません。単に説明なしで動作するコードを与えるだけでは、最終的に役に立たないのです。 –

    +0

    @XamuelSchulmanこのソリューションを削除する必要がありますか?コードを組み込む前に投稿しましたので、状況の下でできることは最高でした。私は辞書が文字に数字を割り当てる唯一の方法だと信じていますが、私は間違っている可能性があります。 –

    +0

    質問に答えるために編集します。どちらにしても。 –

    関連する問題