Skip to content

Instantly share code, notes, and snippets.

@takatakamanbou
Last active October 25, 2020 00:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takatakamanbou/69e48cac7cc215031c36f7729eecb208 to your computer and use it in GitHub Desktop.
Save takatakamanbou/69e48cac7cc215031c36f7729eecb208 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "qqyvt9JCC8Sc"
},
"source": [
"# AProg2020 ex05 課題A\n",
"\n",
"https://www-tlab.math.ryukoku.ac.jp/wiki/?AProg/2020/ex05#kadaiA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 準備\n",
"以下のセルの内容を指示通り修正して実行してください.指示に従っていない場合,課題のチェックはされません."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"ename": "AssertionError",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-1-6eb7f89973c6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmyID\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mstr\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmyID\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mdidItMyself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAssertionError\u001b[0m: "
]
}
],
"source": [
"myID = '' # この変数に文字列として自分の学籍番号を書く\n",
"# この notebook を自分のPC環境で自分がやったというひとは, \n",
"# 以下の False を True に書き換える\n",
"didItMyself = False\n",
"\n",
"### このセルのここから下はいじってはいけません ###\n",
"\n",
"\n",
"assert type(myID) == str and len(myID) > 0\n",
"assert didItMyself\n",
"\n",
"import sys\n",
"import os\n",
"import getpass\n",
"print(sys.platform)\n",
"print(getpass.getuser())\n",
"print(os.getcwd())\n",
"print(myID)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## P1\n",
"数あてゲームを作ろう.以下が正しく動作するよう修正しよう.無駄な条件判定はしないように書こう.動作確認しよう.当たるまで実行した結果がわかる状態で提出しよう.\n",
"\n",
"- `random.randint()` についてはこちら: https://docs.python.jp/3/library/random.html#random.randint\n",
"- セルの実行を中断したい? [ex03A](https://www-tlab.math.ryukoku.ac.jp/wiki/?AProg/2020/ex03#kadaiA)の「注意」見てね"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import random # random モジュールの読み込み\n",
"\n",
"nmax = 255\n",
"n = random.randint(1, nmax) \n",
"print(\"1以上{:d}以下の数を選んだよ.当ててみ.\".format(nmax))\n",
"\n",
"cnt = 0 # 数を入力した回数をカウント\n",
"\n",
"while True:\n",
" x = int(input(\"数を入力してね:\"))\n",
" if n > x:\n",
" print(\"もっと大きいで\")\n",
" elif n < x:\n",
" print(\"もっと小さいで\")\n",
" \n",
"print(cnt, \"回で当たり〜\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## P2\n",
"文字列を入力したら,単語内の文字をひっくり返して出力してくれるようにする問題を考えます.単語と単語の間には空白やタブ,改行などが複数はさまっていたとしても,一文字の空白に置き換えるものとします.\n",
"\n",
"例: `sihT si a .nep → This is a pen.`\n",
"\n",
"**Python に標準で備わっている機能を自分で調べながらプログラムを作っていく練習** として,段階的にやってみましょう.\n",
"この課題で準備して,次の課題(ex05B)で作り上げてみましょう."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"文字列を空白・タブ・改行を区切りとして分割し,分割された文字列たちを要素にもつリストを作る方法を調べましょう.\n",
"以下の文字列 `S1` に実際にその処理を適用してみましょう.\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"S1 = ' ぼく ほげお \\tほげ ほげ〜\\n'"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# ここにコードを書いて実行した状態にしといてね\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## P3\n",
"\n",
"P2で考えた処理の結果得られる文字列のリストを,指定の文字列をはさんで連結する方法を調べましょう.\n",
"例えば,"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"L2 = ['あ', 'いう', 'えおか', 'きくけこ']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"が対象の場合,\n",
"\n",
"- 空白1文字をはさんで連結したら,\n",
"`'あ いう えおか きくけこ’`\n",
"- `'***'` をはさんで連結したら,`'あ***いう***えおか***きくけこ’`\n",
"- `'ほげ'` なら `'あほげいうほげえおかほげきくけこ'`\n",
"\n",
"となるようにする,ということです."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# ここにコードを書いて動作確認しよう. `ほげ`をはさむ例が実行された状態にしといてね\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## P4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"組み合わせの練習.\n",
"\n",
"以下の文字列から `\"ほげ\"` (この2文字の連なり)を削除したものを作ってください.\n",
"`T` は一つの文字列になるようにしてね.\n",
"「ex05 Notebook その3」の内容を参考に考えたらよいでしょう."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"S = \"ほほげげほげだらほげけでたほげいへんほげだほげったほげのよ,あほげりほげがほげとうほげ.\"\n",
"T = S # この行を修正\n",
"print(T)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(よだんだよん)「ほげ」とか hoge とか気になるひとはこちらへどうぞ.\n",
"- Wikipedia 「メタ構文変数」 https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E6%A7%8B%E6%96%87%E5%A4%89%E6%95%B0\n",
"- ほげを考えるページ http://kmaebashi.com/programmer/hoge.html\n",
"- 悲報:プログラムサンプルの「hoge」が通じない時代が来た http://nlab.itmedia.co.jp/nl/articles/1506/19/news043.html"
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "ex02kadaiA.ipynb",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment