退屈なことをPythonにやってもらうための演習の回答[3.11][4.10.1][4.10.2]
白地です。
最近「業務ハック」という言葉を知って、あ、やりたいことのひとつの解はこれだ!と思って、『退屈なことはPythonにやらせよう』でPythonの学習をはじめました。
だらだらと4章まで演習プロジェクトをやりながら進めたのですが、初めて詰まり、やっと解(のひとつ)にたどりついたので、いっそここに進捗報告がてら書いてしまおう!と思って投下します。
本来はQiitaとかの方がいいのかもしれないですけども。
なお、本職の方から見ると色々と誤りが含まれていると思いますので、優しくご指摘いただけると非常に嬉しいです!
3.11 コラッツ数列+入力の妥当性検証
#コラッツ数列を計算する関数
def collatz(number):
x = number%2
if x==1:
return int(3*number+1)
else:
return int(number/2)
#整数値が入力されるまで入力待ち
while True:
print('Input a nunber.(If you want to break, put "ctrl + c"')
num = input()
try:
yournum = int(num)
except ValueError:
print('Input a integral number.')
continue
break
#コラッツ数列の計算
while True:
yournum = collatz(yournum)
print(yournum)
if yournum==1:
break
3章の演習プロジェクトである3.11.1と3.11.2までやったコードです。記事を書き出してから間違いに気付いて修正しました。変数名や表示させる文章は適当です(カッコつけて英語にしてますが間違っている可能性が高いです)。
3.11.2の文章の意図としては「整数値を入力させたい」のかなと思って、「整数値が入力するまでinputを表示させています。
4.11.1 カンマ付け
def add_comma (list):
ref=""
for rows in range(len(list)):
ref += list[rows]
if rows < len(list)-2 :
ref += ', '
if rows == len(list)-2 :
ref += ', and '
return ref
「関数を書け」というお題だったので、これが解答になるのかな、と。上げようとしたときに「カンマ」のスペルを間違っていたので修正しました。ものすごく恥ずかしいですね。
戻り値用の文字列を用意して、それに順次文字を入れつつ、最後から2番目より前ならカンマを追加する、最後から2番目ならカンマとandを追加する、それ以外なら何もしない、という関数です。else if と else があった方がわかりやすいのかもしれません。
4.10.2 文字絵グリッド
grid = [['.','.','.','.','.','.'],
['.','0','0','.','.','.'],
['0','0','0','0','.','.'],
['0','0','0','0','0','.'],
['.','0','0','0','0','0'],
['0','0','0','0','0','.'],
['0','0','0','0','.','.'],
['.','0','0','.','.','.'],
['.','.','.','.','.','.']]
xlen = len(grid)
ylen = len(grid[0])
line=[]
for y in range(ylen):
line.append([])
for x in range(xlen):
for y in range(ylen):
line[y].append(grid[x][y])
for y in range(ylen):
tmp = ""
tmp = ''.join(line[y])
print(tmp)
盛大に詰まりました。
というのも、キーワード引数という誘導に何故か乗りたくなくなったのと、「あれ、これリストでいけるのでは」という思い込みが悲劇の引き金でした。
やり方を試行錯誤して、結局以下のようになりました。
1. リストを用意して、行数分のリスト内リストを作る(これができてなかった)
2. XとYを逆転させつつ、各行のリスト入れ込む
3.カンマを排除して表示させる(ぐぐった)
多分問題の意図としては、リストになんぞ入れずにそのままprintすればいいのではないかと思い始めました。。。でもなんかそれ、カッコ悪くないですかね…
ということで、業務ハックにはまだまだ遠い白地でした。
はやく11章のWebスクレイピングと12章のExcelに行きたいー!
この記事が気に入ったらサポートをしてみませんか?