2022情報I 2学期
第15回 授業の振り返りより
質問より
- 対話型のゲームは自分の応答が選択肢になっているものがほとんどだと思いますが、自由な応答に対応するのは難しいのですか。
- コンピュータは何も理解しないので、すべて指示する必要がありますよね。自由な応答に対応するには、すべての文章に対して対応できるようプログラムを書く必要があります。品詞分解や意味解析からプログラムを書く必要がありますよね。自分なりに考えて書いてみてください。
- while文を用いるときに、if文と組み合わせてループする回路を作りたいのですがその書き方がわからなくて困っています。for文とは違い回数制限を設けない方法で書きたいのでwhile文について詳しく聞きたいです。
- while文はwhile 条件式: と書きます。while文の下のインデントのある行は、条件式を満たしている間繰り返して動作します。while文はこのループを抜けるための仕組みを入れておかないと無限ループになります。Pythonの場合、よくわからなければネットで検索すると丁寧な説明が出てきますよ。
- 一番使いやすいと思うプログラム言語はなんですか?
- どれもそれなりに面倒ですよ。自分で書くなら一番使い慣れているVBAですけど、授業で教えるのはPythonだと思います。
- 情報オリンピックで毎回二問目までしか解くことができません。三、四問目が解けるようになるにはどういった学習を主にすればよいでしょうか。
- 二問目までできることはとても大切なことです。三問目・四問目はそれなりに難しいです。問題文にちょっと癖があるので、どういうことか掌握し、アルゴリズムを考えるのが難しいかもしれません。過去問を解いてみることをおすすめします。
- Python の他の言語を今後勉強する予定はありますか?
- Pythonはまだごく初級しかやっていませんけど、他のプログラミング言語やりますか?日本語で言えばまだ小学校入学前レベルなんですよ。とはいえ、目的によっては別のプログラミング言語を使う可能性もあります。
- グーグルコラボラトリーでは、なぜifの後のインデントが半角2マスでも作動するのですか。
- Pythonではインデントは4スペースが強く推奨されています。推奨ですから、4で無くてもいいのです。2なら2で統一されていれば良いのです。ちなみに、Googleコラボラトリーも本来4スペースなのですが、最初に間違った作り方で作り始めると2となることがあるようです。
- 例えば、print('年齢は',16,'歳です')というプログラミングをしたときに、はと16、16と歳の間に微妙な隙間ができるのはどうにかならないのですか。なぜ隙間ができるのですか。
- カンマで区切って別のものを表示しているので、それぞれの間に半角スペースが入ります。つなげて表示するには、つなげた文字列を作っておいてカンマを使わずに表示します。例えばprint(16,'才')とすると 16 才 と表示されますが、print(str(16)+'才')とすれば 16才 と表示されます。
- 最近発売されている(スプラとか)のゲームのプログラミングの行数ってどのくらいなのでしょうか?
- 知りません。そんな大規模なものを作ったことがありません。ぷよぷよプログラミングの上級者コースは1015行だそうです。商用プログラミングよりも少ないと思います。
- Pythonで作るとき、先生ならどんな面白いゲームを作りますか?
- 面白いかどうかはアイディアの問題ですから、なんともいえませんね。今回の条件に合うものであれば、夏休みに配布した二進法の計算問題プログラムなんて、実用的で便利で、私にとっては面白いプログラムだと思いますけど。
- cnt関数はプログラムの動作そのものの回数についてを数えるようなことは出来ますか?
- cntはcnt()ではないので、関数ではありません。ここはしっかり見分けられるようになってください。cntはただの変数です。プログラムの動作そのものって何を指しているのでしょうかね。プログラムの行が何行実行されたかということであれば、ループの中にカウンタをおいて、繰り返している行数をかければ計算できますよね。
- 数当てゲームを改良して、コンピュータと対戦するようにしたいと思っています。ですが、自分の予想の数が外れた後にどうやってコンピュータが予想した数を表示するか悩んでいます。どうしたらいいですか?
- print()関数で表示すればいいですよね。print()関数は何回も使えますよ。
- randomを使って、数字ではなく条件が選ばれるようなプログラムは作成できますか?もしくは、ランダムにprintされるものを変えられますか。例)print("1→1→2→3") print("3→6→9→12")この二つがランダムに選ばれるようにしたい
- 選ばれるものをリストにしておいて、リストの添え字に乱数を入れれば、取り出されるものはランダムになりますよね。実はrandomモジュールにはrandom.choice()というリストから1つ選ぶ便利な関数があります。
感想より
- サイコロの目を当てるゲームを作ろうとしていて、失敗した時に続けるかやめるかの選択を出そうとしたとき、上手く元の数当てに回帰させるのが難しかったが、breakを使うことで命令が重なってしまうことがなくプログラムを動作させられた。
- 覚えたことを積極的に使ってみることは大切ですね。
- シンプルで面白いゲームを考えるのがなかなか出来なかった。複雑なルールならいくらでも工夫できそうだが、それをプログラミングできるような技術がないので悩んだ。
- できる技術とアイディアをどう組み合わせるかというのが、結構難しいかもしれませんね。課題としてはアイディアに合わせてプログラミングを深く学んでもらえるといいんですけどね。
- プログラムを制作者側が見やすいように#で途中途中でコメントをつけると良いと考えた。
- そうですね。コメントをつけることはとても大切なのですが、授業で説明していないんですよね。というのも、授業で作っているプログラムは目的がはっきりしていて、とても短いもので、コメントをつけるほどのものじゃ無いからなんです。
- 自分は、規則のある文字列の全体集合から一つだけ抜けているものを探す、というゲームを現在考えている。このゲームにおいて、文字列の要素をランダムに一つ抜くということに乱数を使用した。こうすれば、複数回プレイしても、毎回答えが変わるようになる。 だが、リストの中の要素を、random randint で生成した数と対応させて、その要素一つだけを除いた状態の集合を表示するためのプログラムを作ることが困難だった。しかし、インターネットの文献を調べ、授業では扱っていなかった romove を使うことによって、この問題を解決することができた。今日の授業内でここまでを作り終えることができて良かった。 また、時間に余裕があれば、ゲームとしての面白さを出すためにタイマーを組み込みたいと考えているが、可能な範囲で模索してみようと思う。
- 授業では本当に基本的な関数しか扱っていないので、具体的にやりたい操作があれば、検索すると適切な命令が見つかると思います。で、上手くいくと、またやりたいことが出てきて、検索して、動いてと、プログラミングが楽しい沼にはまっていきます。
- 同じ処理を作ろうとしても色々な考え方ができて、これでも同じように動くかな?と試してみると何通りも書き方ができた。計算の回数を少なくできたり、応用が効いたりするものに改善できるといいと思った。そういうアイディアを思いつくと面白い。
- 同じ機能を持つプログラムでもいろいろな書き方ができますよね。繰り返しもfor文とwhile文のどちらでも書くことができます。いろいろ試してプログラムを作っていると、プログラミングの力がついてきます。
- フラッシュ暗算のようなものを作ろうと思ったが、一度出力した文字の削除方法が分からなかった。
- 一度出力した文字を削除するには、画面を制御しなければなりません。そこまでやるにはまだまだ学習が足りません。
- 自宅で完成までもっていったが、時間がたてばたつほどforを用いたプログラムのとってつけた感が増してきた。最終的にforを用いていなかったプログラムにもfor文を追加したが、もうなんかみんなになんていわれるかわかんない。
- 制作の条件があるので、条件に合うようなプランを最初に考えないと、上手く構成できない可能性がありますよね。プログラミングに限らず、最初に条件を整理して理解することが重要ですよね。
- やはり発展的なプログラミングはできないと思った
- 教科書の見出しが悪いんですけど、発展的といってもまったく発展的でなく、基本の組み合わせなんです。できないと決めてしまうのは簡単ですが、これができるようになることが求められています。十分な練習をしましたか?十分な準備をしましたか?課題としても不必要に難しいものではありません。諦めずに取り組む必要があります。
- whileの使い方がいままでよく分かってなかったけど、プログラミングを繰り返して試行錯誤してるうちにifと forが合体したような役割をするとわかり、自分のプログラミングにも活かすことができた。
- 自分なりに試行錯誤してみることは大切ですよね。既知のことを組み合わせながら理解しているところがとても良いと思います。
- 今日のプログラミング作成では\nを使うことで見やすく文章を表示することができました。ただ動作するだけではなく、見やすさもしっかりと考えていきたいと思います。
- \nは改行コードですね。調べましたね。Pythonは人気のプログラミング言語なので、調べるといろいろ出てきます。
- 今回、pythonを使ってプログラムを書き簡単なゲームを作りました。今回感じたことはプログラムは、上から順に実行されることです。とても当たり前のことですが、このことを忘れて、絶対に正解できないプログラムが完成してしまいました。唐突に不具合が起きるととてもプログラミングが面白く感じました。
- 1と0のフラグで条件分岐して動作を交互に変更したい時は、カウンタを使って、偶数か奇数かを判断する方がfor文に組み込みやすいことが分かった。printで出力した文字列を消去するためにIPython.displayのclear_output関数を使ったが、画面を消去するタイミングで一瞬白い画面になり、見にくかった。公式ドキュメントを見ると引数にTrueを指定することで描画されるまで消去を待ってくれることが分かった。実際に指定してみると、全く違和感なく動くようになった。困った時はドキュメントを読んでみることが大切だと思った。
- random関数の種類をいろいろ調べてみたら、randintだけでなく、他にもさまざまな乱数があって面白かった。
- エラーをしないようにプログラミングをするのではない、エラーを直せばいいという言葉が心に響いた。
- グラフを書くプログラムを知っていたので、ランダムでグラフを提示してそれを、当ててもらうプログラムを作ることにした。二次関数と一次関数だけでは物足りないので三次四次も取り入れてみたい。
- プログラミングはアルゴリズムが大切だということが実感できた。スペース一つでプログラムが動かなくなるということが本当にプログラムは命令に忠実なんだなと思った。
- プログラミングは失敗してこそ、完成へと近づけることがよくわかった。少し楽しくなってきたのでもう少し頑張りたい。
- 何回繰り返すかを分かっているときはforを使ったほうがいいけれど、何回繰り返すかが分からないときはwhileを使ったほうがいいということに気づいた。
- 数あてのプログラミングをつくるときに、ラスト一回ときに文字を表示させたいと思い、elseで組み込んだが、ifで新しく反復構造の中にいれるのだとエラーを通して分かった。エラーをしていいと思って試すと、プログラムを組み立てるハードルが低くて工夫していくのが楽しかった。プログラミングを書いているうちに、()のなかに変数を入れることや、どこまでがforとして適用されるのか分かってきた。基礎力チェックで間違えたところの原因を探るよりもはるかに定着力があった。
- 前もってプログラムを作成していたので、今回の授業は最終確認等に使うことができた。また、ifやelifを用いて一個ずつ書いていたのを、リストでまとめることができた。このことから、同じことを実行できるプログラムであってもより分量を少なく美しくしていくのも大切だなと感じた。
- 友達にアドバイスをもらってよりいいものになった。他人に見てもらうことの大切さを感じた。
自己評価集計
ワードクラウド
- 3つのキーワード
- 感想や気づき
テキストマイニング 無料ツール by ユーザーローカル
前のページに戻る