25155


初めまして！学生でプログラミングを独学で勉強しようと思っているものですが、  
今回、プログラムのアイデアが浮かびコードを書いてみているのですが、どうにもエラーばかりでてきてしまいます。  
このプログラムの最終目標としては、高校の体力テストの結果を打ち込むだけで、スコアを計算してくれて、  
A~Eのグレードをつけてくれるようなプログラムを作りたいと思っています。  
まず最初に５０m走の記録の処理を行おうとしたのですが、最初からつまづいてしまいました。  
「ここをこうしたらいい」とか「これを使うともっと綺麗なコードになる」などありましたら、是非是非教えてください！  
また、今回のコードでは５０m走の処理が終わった後のスコアの蓄積をCという新たな変数を用いていますが、  
いちいち変数を使わなくてもスコアを蓄積させる方法はないのでしょうか？

コード：

[code]

    A = 0
    
    B = input('How long did it take to run 50m?')
    if (float(B) <= 6.6):
      int(A) + 10 = C
    elif (6.7 <= float(B) <= 6.8):
      int(A) + 9 = C
    elif (7.0 <= float(B) <= 6.9):
      int(A) + 8 = C
    elif (7.2 <= float(B) <= 7.1):
      int(A) + 7 = C
    elif (7.5 <= float(B) <= 7.3):
      int(A) + 6 = C
    elif (7.9 <= float(B) <= 7.6):
      int(A) + 5 = C
    elif (8.4 <= float(B) <= 8.0):
      int(A) + 4 = C
    elif (9.0 <= float(B) <= 8.5):
      int(A) + 3 = C
    elif (9.7 <= float(B) <= 9.1):
      int(A) + 2 = C
    elif (9.8 <= float(B)):
      int(A) + 1 = C
    
    print (C)
    
[/code]

エラー：

[code]

    File "HP.py", line 23
      int(A) + 1 = C
       ^
    SyntaxError: can't assign to operator
    
[/code]

[![体力テストのスコアとグレード](https://i.stack.imgur.com/9fCoQ.jpg)](https://i.stack.imgur.com/9fCoQ.jpg)


CC BY-SA 3.0
2016-05-25T03:00:13.473
25148
2016-05-25T05:59:45.900
15627
question
python
Can't assign to operatorと言うエラーが出てきて進めない。


変数`A`に蓄積するのであれば`A += 10`（１０がスコア）のように書けます。  
Aとスコアを足したものをCに蓄積するのであれば`C += A + 10` のように書けます。(C=0で初期化）  
エラーの原因は代入の方向が LEFT → RIGHTでなくLEFT ← RIGHTであるためです。（計算の結果にCを代入しようとしていると見なされる）


CC BY-SA 3.0
2016-05-25T03:16:46.173
25150
2016-05-25T03:16:46.173
5044
25148
answer


本題とは関係ありませんが、画像で添付されている得点表を見ますと、50m走の時間については小数点第2位以降を切り捨てている様です。つまり、範囲をチェックする条件式は以下の様になるのではないかと思います。

[code]

    if (float(B) < 6.7):
            :
    elif (6.7 <= float(B) < 6.9):
            :
    elif (6.9 <= float(B) < 7.1):
            :
    elif (7.1 <= float(B) < 7.3):
            :
    
[/code]

上記の仮定が正しいとして、Python を使うと以下の様にも書く事ができます。

[code]

    record_time = (9.8, 9.1, 8.5, 8.0, 7.6, 7.3, 7.1, 6.9, 6.7)
    
    B = input('How long did it take to run 50m? ')
    
    print "Score is %d" % \
          next((i + 1 for i, t in enumerate(record_time) if B >= t), 10)
    
[/code]

`next` や `enumerate`
など、何をしているのか現状では理解し難いかもしれませんが、それらを調べてみると後々何かの役に立つことがあるかもしれません。


CC BY-SA 3.0
2016-05-25T05:59:45.900
25155
2016-05-25T05:59:45.900
25148
answer