トップページ -> AOJの解答例 -> ITP1_8の解答例

ITP1_8の解答例(Python)

文字列の扱いについての問題です.

ITP1_8_A: Toggling Cases

大文字と小文字を入れ替える問題です. str.swapcase()で変換できてしまうので1行で終わります.

# ITP1_8_A
print(input().swapcase())

ITP1_8_B: Sum of Numbers

入力された数字の各桁の和を求める問題です. 文字列としてループで計算してもいいですし,

# ITP1_8_B
while True:
    str_num = input()
    # 終了条件
    if str_num == "0":
        break
    sum_digit = 0
    for s in str_num:
        sum_digit += int(s)
    print(sum_digit)
入力を整数のリストに変換してから和を計算することもできます.

# ITP1_8_B
while True:
    a = input()
    if a == "0":
        break
    print(sum(list(map(int,a))))

ITP1_8_C: Counting Characters

与えられた文字列に含まれるアルファベットの数をそれぞれ出力するプログラムです. chr()やord()を使うことで文字列と数値(asciiコード)を相互に変換することができます. これを使ってアルファベットのリストを [chr(i) for i in range(97,123)] で作っています. 学習したての頃は ['a', 'b', … , 'y', 'z'] と手打ちしていた思い出があります.(苦笑) もちろん手打ちでも面倒なだけで問題ありません. データセットの個数が分からないので入力を受け取り続けて受け取れなくなったら例外処理で終了させます.

# ITP1_8_C
character_list = [chr(i) for i in range(97,123)] 
S = ""
while True:
    # 入力の行数が分からないのでエラーが出たら終了にする
    try:
        S += input()
    except:
        break
        
# 小文字に統一してからカウント
s = S.lower()
for c in character_list:
    print(f"{c} : {s.count(c)}")

ITP1_8_D: Ring

与えられた文字列sをリング状にしたとき,文字列pがリングに含まれるかを判定します. 含まれるかどうかだけでいいのでring=s*3で表現しています.

# ITP1_8_D
s = input()
p = input()
ring = s*3
if ring.count(p):
    print("Yes")
else:
    print("No")

<- 前へ戻る 【目次に戻る】 次へ進む ->