🔙
🔝

【paiza問題集 解説】
Dランク・実力確認問題セット2

ヒントを頼りにプログラムを組んでみてください。

最初のメッセージ

最初のメッセージ

    文字列の切り出し問題です。

    user_id: は、文字列 S の前に必ず付きます。問題文に『文字列 'user_id:' と 文字列 S が空白区切りで与えられるので』とありますので、user_id: と 文字列 S を分割して文字列 S だけを取得する方法で組み上げてみましょう。

    入力時に分割する場合は この方法 で入力し、また、input() 関数で一行全てを入力してから分割する場合は このメソッド を使うとよいでしょう。

    もう1つ、input() 関数で入力後に スなんとか という機能を使い、文字列の欲しい部分だけを切り出す方法があります。user_id: と、その次の半角スペースの文字数は固定です。ならばその文字数を数えて、それ以降を文字列 S として切り出すとよいでしょう。

    最後に取得した文字列 S を使って画面に出力します。

    一般的には文字列と文字列を + で繋げる方法で出力できます。

    また、print() 関数の () 内で文字列ごとにカンマで区切ると自動で半角スペースが付く特性を利用することもできます。

攻撃力の計算

攻撃力の計算

    問題文に N を 5回掛けると書かれていますので、単純にこれを式にすると、

    N × N × N × N × N

    と書けます。そしてこれは N の 5乗と同等です。

    N5

    累乗(べき乗)の書き方は こちら を見て参考にしてください。

2 ケタで表示

2 ケタで表示

    こういうのを 0埋め と言いますが、これが意外と地味に難しいのです。😓

    まずは簡単な方法としては 文を使って、数が1桁か2桁かで出力形式を変えます。数が1桁の時は先頭に0を付ける、2桁の時はそのまま表示するという感じです。0を付ける時はに注意してください。

    他に f文字列 を使って書くこともできます。f はフォーマット(formatted)の f です。書式が難しいので詳しく説明するのも困難なのですが、とりあえずこの問題を f文字列形式で書くと次のようになります。

    n = '1'
    print(f"{n:0>2}")
    
    01

    変数を {} で囲うと、型に関係なく文字列として扱われます。

    n = 1
    print(f"{n}")
    print(type(f"{n}"))
    
    1
    <class 'str'>

    {n:0>2} は、左から『「nを {n}」「0埋めして 0」「(nを)右寄せで >」「2桁 2」の書式で出力する』という意味になっています。変数と書式の間はコロン : で区切ります。書式の書き順は決まっています。


    0 を別の文字に変えるとその文字で埋められます。

    n = 1
    print(f"{n:%>2}")
    
    %1

    2 を他の数に変えると表示する桁数(文字数)が変えられます。

    n = 123
    print(f"{n:*>10}")
    
    *******123

    n は文字列に変換されるので、数や数字でなくても使えます。

    n = 'abc'
    print(f"{n:@^11}") # ^ は中央寄せ
    
    @@@@abc@@@@

    今は理解するのは難しいかもしれませんが、これだけでも知っておくと今後役に立つところがありますので、いじりまくって試してみてください。😊 もちろん他にもたくさんの機能がありますので、興味がありましたらネットなどでぜひ調べてみてください。👍

    他にも文字列で使える zfill()メソッドというのもあります。

    組み込み型 Python3 ドキュメント

    この関数を使う場合、次のように書きます。

    n = '3'
    print(n.zfill(2))
    
    03

    文字列専用のメソッドなので、整数型(int)の時は文字列型に変換する必要があります。

    使い方はリンク先を読みつつ、たくさんいじってみてください。😊

N 番目のアルファベット

N 番目のアルファベット

    まず整数 N が 1 〜 5 の範囲内で与えられます。(条件 1 ≦ N ≦ 5)

    問題文の『辞書順における N 番目のアルファベットを大文字で』とはつまり、

    1 → A
    2 → B
    3 → C
    4 → D
    5 → E

    ということでしょう。

    まずは を使って書く方法があります。この方法で組む場合はもうこれ以上のヒントは不要でしょう。😉

    次は、予め文字列で 'ABCDE' を作っておく方法です。位置番号が 0 から始まりますので、N番目の N から 1 を引いて合わせます。あとは添字を使って出力します。

    Cランクレベルの解き方ですが、辞書を使って組む方法もあります。

    dic = {'1': 'A', '2': 'B', '3': 'C', '4': 'D', '5': 'E'}
    print(dic[input()])
    

    今はまだわからなくても大丈夫ですが、Cランクでは使うと捗るようになりますので、その時が来たら頑張って学習しましょう!🎉

    辞書は「2章 - 辞書型」で学習できます。