本日はPythonの基礎演習の最後です。
前回はこちら
[100日後にエンジニアになるキミ - 33日目 - Python - Python言語の基礎8]
(https://qiita.com/otupy/items/9e70a3b36f32fccacadf)
基礎演習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