0. はじめに
参考書を読んで理解できてもいざ自分でコードを書こうとすると上手く行かないことがよくあります。一緒にアウトプットしませんか?
毎日1問、Pythonの問題を出題します。出題範囲は特に定めていませんがはじめの1ヶ月くらいは『入門Python3 第2版』の第1~11章までのことが分かれば解ける問題にしたいと思います。「こういう問題を作って欲しい」などのリクエストがございましたら初心者ながら頑張って作問します。また「別解を思いついた」、「間違えを見つけた」などがありましたら遠慮なくコメント欄にて教えて下さい。記事を執筆している当人もこの記事を読んでくださった方も新たなことを学ぶことができるので。
1. 問題
以下のように、数字の1を入力すると「私も!」が、数字の0を入力すると「そいういときもあるよ」と表示されるプログラムを太郎君は作成した。しかし1と0を入力しても「正しい数を入力してください」と表示されてしまう。太郎くんに代わってプログラムを直そう!
print("pythonが楽しいと思う人は1を、楽しくないと思う人は0を入力してください。")
ans = input()
if ans == 1:
print("私も!")
elif ans == 0:
print("そいういときもあるよ")
else:
print("正しい数を入力してください")
2. ヒント
ansの型がどうなっているか確認してみましょう。
3. 解答
print("pythonが楽しいと思う人は1を、楽しくないと思う人は0を入力してください。")
ans = int(input()) # int()を追加する。
if ans == 0:
print("私も!")
elif ans == 1:
print("そいういときもあるよ")
else:
print("正しい数を入力してください")
4. 解説
input()関数を用いて入力された値は文字列になります。今回の問題では入力された値が整数の0か1かを判断したいのでansを文字列から整数に変換するためにint()関数を追加する必要があります。
5. おまけトーク
プログラミング習いたての人に説明するのって難しいですよね。例えば今回の記事も最初は「input関数の戻り値は文字列になります。」のように書こうとしたのですが、「戻り値って何?」となりそうだなと思いやめました。「戻り値なんて分かって当然だろ。初心者だからといってバカにするな!」と言われそうですが、念には念を入れました。