39.基礎演習3




それではこれまでに学習した内容を踏まえて、
演習を行っていきましょう。

少し難しめに作ってありますので、
動画を止めながらゆっくり考えて解いてみてください。

第一問:

整数1から100までの和を求めるプログラムを作成してみましょう。

In [ ]:
 

第二問:

フィボナッチ数(0,1,1,2,3,5,8,13・・・)のように
最初の二項は 0, 1 で、以後どの項もその直前の2つの項の和
になるような数のフィボナッチ数と言います。

このフィボナッチ数を求める関数を作成しましょう。

3桁のフィボナッチ数までを表示させる関数にしましょう。

In [ ]:
 

第三問:

前項で取り扱ったrandomライブラリの関数を使って
英小文字のaからzか、数値0から9までの文字だけを使った
32桁の文字列を作成するプログラムを作ろう。

random.randint(最小値、最大値)でランダムな整数値が返せる。

In [ ]:
 

第四問:

aabacdcda

この文字列の「文字別」で集計してみよう。

In [ ]:
 

第五問:

「景子の夫」、「千鳥」、「メンタリスト」
この3つの文字列のうち、1つをランダムで返す関数を作って見ましょう。

In [ ]:
 

すぐに答えが出ない人は、動画を止めて考えてみましょう。

コツとしては何を入力したら、どう計算されて、どう出力されるのか
それを考えながら書いてみましょう。

答えはこの下に





回答

第一問:

整数1から100までの和を求めるプログラムを作成してみましょう。

In [1]:
res = 0
# range(1,101)で1から100まで
for i in range(1,101):
    # += で加算
    res += i
print(res)
5050
In [2]:
# 上記を内包表記で書くと
print(sum([i for i in range(1,101)]))
5050

第二問:

フィボナッチ数(0,1,1,2,3,5,8,13・・・)のように
最初の二項は 0, 1 で、以後どの項もその直前の2つの項の和
になるような数のフィボナッチ数と言います。

このフィボナッチ数を求める関数を作成しましょう。

3桁までのフィボナッチ数を表示させる関数にしましょう。

In [3]:
def fib():
    # まずはじめに変数を2つ用意する
    a = b = 1
    while True:
        print(b)
        # フィボナッチ数は直前の2つの項の和
        a, b = b, a+b
        # 3桁を超えたら抜ける
        if b>999:
            break
In [4]:
# 上記関数の実行
fib()
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987

第三問:

前項で取り扱ったrandomライブラリの関数を使って
英小文字のaからzか、数値0から9までの文字だけを使った
32桁の文字列を作成するプログラムを作ろう。

random.randint(最小値、最大値)でランダムな整数値が返せる。

In [5]:
import random

# 36個の英数字を用意する
words = 'abcdefghijklmnopqrstuvwxyz0123456789'

# 上記の中からランダムで返すのを32回繰り返して配列を作る
# その配列を join で連結して文字列に変換する
print(''.join([words[random.randint(0,35)] for i in range(32)]))
lfkj6bv913np7cq8fxzjjpfjv2u8qv0q

第四問:

aabacdcda

この文字列の「文字別」で集計してみよう。

In [6]:
# まずは集計対象の文字を用意
word = 'aabacdcda'

# 結果を格納するための辞書を用意
result_dict = {}
for w in word:
    # 文字があれば +1 なければ1で辞書に格納する
    if w in result_dict:
        result_dict[w]+=1
    else:
        result_dict[w]=1
print(result_dict)
{'b': 1, 'c': 2, 'a': 4, 'd': 2}

第五問:

「景子の夫」、「千鳥」、「メンタリスト」
この3つの文字列のうち、1つをランダムで返す関数を作って見ましょう。

In [7]:
import random

# 配列を用意する
daigo = ['景子の夫','千鳥','メンタリスト']

# 関数を作る
def random_daigo(daigo):
    # ランダムで整数値を返し、インデックスで上記配列の要素を返す。
    return daigo[random.randint(0,2)]

# 関数の実行
print(random_daigo(daigo))
千鳥

randomライブラリには直接1つの要素をランダムで返すという関数があります。

random.choice(配列)

In [8]:
import random

daigo = ['景子の夫','千鳥','メンタリスト']

def random_daigo(daigo):
    return random.choice(daigo)

print(random_daigo(daigo))
千鳥

さて、演習はいかがだったでしょうか?
あなたのwishは達成されましたか?

プログラミングができるようになると
そのwishを叶えることができるかもしれませんね。

プログラミングは
まずは真似してコードを書くこと、写経、が上達の鍵になります。
書いて書いて書きまくりましょう。

できなかったところは演習を復習してみてくださいね。