+{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"ForLoop.ipynb","provenance":[],"authorship_tag":"ABX9TyM759pD7Q3H9mGf45vWqR5M"},"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","metadata":{"id":"wZJ5qsLfGe_l","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":579},"executionInfo":{"status":"ok","timestamp":1597377417139,"user_tz":-480,"elapsed":738,"user":{"displayName":"Hsiao-En Sun","photoUrl":"","userId":"07971042322541451787"}},"outputId":"2d63d653-4a5d-43b3-e1ab-0d63a21523d0"},"source":["from IPython.display import HTML\n","HTML(\"\"\"\n"," <div style=\"display: flex; justify-content: center;\">\n"," <video width=1000 controls>\n"," <source src=\"https://drive.google.com/uc?id=1TK4t4D-dhu9z4DpJE7ImzGb8VKkjVEDi\" type=\"video/mp4\">\n"," </video>\n"," </div>\n","\"\"\" )"],"execution_count":1,"outputs":[{"output_type":"execute_result","data":{"text/html":["\n"," <div style=\"display: flex; justify-content: center;\">\n"," <video width=1000 controls>\n"," <source src=\"https://drive.google.com/uc?id=1TK4t4D-dhu9z4DpJE7ImzGb8VKkjVEDi\" type=\"video/mp4\">\n"," </video>\n"," </div>\n"],"text/plain":["<IPython.core.display.HTML object>"]},"metadata":{"tags":[]},"execution_count":1}]},{"cell_type":"markdown","metadata":{"id":"5dks77FJ--qq","colab_type":"text"},"source":["## for-loop\n","\n","若有需要重複執行的程式,即可交給for-loop!\n","\n"]},{"cell_type":"markdown","metadata":{"id":"gwmBGyff--qr","colab_type":"text"},"source":["### range迭代"]},{"cell_type":"code","metadata":{"id":"lrpQ9PEZ--qr","colab_type":"code","colab":{}},"source":["'''\n","for xxx in range():\n"," (do something)\n","'''"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"Fl6CXWaa--qu","colab_type":"code","colab":{}},"source":["# for (int i = 0; i < 10; i += 1)\n","\n","for i in range(10):\n"," print(i, end = \" \")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"GcbwRmyl--qy","colab_type":"code","colab":{}},"source":["# for (int i = -3; i < 10; i += 1)\n","\n","for i in range(-3, 10):\n"," print(i, end = \" \")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"qF4fyp7m--q1","colab_type":"code","colab":{}},"source":["# for (int i = -3; i < 10; i += 2)\n","\n","for i in range(-3, 10, 2):\n"," print(i, end = \" \")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"1KK4asIM--q3","colab_type":"code","colab":{}},"source":["# for (int i = -1; i > -10; i -= 2)\n","\n","for i in range(-1, -10, -2):\n"," print(i, end = \" \")"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Yxy_Yugx--q6","colab_type":"text"},"source":["### container迭代"]},{"cell_type":"code","metadata":{"id":"ZrpH0W3Z--q7","colab_type":"code","colab":{}},"source":["# list 的迭代\n","L = ['a', 'b', 'c', 'd', 'e']\n","\n","for element in L:\n"," print(element, end=\" \")\n","print()\n","\n","for element in L[:3]:\n"," print(element, end=\" \")\n","print()\n","\n","for element in reversed(L):\n"," print(element, end=\" \")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"4_enM6AL--q-","colab_type":"code","colab":{}},"source":["T = ('a', 'b', 'c', 'd', 'e')\n","\n","for element in T:\n"," print(element, end=\" \")\n","print()\n","\n","for element in T[:3]:\n"," print(element, end=\" \")\n","print()\n","\n","for element in reversed(T):\n"," print(element, end=\" \")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"jXIfEJrb--rB","colab_type":"code","colab":{}},"source":["S = {'a', 'b', 'c', 'd', 'e'}\n","\n","# Set 雖然也可以迭代,但其無序性讓迭代的物件無法預測,故也無逆序功能\n","for element in S:\n"," print(element, end=\" \")"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"-0DJlIDr--rD","colab_type":"code","colab":{}},"source":["D = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}\n","\n","for key in D.keys():\n"," print(key, end=\" \") \n","print()\n","\n","# for value in D.values():\n","# print(value, end=\" \")\n","# print()\n","\n","# for key, value in D.items():\n","# print(f'({key}, {value})', end=\" \")"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"XTkfxorO--rG","colab_type":"text"},"source":["### enumerate迭代"]},{"cell_type":"code","metadata":{"id":"zJsismVr--rH","colab_type":"code","colab":{}},"source":["for index, element in enumerate(L):\n"," print(f'({index}, {element})', end = \" \")\n","print()\n","\n","for index, element in enumerate(T):\n"," print(f'({index}, {element})', end = \" \")"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"Xzv4YLE_--rJ","colab_type":"text"},"source":["### range or container"]},{"cell_type":"code","metadata":{"id":"GlG3X-xT--rK","colab_type":"code","colab":{}},"source":["# 我們偶爾也會使用 range(len()) 來迭代 list、set 等結構,此行為比較接近其他語言 (例如 C、Java ) 的迴圈行為\n","# for (int i = 0; i < L.size(); i += 1)\n","\n","L = ['a', 'b', 'c', 'd', 'e']\n","\n","for index, element in enumerate(L):\n"," print(index, element, end = \" \")\n","print()\n","\n","for i in range(len(L)):\n"," print(i, L[i], end=\" \")"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"8koDIBDC--rM","colab_type":"text"},"source":["### zip迭代"]},{"cell_type":"code","metadata":{"id":"TGf0ySku--rM","colab_type":"code","colab":{}},"source":["# 除了常規的四大資料結構迭代,我們也可以使用 zip 將任意不同的可迭代結構打包起來,一起做迭代。\n","# zip 會將兩結構中同一位置的物件擺在同一個迭代順位,例如下例中 'Apple' 即會跟 40 擺在同一個順位。\n","# 使用 zip 的前提是,兩結構的長度必須一樣 ! (可使用 len() 先行確認 )\n","\n","L1 = ['Apple', 'Banana', 'Carrot', 'Donut']\n","L2 = [40, 15, 25, 35]\n","\n","for product, price in zip(L1, L2):\n"," print(f'({product}, {price})', end = \" \")"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"eRuy6UHY--rQ","colab_type":"text"},"source":["## nested loop"]},{"cell_type":"code","metadata":{"id":"GYnc3cW7--rQ","colab_type":"code","colab":{},"outputId":"b3e1ac12-b377-4581-a4da-15a43e61cb66"},"source":["'''\n","4*4 的乘法表\n","\n","i j\n","1 * 1 = 1\n","1 * 2 = 2\n","1 * 3 = 3\n","1 * 4 = 4\n","2 * 1 = 2\n","2 * 2 = 4\n","...\n","4 * 4 = 16\n","'''\n","\n","i=1\n","for j in range(1, 5):\n"," print(f'i = {i}, j = {j}, i*j = {i*j}')\n","\n","i=2\n","for j in range(1, 5):\n"," print(f'i = {i}, j = {j}, i*j = {i*j}')\n"," \n","i=3\n","for j in range(1, 5):\n"," print(f'i = {i}, j = {j}, i*j = {i*j}')\n"," \n","i=4\n","for j in range(1, 5):\n"," print(f'i = {i}, j = {j}, i*j = {i*j}')"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["'\\n4*4 的乘法表\\n\\ni j\\n1 * 1 = 1\\n1 * 2 = 2\\n1 * 3 = 3\\n1 * 4 = 4\\n2 * 1 = 2\\n2 * 2 = 4\\n...\\n4 * 4 = 16\\n'"]},"metadata":{"tags":[]},"execution_count":18}]},{"cell_type":"code","metadata":{"id":"t2AjM5rR--rT","colab_type":"code","colab":{}},"source":["# 多層迴圈的使用必須謹慎,內層迴圈完整迭代完一次,外層才會跳下一個迭代。\n","# 縮排需要特別注意 ! \n","\n","# 此例子中,當 i 最初為 1 時,j 會完整地從 1 迭代到 4 結束, 接著 i 才會到下一個 2。\n","for i in range(1, 5):\n"," for j in range(1, 5):\n"," print(f'i = {i}, j = {j}, i*j = {i*j}')"],"execution_count":null,"outputs":[]}]}
0 commit comments