LoginSignup
2
3

数式の加減速処理

今回は文字列で標準入力された加減算を計算し、答えを標準出力する処理を実装しました。

プログラミング問題

正しい数式を表す文字列 S が与えられるので、その数式を計算した結果を出力してください。ただし、出てくる計算は足し算・引き算のみとします。

・ 例
・ S = "1+1"
答えは 2 となります。

・ S = "10+13-21+19"
答えは 21 となります。

実装したソースコード

# 文字列入力関数
def input_str():
  str1 = input()
  return str1

def make_array(str1):
  import re
  array1 = list(map(int,re.split('[+-]',str1)))
  return array1
# 足し算関数
def add(ans,num):
  ans += num
  return ans
# 引き算関数
def gain(ans,num):
  ans -= num
  return ans

def main():
  # 文字列の入力
  str1 = input_str()
  # 入力した文字を配列に分割する
  array1 = make_array(str1)
  # 配列の長さ
  len1 = len(str1)
  # 配列の要素変数
  p = 0
  # 回答変数
  ans = 0
  # 演算記号変数
  calc1 = ""
  for i in range(len1):
      str2 = str1[i]
      if i == len1-1:
        number1 = array1[p]
        if calc1 == "+":
          ans = add(ans,number1)
        elif calc1 == "-":
          ans = gain(ans,number1)
      if str2 == "+" or str2 == "-":
        number1 = array1[p]
        if p == 0:
            ans = add(ans,number1)
        elif p > 0:
            if calc1 == "+":
                ans = add(ans,number1)
            else:
                ans = gain(ans,number1)
        if str2 == "+":
            calc1 = str2
        else:
            calc1 = str2
        p += 1

  print(ans)


if __name__ == "__main__":
  main()

結果

answer.jpg

最後に

プログラミングコンテスト過去問を記事にしました。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3