第2回【Python】ある数をある回数表示、a ~ z までを表示
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 2 回目です。
paiza ラーニングで学習しています。
LeoSaki(旦那)は勉強するのが好きです。
そこで、勉強なんか嫌いだ、って言っている方に一言。
「自分自身に勉強が好きだ、と思い込ませることができるのも才能ですよ」
ある数をある回数表示 1
3 を 8 回、改行区切りで出力してください。
なんじゃ? この問題は。33333333 を縦に並べる?
Python
for i in range(8):
print(3)
大変わかりやすい。だけども、やっぱり 1 行で書いておきたい。
Python
print(*[3 for _ in range(8)],sep="\n")
_(アンダーバー)は、Python の慣習で、利用しない変数を表している。最初見たときには意味が分からなくてとまどった。
だから、次のように書いても問題ないと思う。
Python
print(*[3 for i in range(8)],sep="\n")
変数 i は利用されていないので、_(アンダーバー)にしておこう、ってことなんだな。面白い。
では、VBA で書いてみる。とてつもなく意味がない気がするが、paiza では PHP や Java 、C++ といった言語は解答例が示されているため、敢えての VBA チャレンジだ。
そんなに長くは続かないと思う・・・。
VBA
For i = 1 To 8
debug.Print 3
Next
For 文は、Python では、「 0 から 7 」までの 8 回を繰り返し、VBA では、「 1 から 8 」までの 8 回を繰り返している。
相変わらず、間違えることが多いのは誰か? それは、LeoSaki(旦那)です。
ある数をある回数表示 2
整数 N, K が与えられます。
N を K 回、改行区切りで出力してください。
なるほどなるほど。N と K は、半角スペース区切りで渡される、と。
Python
N,K = map(int,input().split())
for _ in range(K):
print(N)
この、map 関数を利用した、「 N,K = map(int,input().split) 」って書き方、独特でいいですよね。最初、map 関数を理解できていなかったので(今だって完全に理解しているかは自信ないけれど)、こんな面倒な書き方をしていた。
Python
N,K = input().split()
N = int(N)
K = int(K)
これだって、次のように書くことができる。
Python
N,K = input().split()
N,K = int(N),int(K)
もちろん、やろうとしていることがわかりやすくて、間違いとは一概に言えない・・・んだろう。
VBA で書いてみる。
VBA
NK = split(cells(1,1)," ")
For i = 1 to NK(0)
debug.Print NK(1)
Next
やってて意味がわからなくなってきたけれど、チャレンジすることが大事だと自分に言い聞かせておく。
a ~ z までを表示
a ~ z
のアルファベットを、改行区切りで出力してください。
これは知らないと解けない問題だった。
Python
for i in range(26):
print(chr(97+i))
小文字の「a」が 97 でそこから 26 文字を出力する。
もっとスマートに書いた方がいいでしょうか。
Python
for i in range(97,97+26):
print(chr(i))
1 行で書けそうなときは、1 行おじさんが出没。
Python
print(*[chr(i) for i in range(97,97+26)],sep="\n")
さて、これを VBA で書くとどうなるか。
VBA
For i = 0 To 25
Debug.Print Chr(97 + i)
Next
VBA でも変わりませんでした。
ということは、もっとわかりやすく(?)書けそう。
VBA
For i = 97 To 97 + 25
Debug.Print Chr(i)
Next
+26 なのか、+25 なのか、「end」の扱い方を間違えないようにしないと。
いつも間違えるのは誰か? それは、LeoSaki(旦那)です。
最後に
Python での _(アンダーバー)の使い方は独特だなぁと思う。__init__ とか、__main__ とか、あと、スコープがプライベートのときのアンダーバーとか。まだ全然使いこなすことができていないので、学習を続けていきたい。
それと、Python の内包表記って便利ですね。あれを他の言語で書こうと思うと、結構な行数になっちゃうと思うんだ。実際、VBA では、3 行必要になっているし。変数宣言をきちんとしてやると、3 行では絶対に済まない。
使いこなせると面白いんだろうなぁ。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません