ながれとよどみ

自分が解いた問題の解法など

データサイエンティスト養成講座1章の演習

1章は基本的な文法事項の復習。高階関数とか思い出せてよかった。

p.24 フィボナッチ数列を求める方法の別解

#fibonattiをDPで求める
n = int(input())
dp = [0] * (n+1)
for i in range(1, n+1):
  if(i == 1 or i == 2):
     dp[i] = 1;
  else:
    dp[i] = dp[i-1] + dp[i-2]
print(f"{n}番目のフィボナッチ数は{dp[n]}")

p.26 高階関数reduce, filterについて調べて実装

参考

from functools import reduce
#高階関数 reduce, filter 
 
mul1 = reduce(lambda x, y: x*y, [2, 4, 6])
print(mul1)


val_3_div = filter(lambda x:x%3==0, [1, 2, 3, 4, 5, 6])
print(val_3_div)

練習問題 1から50までの和を計算

li = [x for x in range(1, 51)]

ans = reduce(lambda x, y: x+y, li)
print(f"1から50の和は{ans}")

p.29演習問題 クラス作成

 #四則演算クラス 
  class MyCalcclass:
    #初期化
    def __init__(self, x, y):
      self.x = x
      self.y = y

    def calc_add(self):
      return self.x + self.y

    def calc_sub(self):
      return self.x - self.y
    
    def calc_mul(self):
      return self.x * self.y
    
    def calc_div(self):
      if(self.y == 0):
        return "割り算はできない"
      else:
        return self.x / self.y

instance_1 = MyCalcclass(3, 0)
print(instance_1.calc_add())
print(instance_1.calc_sub())
print(instance_1.calc_mul())
print(instance_1.calc_div())

Todo: エラトステネスの篩