LoginSignup
2
4

More than 3 years have passed since last update.

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

Posted at

本日は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

2
4
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
4