【Pythonの基礎知識】3.input()関数

序文

前回の研究では、print() 関数を使用してコンピュータに簡単なコマンドを発行することを学び、Python でさまざまな種類のデータに触れるようになり、通信の主要なロジックを実装するために if 条件付き判断ステートメントを使用することを学びました。コンピューターで。

これらの学習を経て、Python の理解にまた一歩近づいたでしょうか? 以前は冷たかったコンピューターが、コミュニケーションをとることで仲良くなったように感じたことはありませんか?

ただし、Python コーディングをマスターするだけでは十分ではありません。さらに先に進みたい場合は、Python のコード ロジックをマスターし、正しい [データ] と合理的な [ロジック] を使用してコマンドを構築し、最後にコンピューターに [応答] して独自の情報を [入力] する必要があります。

そして、情報を送信するこの [応答] アクションが今日の焦点です。input() 関数は、Python との最初の対話型通信を完了し、信じられないほどの魔法を生み出します。

何を求めている?早速魔法の旅を始めましょう!

input() 関数

今日のコースでは、ホグワーツ魔法魔術学校から入学通知書を受け取ります。この入学通知書を参照して、input() 関数を使用して、コンピュータとの「双方向通信」の新しい章を開きます。

さあ、あなたが選択するときが来ました。以下のコードブロックの左側にある[実行]ボタンを実行し、[ターミナル]で選択した番号を[入力]し、Enterキーを押してください。

import time

print('亲爱的同学:')
time.sleep(1)

print('我们愉快地通知您,您已获准在霍格沃茨魔法学校就读。')
time.sleep(2)

print('随信附上所需书籍及装备一览。')
time.sleep(1)

print('学期定于九月一日开始。')
time.sleep(1)

print('鉴于您对魔法世界的不熟悉,')
time.sleep(1)

print('我们将指派魔咒学老师——吴枫教授带您购买学习用品。')
time.sleep(2)

print('我们将于七月三十一日前静候您的猫头鹰带来的回信。')
time.sleep(2)

print('校长(女)米勒娃·麦格谨上')
time.sleep(1)

print('那么,您的选择是什么? 1 接受,还是 2 放弃呢?')
time.sleep(2)

choice=input('请输入您选择的数字:')

if choice =='1':
    print('霍格沃茨欢迎您的到来。')

else:
    print('您可是被梅林选中的孩子,我们不接受这个选项。')

操作結果:

亲爱的同学:
我们愉快地通知您,您已获准在霍格沃茨魔法学校就读。
随信附上所需书籍及装备一览。
学期定于九月一日开始。
鉴于您对魔法世界的不熟悉,
我们将指派魔咒学老师——吴枫教授带您购买学习用品。
我们将于七月三十一日前静候您的猫头鹰带来的回信。
校长(女)米勒娃·麦格谨上
那么,您的选择是什么? 1 接受,还是 2 放弃呢?
请输入您选择的数字:1
霍格沃茨欢迎您的到来。

これは、input() 関数を使用したコンピューターとの最初の対話型通信です。

真の人間とマシンのインタラクティブなコミュニケーションを実現するための鍵は、「行きも帰りもある」ということです。たとえば、校長が魔法を学ぶためにホグワーツに来たいかどうか尋ねた場合、プログラムに質問コマンドを入力する必要があります: ホグワーツに行きたいですか?

プログラムが命令を受け取ると、すぐに校長の質問が一言一句コンピュータ画面に表示されます。「ホグワーツに行きたいですか?」

そして、人間がキーボードを使ってコンピュータに指示を出し、コンピュータが質問をモニタに表示して人間の答えを待つというプロセスが、input()関数によって実装されます。

ここに画像の説明を挿入します

では、input() 関数の具体的な使用法とその背後にあるロジックは何でしょうか? このレベルでは、input() 関数を 4 つの角度から 1 つずつ倒します。

input()関数の使用

まず、コードを通じて input() 関数がどのように使用されるかを見てみましょう。


input('请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:')

input() 関数は入力関数です。上の例の場合、次の 4 つの選択肢 [グリフィンドール、スリザリン、レイブンクロー、ハッフルパフ] の括弧内に行きたい家の名前を入力する必要があります。

したがって、関数の括弧内に質問を記述すると、input() 関数は質問をそのまま画面に表示し、ターミナル領域でこの質問に対する回答を待ちます。

しかし、なぜ端末に答えを入力するのでしょうか? 入れなくても大丈夫ですか?

実際、input() 関数は現実の世界とコードの世界を繋ぐドアとして考えることができます。

