{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Python 基础" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. 导入和Python之禅\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['1_Basics.ipynb',\n", " '2_Print_Statement.ipynb',\n", " '3_Data_Structure_1.ipynb',\n", " '4_Data_Structure_2.ipynb',\n", " '5_Control_Flow.ipynb',\n", " '6_Function.ipynb',\n", " '7_Class.ipynb',\n", " 'Python.pdf',\n", " 'README.md',\n", " '.ipynb_checkpoints']" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 导入库\n", "import os\n", "os.listdir('.')" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The Zen of Python, by Tim Peters\n", "\n", "Beautiful is better than ugly.\n", "Explicit is better than implicit.\n", "Simple is better than complex.\n", "Complex is better than complicated.\n", "Flat is better than nested.\n", "Sparse is better than dense.\n", "Readability counts.\n", "Special cases aren't special enough to break the rules.\n", "Although practicality beats purity.\n", "Errors should never pass silently.\n", "Unless explicitly silenced.\n", "In the face of ambiguity, refuse the temptation to guess.\n", "There should be one-- and preferably only one --obvious way to do it.\n", "Although that way may not be obvious at first unless you're Dutch.\n", "Now is better than never.\n", "Although never is often better than *right* now.\n", "If the implementation is hard to explain, it's a bad idea.\n", "If the implementation is easy to explain, it may be a good idea.\n", "Namespaces are one honking great idea -- let's do more of those!\n" ] } ], "source": [ "import this" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. 变量" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "用于表示某物或值的名称称为变量。在python中,可以声明变量并为其赋值,如下所示:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "x = 2\n", "y = 5\n", "xy = 'Hey'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7 Hey\n" ] } ], "source": [ "print(x+y, xy)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "多变量可以被赋予相同的名字。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "x = y = 1" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 1\n" ] } ], "source": [ "print(x,y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. 运算符" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.1 算数运算符" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Symbol | Task Performed |\n", "|----|---|\n", "| + | Addition |\n", "| - | Subtraction |\n", "| / | division |\n", "| % | mod |\n", "| * | multiplication |\n", "| // | floor division |\n", "| ** | to the power of |" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1+2" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2-1" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1*2" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python3版本之后,自动讲整数的除法转换成浮点数,这样和人类的直觉比较一致。" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1.0/2" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1/2.0" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "15%10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "地板除法就是将这样得到的结果转换成最接近的整数。" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2.8//2.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 关系运算符" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Symbol | Task Performed |\n", "|----|---|\n", "| == | True, if it is equal |\n", "| != | True, if not equal to |\n", "| < | less than |\n", "| > | greater than |\n", "| <= | less than or equal to |\n", "| >= | greater than or equal to |" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "z = 1" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z == 1" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z > 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.3 位运算符" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| Symbol | Task Performed |\n", "|----|---|\n", "| & | Logical And |\n", "| l | Logical OR |\n", "| ^ | XOR |\n", "| ~ | Negate |\n", "| >> | Right shift |\n", "| << | Left shift |" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "a = 2 #10\n", "b = 3 #11" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2\n", "0b10\n" ] } ], "source": [ "print(a & b)\n", "print(bin(a&b))" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "5 >> 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "0000 0101 -> 5 \n", "\n", "将数字向右移1并填充0。\n", "\n", "0000 0010 -> 2" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "5 << 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "0000 0101 -> 5 \n", "\n", "将数字做移1并填充0。\n", "\n", "0000 1010 -> 10" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. 内置函数" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python带有预先构建的函数" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.1 从一个系统到另一个系统的转换" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "从十六进制到十进制的转换是通过向十六进制值添加前缀**0x**来完成的,反之亦然,使用内置的**hex()**,通过在八进制值中添加前缀**0**,从八进制到十进制,或者通过使用内建函数**oct()** 从八进制到十进制。" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0xaa'" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hex(170)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "170" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0xAA" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0o10'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oct(8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**int( )** 在用于转换时接受两个值,一个是不同数字系统中的值,另一个是它的基数。注意,不同数字系统中的输入数字应该是字符串类型。" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8\n", "170\n", "10\n" ] } ], "source": [ "print(int('010',8))\n", "print(int('0xaa',16))\n", "print(int('1010',2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**int( )** 也可用于仅获取浮点数的整数值,或用于将字符串类型的数字转换为整数格式。相似地,函数 **str( )** 可以被用来将整形转化为字符串类型。" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7\n", "7\n" ] } ], "source": [ "print(int(7.7))\n", "print(int('7'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "同样需要注意的是 **bin( )** 被用作二进制而 **float( )** 被用作十进制、浮点值。**chr( )** 用于将ASCII码转换为等效的字母表,**ord( )** 被反过来使用。" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'b'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chr(98)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "98" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ord('b')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.2 简化算术运算" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**round( )** 函数将输入值四舍五入到指定的位数或最接近的整数。" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "6\n", "4.56\n" ] } ], "source": [ "print(round(5.6231))\n", "print(round(4.55892, 2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**complex( )** 被用来定义一个复数 **abs( )** 输出相同的绝对值。" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5.385164807134504\n" ] } ], "source": [ "c =complex('5+2j')\n", "print(abs(c))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**divmod(x,y)** 输出商和余数在元组(你将在后面的章节学习)的格式(商,余数)。" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4, 1)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "divmod(9,2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "如果第一个参数是该类的实例,**isinstance( )** 则返回True。还可以同时检查多个类。" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "False\n", "True\n" ] } ], "source": [ "print(isinstance(1, int))\n", "print(isinstance(1.0,int))\n", "print(isinstance(1.0,(int,float)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**cmp(x,y)**\n", "\n", "|x ? y|Output|\n", "|---|---|\n", "| x < y | -1 |\n", "| x == y | 0 |\n", "| x > y | 1 |" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "print(1<2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**pow(x,y,z)** 可以被用来找到幂函数$x^y$也可以找到第三个指定数字的mod值,即:($x^y$ % z)。" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "27\n", "2\n" ] } ], "source": [ "print(pow(3,3))\n", "print(pow(3,3,5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**range( )** 函数输出指定范围的整数。它还可以用于通过指定特定范围内的两个数字之间的差来生成一个序列。元素以列表的形式返回(稍后将详细讨论)。" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 1, 2]\n", "[2, 3, 4, 5, 6, 7, 8]\n", "[2, 10, 18, 26]\n" ] } ], "source": [ "print(list(range(3)))\n", "print(list(range(2,9)))\n", "print(list(range(2,27,8)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.3 接受用户输入" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**input( )** 接受输入并以字符串的形式保存。" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Type something here and it will be stored in variable abc \tHello world!\n" ] } ], "source": [ "abc = input(\"Type something here and it will be stored in variable abc \\t\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "str" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(abc)" ] } ], "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.9" } }, "nbformat": 4, "nbformat_minor": 1 }