第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 の今回の関数って似ているような。

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

Python学習,Python,paiza

Posted by LeoSaki