コードの世界から質問が渡され、それに対して私たちが答えない場合、入力を待つ input() ドアは常に開いたままになり、答えが送信されるのを待ちます。

情報を入力すると、input() ドアが閉じ、次のコマンドの実行を続けます。

次に、input() 関数の使用方法をまとめてみましょう。

ここに画像の説明を挿入します
次に、input() 関数の魅力を実際に体験してみましょう。
1. コードを追加してください。

input('请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:')

それを自分のローカル コード ボックスにコピーします;
2. [実行] をクリックした後、右側のターミナルに選択内容を入力します;
3. 答えを入力した後、Enter キーを押します。

どうでしょうか?答えを入力してEnterキーを押すと、入力した情報以外は何も表示されませんか?しかし、プログラムはエラーを報告しません。これはなぜでしょうか?

コードはコマンドを 1 行ずつ実行することを繰り返し強調しました。そのため、input() 関数が通過してドアが閉じられたとしても、input() 関数の下には他のコマンドがないため、当然結果は得られません。

ただし、入力した回答は失われるわけではなく、コンピューターによってプログラムに保存されます。

では、プログラムの海から入力したばかりの答えを見つけて、それを使って大学が私を歓迎していることを表現するなどの結果を出したい場合はどうすればよいでしょうか?

请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字: 拉文克劳
#提出的问题

拉文克劳学院欢迎你,小萌新!
#显示的结果

まだコーディングには急がなくて、古いルールに従って、まず思考ロジックを整理しましょう。まず、大学があなたを歓迎する準備を整えるためには、あなたがどの大学を選んだのかを知る必要があるため、大学はまずあなたのお気に入りの大学に関する情報を収集する必要があります。

次に、私たちの考え方の最初のステップは、input() 関数を使用して情報を収集することです。

input('请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字: ')
#运用input函数搜集信息

しかし、収集したデータを「大学へようこそ、小さなかわいい新入生!」で結合して結果を印刷したい場合、問題が発生します。input() 関数を使用して情報を収集しましたが、この情報をプログラムの海から取得し、データの結合を実行するにはどうすればよいでしょうか?

これには、input() 関数の 2 番目の知識ポイント、つまり関数結果の割り当てが含まれます。

input()関数の結果の代入

まず第一に、変数に値を割り当てることができるため、データを抽出したいときに、変数名を直接出力するだけで、プログラムのデータのメモリが起動されます。

この割り当てロジックは、input() 関数でも機能します。入力結果を任意のタイミングで抽出するという目的も代入によって達成できます。しかし、論理的なレベルでは、方向転換する必要があります。

たとえば、次のコード文字列を例として挙げます。

name = input('请输入你的名字:')
#函数赋值

input()関数に値を代入しているように見えますが、実際にはinput()関数の実行結果(収集した情報)を変数名に代入しています。

平たく言えば、名前ボックスに入力するのは、input() 関数で尋ねられた質問ではなく、input() 関数を通じて収集した他の人の回答です。

このようにすれば、ターミナルに何を入力しても、答えが何度変わっても問題ありません。input() 関数によって尋ねられた質問に対する回答である限り、それは変数に格納されます。変数の出力を待っている間に、答えが抽出され、ディスプレイに表示されます。

コードの世界では、端末に表示されるこれらの情報/回答/データは、関数に入力する内容である入力値と呼ばれます。

では、自分で試してみましょう:

input('次の 4 つの選択肢の中から行きたい家の名前を入力してください [グリフィンドール、スリザリン、レイブンクロー、ハッフルパフ]: ') の結果を name に代入し、変数名を出力して、入力した答えが表示されます。[キーポイント:代入、input()関数、print()関数]

name=input('请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:')
print(name+'学院欢迎你!')

操作結果:

请在以下四个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:格兰芬多哈
格兰芬多哈学院欢迎你!

先ほど端末に入力した情報、大学名(全員が異なる内容を入力します)が入力値となります。

同時に、いつでも便利に入力値を抽出するには、input() 関数の結果を変数名に代入する必要があります。

情報を収集する道を切り開き、取得した情報に値を割り当てたら、最後のステップに進み、最終結果を出力できます。

次に、別の操作を披露してください: 1. 入力を要求するには、次のオプションから最も所有したい魔法のアイテムを選択してください [エリーゼの鏡、タイムターナー、空飛ぶほうき、透明マント]:; 2. results 変数 magic に値を代入する; 3. 結果を出力する magic+' は私が一番手に入れたい魔法です!'[キーポイント: 代入、input() 関数、変数の結合、print() 関数]

参考回答:

magic=input('请在以下选项【厄里斯魔镜;时间转换器;飞天扫帚;隐形斗篷】中,选择出你最想拥有的魔法物品:')
print(magic+'是我最想拥有的魔法!')

操作結果:

请在以下选项【厄里斯魔镜;时间转换器;飞天扫帚;隐形斗篷】中,选择出你最想拥有的魔法物品:隐形斗篷
隐形斗篷是我最想拥有的魔法!

ここで重要な点があるのですが、コードを理解する際、脳内で考える順序としては、まず情報を収集し、次にinput()関数の結果を変数に代入します。

ただし、仕様を記述して情報の欠落を防ぐためには、コードの記述形式に従って、最初に input() 関数の結果に値を代入する必要があります。

ここに画像の説明を挿入します
これまでに学んだ知識に基づいて、input() 関数を使用するにはどうすればよいでしょうか?

まず、input() 関数の結果に値を代入し、次に input() 関数を使用して情報を収集し、最後に print() 関数を使用して結果を出力する必要があります。

別の図を使って直感的にまとめてみましょう。
ここに画像の説明を挿入します

input() 関数の包括的な使用シナリオをマスターしたので、このレベルの最初にあるホグワーツからの手紙のコードを振り返ってみましょう。

print('那么,您的选择是什么? 1 接受,还是 2 放弃呢?')

choice = input('请输入您的选择:')
#变量赋值

if choice == '1':
#条件判断:条件1
    print('霍格沃茨欢迎您的到来。')
#条件1的结果

else:
#条件判断:其他条件
    print('您可是被梅林选中的孩子,我们不接受这个选项。')
#其他条件的结果

では、この一連のコードはどのように書かれたのでしょうか?

思考の観点から簡単に言うと、私が 2 つの選択肢を与え、あなたが 1 つを選択し、それに対応する結果を示します。

したがって、コードの最初のステップは、input() 関数を通じて値を割り当て、質問することです。

choice = input('请输入您的选择:')
#变量赋值

2 番目のステップでは、答えに基づいて条件判断を行う必要があります。答えが 1 の場合は条件 1 の結果が表示され、他のオプションが選択された場合は他の条件の結果が表示されます。

choice = input('请输入您的选择:')
#变量赋值

if choice == '1':
#条件判断:条件1
    print('霍格沃茨欢迎您的到来。')
#条件1的结果

else:
#条件判断:其他条件
    print('您可是被梅林选中的孩子,我们不接受这个选项。')
#其他条件的结果

コードは完成しましたが、疑問が生じます。なぜ if 条件での変数選択が文字列 '1' なのかということです。文字列形式ではなく、整数 1 の場合、結果はどうなりますか?

次に、上記のコードをコピーして、if 条件を文字列形式の「1」から整数形式の 1 に変更してください。[実行] をクリックした後、ターミナルで 1 を入力し、実行結果を確認します [ヒント: [実行] をクリックして → 1 を入力します]

choice=input('请输入你的选择:')
if choice==1:
    print('霍格沃茨欢迎您的到来')
else:
    print('您可是被梅林选中的孩子,我们不接受这个选项')

操作結果:

请输入你的选择:1
您可是被梅林选中的孩子,我们不接受这个选项

どうでしょうか?1 を入力しました。表示された結果は、else 条件の下での結果です。「あなたはマーリンによって選ばれた子供です。このオプションは受け入れられません。」「?」

どうしてこれなの?条件付きオプションに入力したのは数字の 1 ですか? 対応する結果が表示されないのはなぜですか?

ここで、input() 関数の 3 番目の知識ポイントに到達します。

input()関数のデータ型

さて、まずこのコード グループをコンピューター言語のロジックから 1 行ずつ分解してみましょう。

choice = input('请输入您的选择:')
#变量赋值

if choice == 1:
#条件判断:条件1
    print('霍格沃茨欢迎您的到来。')
#条件1的结果

else:
#条件判断:其他条件
    print('您可是被梅林选中的孩子,我们不接受这个选项。')
#其他条件的结果

そこで、まずコードの最初の行にある代入ステートメントを見てみましょう。

choice = input('请输入您的选择:')
#变量赋值

まず全体を見てみましょう このコードが意味することは、input() 関数を使用してデータを受け取り、そのデータを変数選択肢に割り当てるということです。

次に、このコード行の各部分が何を表しているのかを確認してみましょう。

ここに画像の説明を挿入します
input() 関数の場合、どのような答えを入力しても、整数 1234 を入力するか、「透明マントは私が最も持ちたい魔法です」という文字列を入力するかに関係なく、input() 関数の入力値 (収集された回答) , 常に [文字列] 型に変換される [必須] になります。(Python3の固定ルール)

信じないで?最初のレベルで学んだ type() 関数で確認してみてはいかがでしょうか?

choice = input('请输入1或2:')
print(type(choice))

操作結果:

请输入12:1
<class 'str'>

入力した整数[1]または[2]は、強制的に['1']または['2']の文字列に変換されます。

したがって、ターミナル領域に何を入力しても、input() 関数の入力値は [string] でなければなりません。

このように、代入演算子 [=] を使用して input() 関数の文字列結果を変数選択に割り当てるため、この変数も文字列型である必要があります。

ここに画像の説明を挿入します
これで、変数選択のデータ型が文字列であることがわかりました。次に、背後にあるコードを見てみましょう。

まず、コードの最初のブロックにある if 条件ステートメント [if Choice==1] を見て、それを逆アセンブルしてみましょう。

ここに画像の説明を挿入します
レベル 2 で学習した条件判断の知識に基づいて、最初の行の if 条件を次のように解釈できます。変数の選択が整数 1 に等しい場合、この if 条件の結果を実行します。

ここに画像の説明を挿入します
今回は何か問題は見つかりましたか?input() 関数を分解したときに説明した変数選択のデータ型を覚えていますか?

最初の変数代入ではinput()関数の入力値が文字列で'1'も文字列ですが、if条件の判定になるとif条件は[choice == 1] - 1となります。引用符は整数型です。

ここに画像の説明を挿入します

以上です。入力する情報は常に文字列であり、choice は文字列型で、1 は整数型であるため、当然それらは等しくあり得ず、条件 [choice == 1] は成立せず、実行することしかできません。次の操作 else - —Print 「あなたはマーリンによって選ばれた子供です。このオプションは受け付けません。」

さあ、あなたの魔法を見せてください。次のコードの if 条件のエラー文を文字列型と同じ正しいものに変更して実行してください。

choice = input('请输入您的选择:')
#变量赋值

if choice == 1:
#条件判断:条件1
    print('霍格沃茨欢迎您的到来。')
#条件1的结果

else:
#条件判断:其他条件
    print('您可是被梅林选中的孩子,我们不接受这个选项。')
#其他条件的结果

参考回答:

choice=input('请输入你的选择:')
if choice=='1':
    print('霍格沃斯欢迎您')
else:
    print('您可是被梅林选中的孩子,我们不接受这个选项')

操作結果:

请输入你的选择:1
霍格沃斯欢迎您

これで、if 条件のデータ型を変更してコードを実行する方法がわかりました。習ったことがありますか?

したがって、次のようなコードがあるとします。

age = 59

choice = input('请你猜一下斯内普教授的年龄:')

if choice == age:
    print('猜对惹~你好厉害! ヽ✿゜▽゜)ノ~~~')

elif choice < age:
    print('斯内普的提示:你猜小了(;´д`)ゞ。。。。')

else:
    print('斯内普的提示:乃猜大了惹(>﹏<)~~')

「実行」をクリックしてデータを入力すると、すぐにエラーメッセージが表示され、地面にこすられます。では、スネイプ教授のコードのエラーの原因はどこにあるのでしょうか?

これを 1 行ずつ逆アセンブルします。コードの 1 行目の代入ステートメントでは、変数 age は整数型であり、2 行目の変数選択は文字列型です。これら 2 つの変数は型が異なるため比較できません。

どうでしょう、正しく答えられましたか?次に、画像を使用してさらに深めてみましょう。これは将来非常に役立ち、非常に重要な知識ポイントでもあります。

ここに画像の説明を挿入します
この例では、選択肢は 2 つだけでした。しかし、1、2、3、4...365 のオプションがあると仮定すると、データ型変換が正しいかどうかに関係なく、一重引用符を 1 つずつ入力するのは時間がかかりすぎます。

そこで、すべての入力値のデータ型を一度に整数に変更する、より簡単で省力的な方法が必要になります。

input() 関数の結果の強制変換

でも先生、input() 関数で収集される情報は常に文字列だと言いませんでしたか? 整数に変更することもできるのでしょうか?

そうです、input() 関数の入力値は、特定の状況下では整数になることがあります。では、文字列を整数に変換する方法を覚えていますか?

右?int() は、レベル 1 のナレッジ ポイント強制型変換であり、文字列を整数に強制的に変換できます。

int() 関数を使用すると、入力内容を input() 関数のソースからの整数に変換できます。

choice = int(input('请输入您的选择:'))
#将输入值强制转换为整数,并赋值给变量choice

ただし、このコード文字列は、input() 関数全体をキャストしているように見えます。

しかし、実際には、input() 関数で得られた結果に対して強制変換を実行し、強制変換の結果をchoice という名前の変数ボックスに代入します。

このようにして、if 条件が整数であっても、プログラムは正確に実行できます。

では、input() 関数の結果の強制変換はいつ使用するのでしょうか?

アイデアはシンプルで、必要な答えが年齢などの数値である場合です。

age = int(input('猜一猜巫师的『法定成年年龄』是几岁,请输入:'))
#将输入的岁数(字符串),强制转换为整数

if age > 17:
#当年龄(整数)大于17(整数)时
    print('哈哈,居然比这个年龄还要小呢!')
#打印if条件下的结果

elif age == 17:
#当年龄(整数)等于17(整数)时
    print('正确!我猜你是个巫师啦~')
#打印if条件下的结果

else:
#当年龄(整数)小于17(整数)时
    print('呜呜,这个年龄~我还是个宝宝呢,正确答案是17岁哦')
#打印else条件下的结果

別の例としては、入力する必要がある情報が時間、給与、その他の数値である場合です。

money = int(input('你一个月工资多少钱?'))
#将输入的工资数(字符串),强制转换为整数

if money >= 10000:
#当工资数(整数)大于等于10000(整数)时
    print('土豪我们做朋友吧!')
#打印if条件下的结果

else:
#当工资数(整数)小于10000(整数)时
    print('我负责赚钱养家,你负责貌美如花~')
#打印else条件下

次に、見えない翼を振り上げて、上記の月給コードに「給与が5,000以上10,000未満の場合」という条件を追加してください。印刷結果: [私たちは皆、レンガ運び業者です。]を記述し、以下の部分に条件を追加した上でコード全体を記述します。[重要なヒント: 3 つの条件が共存する場合は、if…elif…else… ステートメントを使用してください]

参考回答:

money = int(input('你一个月工资多少钱?'))
#将输入的工资数(字符串),强制转换为整数

if money >= 10000:
#当工资数(整数)大于等于10000(整数)时
    print('土豪我们做朋友吧!')
#打印if条件下的结果

elif 5000 < money < 10000:
#当工资数(整数)大于5000(整数)小于10000(整数)时
    print('我们都是搬砖族。。。')
#打印elif条件下的结果

else:
#当工资数(整数)小于等于5000(整数)时
    print('我负责赚钱养家,你负责貌美如花~')
#打印else条件下的结果

操作結果:

你一个月工资多少钱?8000
我们都是搬砖族。。。

最後に、input() 関数のデータ型強制に関する知識ポイントをまとめてみましょう。

ここに画像の説明を挿入します
したがって、このレベルの焦点である input() 関数の知識ポイントをすべて紹介しました。最後に、input()関数の重要なポイントを整理しましょう。

input() 関数の知識ポイントのまとめ

ここに画像の説明を挿入します
さて、よく思い出してください。この時点で、input() 関数の使い方と、前に学習した変数、代入、条件判断、強制型変換を input() 関数で組み合わせる方法を知っていますか? 復習して使用しました。また?パソコンとの双方向通信は完了しましたか?

総合的なレビュー

最初に、Python の世界で最も単純で最も一般的に使用される関数である print() 関数について学びました。

この関数は単純そうに見えますが、深く掘り下げてみると、この最も単純な印刷関数にも秘密があり、プログラミングの世界で最も基本的な操作ロジックが含まれていることがわかります。

ここに画像の説明を挿入します
ただし、コンピュータとの双方向通信という目的を達成したい場合は、コンピュータの通信言語も習得する必要があります。

コンピューターが私たちの言っていることを理解した場合にのみ、正しいフィードバックを与えることができます。

ここに画像の説明を挿入します

私たち人間と同じように、コンピュータの操作にも形式論理が必要です。レベル 2 では、コンピュータと通信する方法の論理を習得しました。

ここに画像の説明を挿入します

言語と論理によって、私たちはコンピュータと対話的に通信することができます。

そして今日のレベルに達し、input()関数を学びました。

ここに画像の説明を挿入します
しかし、これらの知識ポイントを学んだ後、ホグワーツの手紙のようなコードなど、コードを自分で書くにはどうすればよいでしょうか? コードグループの一般的な形式は何ですか?

ここに画像の説明を挿入します
これら 4 つのレベルを通過した後、振り返ってみて、自分でも気づかないうちに非常に多くのことを学んでいたことに気づきましたか? まったく新しい世界に触れることができました。

さあ、あなたも最終的には夢の上司になれます!

おすすめ

転載: blog.csdn.net/qq_41308872/article/details/132687615