第152回【Python】大文字にする、指定範囲だけ大文字
現在取り組んでいるのは、paiza ラーニング問題集「B ランクレベルアップメニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 152 回目です。
横文字を連呼して説明する人が苦手です。結局、それ日本語で言ったらなんなん? ってことを尋ねると、大抵の場合、よくわかっていなかったりします。相手に伝わるように、理解できるように、説明するっていうのも一つのスキルだと思うのですが。
それでは、今日も頑張ってみようと思います。
今回取り組む内容について
以下は、前回までに取り組んだ問題とまったく同じなので、飛ばします。
コードは数書いてナンボとかカッコつけたこと書いてましたが、あまりにも多いので挫折しました。
STEP: 1 文字列の分割
STEP: 2 整数の足し算
STEP: 3 文字列の長さ
STEP: 4 文字列の1文字目
STEP: 6 あいだの整数
大文字にする (paizaランク D 相当)
1文字のアルファベット c が入力されるので、その文字を大文字にして出力してください。
c
期待する出力
アルファベット小文字 c を大文字にして出力してください。
すべてのテストケースにおいて、以下の条件をみたします。
・c はアルファベット小文字1文字
入力例
a
出力例
A
大文字にするための関数があるのだから、便利に利用する。
Python
c = input()
print(c.upper())
VBA
Sub substring_upper_4()
c = Cells(1, 1)
Debug.Print UCase(c)
End Sub
指定範囲だけ大文字 (paizaランク C 相当)
スペース区切りの2つの整数と、文字列が入力されます。2つの整数の範囲の部分文字列を、大文字にして出力してください。
a b
s
期待する出力
文字列 s の a 文字目から b 文字目を大文字にして、文字列 s を出力してください。
文字列 s に含まれる記号やスペースは、変形せずそのまま出力します。
すべてのテストケースにおいて、以下の条件をみたします。
1 ≦ a ≦ b ≦ (文字列 s の長さ) ≦ 100
文字列 s は、半角英数字・半角記号スペースで構成されます。
入力例
2 6
this is a pen
出力例
tHIS Is a pen
半角スペースも含めて、指定範囲を大文字で表記する、ということらしい。
Python
a,b = map(int,input().split())
c = input()
print(c[:a],end='')
print(c[a-1:b].upper(),end='')
print(c[b:])
VBA
Sub substring_upper_9()
AB = Split(Cells(1, 1), " ")
a = Val(AB(0))
b = Val(AB(1))
c = Cells(2, 1)
Debug.Print Left(c, a - 1);
Debug.Print UCase(Mid(c, a, b - a + 1));
Debug.Print Mid(c, b + 1)
End Sub
最後に
Python のスライス記法は相変わらず便利です。インデックスの癖さえちゃんと身に付ければ、とても強い武器になってくれると思います。一方、VBA は関数の使い方次第です。left 関数、mid 関数、(あと right 関数)は、文字列操作の基本なので、覚えておいて損はないと思います。
それにしても、ここでも、Python と VBA であまり変わることなくコードを書くことができるのは驚きでした。よくよく仕組みを考えてみると、Python のスライス記法と、VBA の今回の関数って似ているような。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません