64174


中間試験、期末試験、再試験の点数から成績を出力するプログラムなのですが、([ITP1_7_A](http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_7_A&lang=ja)です)  
自分のコードは提出してもACにならず、一方で正答例のコードはACされています。

何故自分のコードが正解にならないのかが分からなくなってしまったので、どなたか教えていただけると幸いです。

**自分のコード:**

[code]

    m = 0
    f = 0
    
    while True:
      m, f ,r = map(int, input().split())
      s = m + f
      if m == -1 and f == -1 and r == -1:
        break
      if m == -1 or f == -1:
        g = "F"
      if s >= 80:
        g = "A"
      elif s >= 65:
        g = "B"
      elif s >= 50:
        g = "C"
      elif s >= 30:
        if r >= 50:
          g = "C"
        else:
          g ="D"
      else:
        g ="F"
      print(g)
    
[/code]

**正答例:**

[code]

    while True:
        M,F,R = map(int,input().split())
        if M == -1 and F == -1 and R == -1:
            break
        if M == -1 or F == -1:
            print("F")
        elif M+F >= 80:
            print("A")
        elif M+F >= 65:
            print("B")
        elif M+F >= 50:
            print("C")
        elif M+F >= 30:
            if R >= 50:
                print("C")
            else:
                print("D")
        else:
            print("F")
    
[/code]


CC BY-SA 4.0
2020-03-28T04:31:51.193
64173
2020-03-28T11:37:52.350
2020-03-28T11:37:52.350
3060
36869
question
python python3
競プロで、自分が書いたプログラム(Acceptされない)と正答例の違いが不明


中間試験か期末試験のいずれかを欠席した場合は"F"で確定ですが、そのまま次のIF分に突入しています。  
そのため本来は試験欠席により"F"になるはずの学生が他の成績で上書きされてしまっています。

[code]

      if m == -1 or f == -1:
        g = "F"
      if s >= 80:
        g = "A"
    
[/code]

そのあたりを正答例と比較して考えてみてください。


CC BY-SA 4.0
2020-03-28T04:45:02.840
64174
2020-03-28T04:45:02.840
27410
64173
answer