第55回【Python】変数の入れ替え、指定要素の入れ替え
現在取り組んでいるのは、paiza ラーニング問題集「配列活用メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 55 回目です。
55 は言わずと知れた、松井秀喜の背番号。日本でずっと見ていたかった。世界一の日本の野球を捨ててまでメジャーに挑戦する理由はなんなんでしょう。日本でエースや 4 番と言われた人たちが、マイナーでくすぶっているのを見るとモヤモヤします。
それでは、今日も頑張ってみようと思います。
変数の入れ替え
整数型の変数を 2 つ宣言して整数 X, Y を格納したのち、2 つの変数の中身を入れ替えた後の 2 つの変数の値を出力してください。
すべてのテストケースにおいて、以下の条件をみたします。
・0 ≦ X, Y ≦ 100
1 2
よくあるやつを、まずはよくあるパターンで書いてみる。
Python
X,Y = map(int,input().split())
tmp = X
X = Y
Y = tmp
print(X,Y)
古典(Classic)ですね。
Python らしく書いてみる。
Python
X,Y = map(int,input().split())
X,Y = Y,X
print(X,Y)
VBA
XY = Split(Cells(1, 1), " ")
X = Val(XY(0))
Y = Val(XY(1))
tmp = X
X = Y
Y = tmp
Debug.Print X & " " & Y
指定要素の入れ替え
配列 A の要素数 N と配列 A の各要素 A_1, A_2, …, A_N , 交換する A の要素番号 X, Y が与えられるので、A_X と A_Y を入れ替えた後の A を出力してください。
すべてのテストケースにおいて、以下の条件をみたします。
・ 2 ≦ N ≦ 100
・ 1 ≦ X , Y ≦ N , X != Y
・ 0 ≦ A_i ≦ 100 (1 ≦ i ≦ N)
5
1
2
3
4
5
3 5
これも、古典と Python らしくとの 2 パターンで書いてみる。
Python
N = int(input())
A = [int(input()) for _ in range(N)]
X,Y = map(int,input().split())
tmp = A[X-1]
A[X-1] = A[Y-1]
A[Y-1] = tmp
print(*A,sep="\n")
Python
N = int(input())
A = [int(input()) for _ in range(N)]
X,Y = map(int,input().split())
A[X-1],A[Y-1] = A[Y-1],A[X-1]
print(*A,sep="\n")
VBA
N = Cells(1, 1)
Dim A() As Integer
ReDim A(N - 1)
For i = 0 To N - 1
A(i) = Cells(i + 2, 1)
Next
XY = Split(Cells(N + 2, 1), " ")
X = Val(XY(0))
Y = Val(XY(1))
tmp = A(X - 1)
A(X - 1) = A(Y - 1)
A(Y - 1) = tmp
For Each v In A
Debug.Print v
Next
最後に
クラシックってつくとなんかすごい感じがする。まぁ、完全に確立された手順なわけで、他の言語でも当たり前のように使われている手法なんだけど。それを潰しにかかった Python は素敵だ。
もちろん、Python を始めた頃にはこんなやり方知らなかったので、古典で書いていた。何かで検索かけて偶然見つけたのだが、ちょっと感動したのを覚えている。そして、LeoSaki(旦那)の引き出しが増えたというわけだ。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません