100日後にエンジニアになるキミ - 34日目 - Python - Python演習3


本日はPythonの基礎演習の最後です。

前回はこちら
100日後にエンジニアになるキミ - 33日目 - Python - Python言語の基礎8

基礎演習3

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

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

第一問:

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

第二問:

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

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

第三問:

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

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

第四問:

aabacdcda
この文字列の文字別集計してみよう。

第五問:

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

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

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

答えはこの下に

回答

第一問:回答

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

res = 0
# range(1,101)で1から100まで
for i in range(1,101):
    # += で加算
    res += i
print(res)

5050

# 上記を内包表記で書くと
print(sum([i for i in range(1,101)]))

5050

第二問:回答

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

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

def fib():
    # まずはじめに変数を2つ用意する
    a = b = 1
    while True:
        print(b)
        # フィボナッチ数は直前の2つの項の和
        a, b = b, a+b
        # 3桁を超えたら抜ける
        if b>999:
            break

# 上記関数の実行
fib()

1
2
3
5
8
13
21
34
55
89
144
233
377
610
987

第三問:

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

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

import random

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

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

lfkj6bv913np7cq8fxzjjpfjv2u8qv0q

第四問:回答

aabacdcda
この文字列の文字別集計してみよう。

# まずは集計対象の文字を用意
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つをランダムで返す関数を作って見ましょう。

import random

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

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

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

千鳥

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

random.choice(配列)

import random

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

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

print(random_daigo(daigo))

千鳥

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

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

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

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

まとめ

これでPythonの基礎演習も終わりです

基礎が終わったので、文法のほとんどを学習したことになります。
これでPython言語自体のコーディングを進めるのには
支障はなくなったのかなと思います。

あとは自分でコードを書いてみましょう。
コードを書く事がプログラミングの一番大事なことです。

目的を決めて最初は何か簡単なプログラムを作ってみましょう。

よく使われるコードに関してはまとめをチートシートとして作成しておきました。

こちらにリンクを貼っておきますので、是非参考にしてみてください。
https://note.com/otupy/n/n1bedb9f36e54

君がエンジニアになるまであと66日

作者の情報

乙pyのHP:
http://www.otupy.net/

Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter:
https://twitter.com/otupython