{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Kiểm thử chương trình\n", "\n", "## Thông báo lỗi" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "ename": "IndexError", "evalue": "list index out of range", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mtest\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mtest\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mIndexError\u001b[0m: list index out of range" ] } ], "source": [ "test = [1, 2, 3]\n", "test[4]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "int() argument must be a string, a bytes-like object or a number, not 'list'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtest\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: int() argument must be a string, a bytes-like object or a number, not 'list'" ] } ], "source": [ "int(test)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'a' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mNameError\u001b[0m: name 'a' is not defined" ] } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unsupported operand type(s) for /: 'str' and 'int'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;34m'3'\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for /: 'str' and 'int'" ] } ], "source": [ "'3'/4" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 2)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m print(a)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "a = len([1, 2, 3]\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ví dụ" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def isPal(x):\n", " assert type(x) == list\n", " temp = x\n", " temp.reverse\n", " if temp == x:\n", " return True\n", " else:\n", " return False\n", "\n", "def silly(n):\n", " for i in range(n):\n", " result = []\n", " elem = input('Enter element: ')\n", " result.append(elem)\n", " if isPal(result):\n", " print('Yes')\n", " else:\n", " print('No')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "Enter element: b\n", "Enter element: c\n", "Enter element: b\n", "Enter element: a\n", "Yes\n" ] } ], "source": [ "silly(5)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: p\n", "Enter element: a\n", "Enter element: l\n", "Enter element: i\n", "Enter element: n\n", "Enter element: n\n", "Enter element: i\n", "Enter element: l\n", "Enter element: a\n", "Enter element: p\n", "Yes\n" ] } ], "source": [ "silly(10)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "Enter element: b\n", "Yes\n" ] } ], "source": [ "silly(2)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def isPal(x):\n", " assert type(x) == list\n", " temp = x\n", " temp.reverse\n", " if temp == x:\n", " return True\n", " else:\n", " return False\n", "\n", "def silly(n):\n", " for i in range(n):\n", " result = []\n", " elem = input('Enter element: ')\n", " result.append(elem)\n", " print(result)\n", " if isPal(result):\n", " print('Yes')\n", " else:\n", " print('No')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "Enter element: b\n", "['b']\n", "Yes\n" ] } ], "source": [ "silly(2)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def isPal(x):\n", " assert type(x) == list\n", " temp = x\n", " temp.reverse\n", " if temp == x:\n", " return True\n", " else:\n", " return False\n", "\n", "def silly(n):\n", " for i in range(n):\n", " result = []\n", " elem = input('Enter element: ')\n", " result.append(elem)\n", " print(result)\n", " if isPal(result):\n", " print('Yes')\n", " else:\n", " print('No')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "['a']\n", "Enter element: b\n", "['b']\n", "Yes\n" ] } ], "source": [ "silly(2)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def isPal(x):\n", " assert type(x) == list\n", " temp = x\n", " temp.reverse\n", " if temp == x:\n", " return True\n", " else:\n", " return False\n", "\n", "def silly(n):\n", " result = []\n", " for i in range(n):\n", " elem = input('Enter element: ')\n", " result.append(elem)\n", " print(result)\n", " if isPal(result):\n", " print('Yes')\n", " else:\n", " print('No')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "['a']\n", "Enter element: b\n", "['a', 'b']\n", "Yes\n" ] } ], "source": [ "silly(2)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def isPal(x):\n", " assert type(x) == list\n", " temp = x\n", " temp.reverse\n", " print(temp, x)\n", " if temp == x:\n", " return True\n", " else:\n", " return False\n", "\n", "def silly(n):\n", " result = []\n", " for i in range(n):\n", " elem = input('Enter element: ')\n", " result.append(elem)\n", " if isPal(result):\n", " print('Yes')\n", " else:\n", " print('No')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "Enter element: b\n", "['a', 'b'] ['a', 'b']\n", "Yes\n" ] } ], "source": [ "silly(2)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def isPal(x):\n", " assert type(x) == list\n", " temp = x\n", " print('before reverse', temp, x)\n", " temp.reverse\n", " print('after reverse', temp, x)\n", " if temp == x:\n", " return True\n", " else:\n", " return False\n", "\n", "def silly(n):\n", " result = []\n", " for i in range(n):\n", " elem = input('Enter element: ')\n", " result.append(elem)\n", " if isPal(result):\n", " print('Yes')\n", " else:\n", " print('No')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "Enter element: b\n", "before reverse ['a', 'b'] ['a', 'b']\n", "after reverse ['a', 'b'] ['a', 'b']\n", "Yes\n" ] } ], "source": [ "silly(2)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def isPal(x):\n", " assert type(x) == list\n", " temp = x\n", " print('before reverse', temp, x)\n", " temp.reverse()\n", " print('after reverse', temp, x)\n", " if temp == x:\n", " return True\n", " else:\n", " return False\n", "\n", "def silly(n):\n", " result = []\n", " for i in range(n):\n", " elem = input('Enter element: ')\n", " result.append(elem)\n", " if isPal(result):\n", " print('Yes')\n", " else:\n", " print('No')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "Enter element: b\n", "before reverse ['a', 'b'] ['a', 'b']\n", "after reverse ['b', 'a'] ['b', 'a']\n", "Yes\n" ] } ], "source": [ "silly(2)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "def isPal(x):\n", " assert type(x) == list\n", " temp = x[:]\n", " print(temp, x)\n", " temp.reverse()\n", " print(temp, x)\n", " if temp == x:\n", " return True\n", " else:\n", " return False\n", "\n", "def silly(n):\n", " result = []\n", " for i in range(n):\n", " elem = input('Enter element: ')\n", " result.append(elem)\n", " if isPal(result):\n", " print('Yes')\n", " else:\n", " print('No')" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Enter element: a\n", "Enter element: b\n", "['a', 'b'] ['a', 'b']\n", "['b', 'a'] ['a', 'b']\n", "No\n" ] } ], "source": [ "silly(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- - -\n", "[Trước: Dictionary](http://nbviewer.jupyter.org/github/manleviet/introCSusingPython/blob/master/6%20-%20Dictionary.ipynb) | \n", "[Mục lục](http://nbviewer.jupyter.org/github/manleviet/introCSusingPython/blob/master/index.ipynb) | \n", "[Tiếp: Biệt lệ và xác nhận](http://nbviewer.jupyter.org/github/manleviet/introCSusingPython/blob/master/8%20-%20Bi%E1%BB%87t%20l%E1%BB%87%20v%C3%A0%20x%C3%A1c%20nh%E1%BA%ADn.ipynb)" ] } ], "metadata": { "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.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }