Python 技術ログ

毎日Python_16日目


【ページ更新日:2020年10月22日】

毎日Pythonでは、簡単なPythonのプログラムコードを紹介していきます。

今日のプログラムはAtCorder2019の問題を使用しています。

競技用プログラミングの問題になります。

問題

問題は次のとおりです。

あなたは、3桁の整数を入力として受け取り、それを2倍して出力するプログラムの作成を頼まれた。

ところが、どうやらプログラムに入力される文字列Sに英小文字が紛れ込むことがあるようだ。そこで、その場合はエラーを出力することにした。

入力される文字列Sが3桁の整数である場合(0で始まる場合を含む)は、その2倍の値を出力し、そうでなければ「error」と出力するプログラムを作成せよ。

AtCorder 第一回アルゴリズム実技検定過去問2019年12月A問題

プログラムコード

問題の解答となるコードは次のとおりです。

※間違いの指摘やアドバイスなどあれば教えてください。

S = input("数字を入力してください >>> ")
if not str.isdecimal(S):
    print ("error")
else:
    print (int(S)*2)

ちなみに、これをC++で書くと、

このようになります。

これは、AtCoderさんが公表している解説動画のコードになります。

このPythonとC++のコードを見比べても分かるように、やはりPythonは他の言語に比べて、簡単にプログラムを書くことができます。

ポイント

S = input("数字を入力してください >>> ")
if not str.isdecimal(S):
    print ("error")
else:
    print (int(S)*2)

このPythonコードのポイントは次の3点です。

  • input
  • str.isdecimal( )
  • int( )

input

input関数は、キーボードから文字列の入力を取得する関数です。

S = input("数字を入力してください >>> ")

今回のコードでは上記のように使用しました。

これで、『キーボードからの入力を取得し変数「S」に入れる』という処理を行います。


inputの後の( )の中には、入力時に表示する文字列を入れます。

上記の場合だと、ユーザーに「数字を入力してください」という文字列を見せた後に、キーボードから入力をしてもらうかたちになります。


input関数の注意点は次のとおりです。

input関数の注意点

input関数はキーボードからの入力を「文字列」、つまり「str型」で取得します。

つまり、入力されたものを数値として扱いたい場合は型変換(キャスト)する必要があります。

型変換(キャスト)については、この後inputで説明します。

str.isdecimal( )

これはstrクラスのisdecimal メソッドです。

文字列中のすべての文字が10進数で使われる文字で、かつ 1 文字以上ある場合にtrueを返します。それ以外はfalseを返します。

S = input("数字を入力してください >>> ")
if not str.isdecimal(S):
    print ("error")
else:
    print (int(S)*2)

今回のコードでは、if関数の条件式でstrクラスのisdecimalメソッドを使用しています。

if not str.isdecimal(S):
    print ("error")

isdecimalメソッドの( )の中に対象としたい文字列を入れます。

今回の処理としては、isdecimalメソッドを使用して、input関数で入力した文字列が全て数字かどうか調べています。

if関数の条件式には「not」(否定)が付いているので、真と偽(tureとfalse)がひっくり返ります。

つまり、上記の2行では

『input関数で入力された文字列Sに数字以外の文字が含まれていたら、「error」と表示する』

という処理になります。

int( )

int関数は( )の中にいれた数字をint型に型変換(キャスト)します。

    print (int(S)*2)

今回のコードでは、input関数で入力された数字をstr型からint型に変換して、2倍して、表示しています。

  • この記事を書いた人
  • 最新記事

Maita Tomoya / yone

2020.4~Webアプリケーションエンジニアとして都内の企業で働き、空いている時間でブログを運営している29歳男です。本ブログは情報の整理をするため、文章を書く機会を作るために始めました。1記事でも多く「誰かのためになる記事」を書けるように頑張ります!転職前は地方の高校で働いていました。教育関係の記事も定期的に書いていきたいと思います。

-Python, 技術ログ