ひとメモ

当ページのリンクには広告が含まれています

【初心者向け】Python標準入力の取扱い

 

先日紹介したpaizaですが、スキルチェック問題を解くのに初心者は絶対つまづくんじゃ?と思ったポイントがあったので、簡単に解説したいと思います。 

 

www.hitowaft.work

 

 

一番簡単なの

まず一行・一回だけ読み込み。これは簡単。

gist.github.com

 

 3行目で標準入力から一行代入されます。ここで注意するポイントは、このままだとstr型(文字列)で受け取ることになるということです。文字列ならそれでいいのですが、例えば

gist.github.com

このプログラムで入力が”10”だった場合、何が出力されるかわかりますか?正解は、10×2で20!・・・ではなく”1010”となります。何故こうなるかというと、str型で受け取っているため、数字ではなく文字列として認識されているからです。数字として扱い、計算するにはまずstr型からint型(整数)もしくはfloat型(小数点)に変換する必要があります。

gist.github.com

なので、こう。aに代入する時に、一緒にint型に変換します。これで実行すると”1010”ではなく”20”と計算できました。

 

また、1行ではあるけれど、スペース区切りでいくつかの入力がある場合もあります。"2 10"など。

それぞれを別々の要素として、同じリストに受け取ってみましょう。split()というメソッドでそれが実現できます。

gist.github.com

このかっこの中には区切り文字を指定できますが、詳しくは過去記事で紹介してるサイトを見たほうがわかりやすいと思います。スペースで区切る場合は何も入れなくて大丈夫です。

さて、上のコードで分割はできました。しかし先程と同じように、このままではstr型のままです。では”a = int(input().split())”とすれば良いのでしょうか?ここが私のどハマリしたポイントです。実はそう簡単にいかないのです。”a = int(input().split())”として実行したところ、こんなエラーが出ると思います。

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

int関数の引数はリストじゃあきまへんで~ってことですね。ではどうするか。以下のような方法があります。

 

これが本命

gist.github.com

これで一行丸ごとint型で且つsplit ()関数によって分割されてリストに収納されました。

 

sysモジュールを使う

またsysモジュールを使う方法もあります。使うには三行目のように、あらかじめimportしておく必要があります。これだと複数行の入力をまとめてint型に変換できます。ただ、これだとsplit()を使えないので一行に一つの入力がある時しか使えません。

gist.github.com

 

もしかしたらもっと他にスマートなやり方があるのかもしれませんが、この辺がわかっていれば標準入力だけでつまづくことは少ないと思います。あとはfor文で何とかします。append関数も覚えておくと便利。ループ処理等がわからない初心者さんはとりあえず過去記事で紹介したサイトでお勉強してくださいね。それでは!

 

 

2019年7月16日追記:paiza公式ブログで動画解説してくれてました。

paiza.hatenablog.com

 

 

Pythonの勉強にオススメのサービス3つ。全部無料!

Python完全に初心者の人向け。全部無料!

たくさんオススメしても悩むだけなので、3つだけです。まずは始めよう!

 

1. まずはこれ。元々は転職サービスみたいだけど、様々な言語の初心者向け動画講座が受けられます。もちろんPythonも。ブラウザ上で実際に手を動かしながら覚えられるのでわかりやすいです。動画を見終わったあとは、スキルチェック問題にチャレンジ。S~Dランクまで問題があり、解けるとランキングがわかるので(翌日)ゲーム感覚で楽しめます。問題を解くためにわからないところを調べると勉強になって良いです。あとは模範解答が見れたら最高なのになー。

paiza.jp

2. 次はこれ。わかりやすく解説がまとまっています。paizaのスキルチェック問題を解いてる時にわからないことを検索すると出てきて何度もお世話になりました。そして気がついた。先にこのサイトを全部読めばいいんじゃね?と…。その後はpaizaのD問題がちゃんと解けるようになりましたとさ。めでたしめでたし。(C問題は問題によって解けたり解けなかったり)

www.python-izm.com

3. 最後はこれ。iPhoneアプリ(Androidアプリがあるかは知りません)で、全部英語ですが時間制限もないのでゆっくり読むとわかるはず。プログラミング言語の勉強するとどうしても英語の文章を読む機会が増えるので、それに慣れる意味でもオススメ。これも解説の後に穴埋め問題があり、ちょっとしたスキマ時間に勉強できます。

このアプリにはCode PlaygroundというPython実行環境がついていて、iPhone上でちょっとしたコードの動作確認したりするのにも便利です。

 

appsto.re

 

以上です。まだ勉強途中ですが、他人のコードを見て何がどうなってるかわかる程度にはなりました。

paizaのスキルチェック問題を解く時、最初に標準入力の受け取り方がわからなくてめちゃくちゃハマりました。それについてもまた今度。

(3/10追記:標準入力についての記事を書きました。)

 

hwhw.hatenablog.com

 

<2018/9/27追記:Progateのほうがオススメかも。楽しいよ。>

prog-8.com