##まえがき
登場人物
- Ruby、JavaScript好きぐらいでPythonは学習したことがない父親の自分
- スプラトゥーンとマイクラが大好きな長男
ある日の父子の会話
長男:プログラミングやりたい
俺:なぜ急に?
長男:なんとなく
俺:マイクラの影響?
長男:Youtubeでなんとなく興味を持った
俺:どんなことやりたい?
長男:とりあえずプログラムやりたい
俺:言語どうする?
長男:とと(父の意)は何がいいと思う?
俺:うーん(お手軽にJavaScriptと言ってしまうか?それともRubyを勧めるか?いや、流行りはPythonだろか?質問があっても困らないところにしたい。CとJavaは困る)
俺:RubyかPythonはどうだろうか?
長男:パイソンで!(即答
俺:なぜにパイソン?
長男:聞いたことあるから
強いなPython、中学生でも知っているとは。とりあえず初心者向けの本を購入して長男に渡した。
Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ (Amazon)
##課題を出したい
学習したからには課題を出したい。
初心者に出す課題といったらF○○○B○○○で決まりでしょう。F○○○B○○○ダンジョンを思い出します。
###課題
1から100まで、3で割りけれるときはF○○○、5で割り切れるときはB○○○、3と5で割り切れるときはFizzBuzzを出力する。
###自由回答
最初は自由に回答させます。
##条件付きの課題
Python初心者の自分が長男に課題を出すなら、父親なりの回答を用意しておきたいと思います。
###基本形
これを利用することを条件とします。
for i in range(1,101):
list = [i, "F○○○", "B○○○", "F○○○B○○○"]
#課題
###1:制限なし
制限なしの回答例
for i in range(1,101):
list = [i, "F○○○", "B○○○", "F○○○B○○○"]
if i%15==0:
num=3
elif i%5==0:
num=2
elif i%3==0:
num=1
else:
num=0
print(list[num])
###2:一行
ikkoじゃないよ、1行で書く回答例
for i in range(1,101):
list = [i, "F○○○", "B○○○", "F○○○B○○○"]
print(list[3 if i%15==0 else 2 if i%5==0 else 1 if i%3==0 else 0])
###3:if禁止、行数制限なし
if禁止、行数制限なしの回答例
for i in range(1,101):
fb = [i, "F○○○", "B○○○", "F○○○B○○○"]
num = list('300102100120100')
print(fb[int(num[i%15])])
###4:if禁止、一行
if禁止、1行で書く回答例
for i in range(1,101):
list = [i, "F○○○", "B○○○", "F○○○B○○○"]
print(list[bool(i%5==0)*2 + bool(i%3==0)])
###5:ifと%禁止
だめだ、分からなかった。
for i in range(1,101):
list = [i, "F○○○", "B○○○", "F○○○B○○○"]
# %禁止のコードはわからなかった
※しらかみゅさん(ありがとうございます)に教えてもらった方法からひねり出すと(*1入れるとわかりやすかった)
for i in range(1,101):
list = [i, "F○○○", "B○○○", "F○○○B○○○"]
print(list[(i//3==i/3)*1 + (i//5==i/5)*2])
##おわりに
ここまで考えたんだから、長男よ、ちゃんと学習して俺に課題を出さしてくれ。
伏字にしたのはぐぐって見つからないように願っている。
教えていただいた「i//3==i/3」はぐぐらないと理解できなかった。
さすがに「ifと%と=禁止」は無理だと思う