キーボード入力した値をシステムに反映させたいんだ…。
ロールプレイングゲームで、入力した主人公の名前を反映させるみたいに、
Pythonでも入力した値を反映させる方法は無いの?
あります!
簡単にできる方法を紹介いたします!
実践でよくある「入力した値で認証」「入力した値を書き込む」「入力した値で計算」
といった方法も併せて解説いたします!
Pythonでキーボード入力した値を受け取る方法を、
Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
Pythonでキーボード入力した値を受け取るには
「input」を使います。まずは実行見本をどうぞ。
実行見本
※表示内容はエディターによって異なります。
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
name = input('名前を入力してください')
print('よくぞ来た!勇者'+name+'殿!')
解説:キーボード入力した値を受け取る
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
>>1.name = input(‘名前を入力してください’)
上記一文でキーボード入力した値を受け取る(変数「name」に保存する)ことができます。
【 変数 = input(‘何を入力すべきかの補足説明’) 】
()内の補足説明は無くても動きますが、何かしらの説明があった方が親切かと思います。
実行時は下図のように入力画面が表示されます。
名前を入力して、「enter」キーを押します。
下図のように表示されれば、受け取り成功です。
>>2.print(‘よくぞ来た!勇者’+name+’殿!’)
キーボード入力で受け取った「name」を「print」で表示しています。
実践例
ここからは、実践でよくある使い方を3つ紹介いたします。
- 認証
- 書き込み
- 計算
できるだけ簡単なコードにしております。ご了承ください。
また、前項と同じくわかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
1:認証
名前の認証だと思ってください。
キーボード入力された名前が登録と同じなら「認証しました」
違うなら「認証に失敗しました」
と表示させるコードです。
「認証」の全コード・実行結果
name = input('名前を入力してください')
if name == 'utatane' :
print('認証しました')
else:
print('認証に失敗しました')
「認証」の解説
「input」で値を受け取ったら、登録の名前と照合します。
照合には「if」を使います(簡単に解説)
入力されて受け取った「name」が、登録の名前「utatane」と同じなら「認証しました」、違う(else)なら「認証に失敗しました」と表示させます。
2:書き込み
「キーボード入力された名前をエクセルのシートに書き込む」というコードです。
「書き込み」の全コード・実行結果
import openpyxl
name = input('名前を入力してください')
wb = openpyxl.workbook()
ws = wb.active
ws['A1'] = name
wb.save('output.xlsx')
▼「output.xlsx」
「書き込み」の解説
キーボード入力された文字を「openpyxl」で新しく作ったブックのシートに書き込みします。
openpyxlの基礎解説や、新しいブックの作り方解説は下記記事をご参考ください。
3:計算
キーボード入力された値で計算するには、少し工夫が必要です。
まずはコードと実行結果を見ていきましょう。
「計算」の全コード・実行結果
price = input('金額を入力してください')
qty = input('個数を入力してください')
ttl = int(price) * int(qty)
print(str(ttl) + '円です')
「計算」の解説
入力された金額を「price」、個数を「qty」に入れます。
合計金額「ttl」を出すため計算するのですが、このままでは計算できません。
キーボード入力された値は「str型(文字列型)」なので、計算できないのです。
というわけで、計算できる「int型(整数型)」に変換しています。
わかりやすく説明すると、
「int型は英語」、「str型は日本語」という感じでしょうか。
str型(日本語)の「1000」は、見た目では「1000」ですが、
内部的には漢字の「千」になっていると思ってください。
「千」×「五」。ちょっと計算しにくいですね。
「三千四百十二 × 二」だと、もはや計算できないですよね(3412×2)
なのでstr型(日本語の漢字)では計算できないのでint型(英語)に直していると思ってください。
printで表示させるために、「ttl」をまたstr型に戻しています。
これは、それぞれの「型」を合わせるためです。
この時、「ttl」はint型、その後ろに表示させる「円」はstr型です。
int型とstr型など、型が違うものを結合して表示することはできません。
なのでint型をstr型に変換して、型を合わせて表示させています。
(str型をint型に変換することはできません)
わかりやすく説明すると、
「int型(英語)とstr型(日本語)は並べて単語にできない」というように考えてください。
「5右衛門」「34郎」「純1」だとちょっと分かりにくいですよね。
なので、int型(英語)とstr型(日本語)は結合できない(通じないから)と思ってください。
うまく動作しない時
エラーが出る
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
TypeError: can’t multiply sequence by non-int of type ‘str’
「str型は計算できません」というエラーです。
今回解説した「実践例-3」のように、int型に変換してから計算してみてください。
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
「int型とstr型は結合できません」というエラーです。
今回解説した「実践例-3」のように、int型のものをstr型に変換してから結合してみてください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
Pythonでキーボード入力した値を受け取る方法を解説いたしました。
入力した名前の商品のみを抽出したり、入力した金額以下の商品をピックアップしたりもできるので、ぜひご活用ください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとう