第43回【Python】i 番目の出力 3、i 番目の出力 4

Pythonby LeoSaki

現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。

学習サービストッププログラミング学習サイト【paizaラーニング】のメインページ。paiza独自のシステムにより、面倒な環境構築が不要、Webブラウザがあれば5秒で学習が開始できます。わかりやすい1本3分の動画と豊富な演習問題で初心者〜中級者のプログラミング学習を支援します。paiza.jp

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

Python をゼロから勉強してみよう、のコーナー 43 回目です。

極々基本的な作業しか PC で行っていらっしゃらない方に、効率的に作業する方法を教えなければならないことがあります。言葉選びから気を付けないと、頭の上にはっきりとクエスチョンマークが見えて、目に見えてやる気を喪失される事態が発生します。自分の常識が他人の常識である、という考えは捨てなければならないと改めて反省しています。

それでは、今日も頑張ってみようと思います。

i 番目の出力 3

プログラミング練習問題「i 番目の出力 3」問題を解いてスキルアップ!みんなも一緒に解いてみよう!paiza.jp

1 行目に整数 N, M が与えられます。
2 行目に M 個の文字列 s_1, s_2, …, s_M が半角スペース区切りで与えられます。
N 番目の文字列 s_N を出力してください。


すべてのテストケースにおいて、以下の条件をみたします。

・* M は 1 以上 5 以下の整数
・* N は 1 以上 M 以下の整数
・* s_i (1 ≤ i ≤ M) は数字または大文字・小文字のアルファベットからなる長さ 1 以上 10 以下の文字列


3 5
a b c d e

インデックスが 0 から始まることだけ注意すれば難しい問題ではない。

Python
N,M = map(int,input().split())
S = input().split()
print(S[N - 1])
VBA
NM = Split(Cells(1, 1), " ")
N = Val(NM(0))
M = Val(NM(1))
S = Split(Cells(2, 1), " ")
Debug.Print S(N - 1)

i 番目の出力 4

プログラミング練習問題「i 番目の出力 4」問題を解いてスキルアップ!みんなも一緒に解いてみよう!paiza.jp

1 行目に整数 N, M, L が与えられます。
2 行目に M 個の文字列 s_1, s_2, …, s_M が半角スペース区切りで与えられます。
N 番目の文字列 s_N の L 番目の文字を出力してください。


すべてのテストケースにおいて、以下の条件をみたします。

・* M は 1 以上 5 以下の整数
・* N は 1 以上 M 以下の整数
・* s_i (1 ≤ i ≤ M) は数字または大文字・小文字のアルファベットからなる長さ 1 以上 10 以下の文字列
・* L は 1 以上 s_N の文字数以下の整数


3 5 2
abc def ghi jkl mno

こちらも、インデックスが 0 から始まることだけ注意すれば難しい問題ではない。N 番目、L 番目の両方が 0 から始まることに注意。

Python
N,M,L = map(int,input().split())
S = input().split()
print(S[N-1][L-1])
VBA
NML = Split(Cells(1, 1), " ")
N = Val(NML(0))
M = Val(NML(1))
L = Val(NML(2))
S = Split(Cells(2, 1), " ")
Debug.Print Mid(S(N - 1), L, 1)

VBA だと、文字列から L 番目の文字を抜き出す、って感じでなんとかやってます。

最後に

文字列を配列として受け取ることができる Python と、文字列は文字列だと主張する VBA で、異なるやり方になってしまった。これも、閃き。だから、引き出しをたくさん持っておくことが重要なんだと思う。

引き出しを多く持つために必要なのは、書くこと。いろんなパターンを想定して、書くこと。まぁ、想定外のことが多く起きるので実務でコードを書くということほど力になる。

引き続き、よろしくお願いいたします!

LeoSaki

旦那の方。 猫と嫁とのキャンプをこよなく愛する。 AWS 6 冠達成者。AWS 好き。 ITパスポート、基本情報技術者、応用情報技術者も取得しています。