美文网首页
[python_doc]python_3.7_chapter.3

[python_doc]python_3.7_chapter.3

作者: Franckisses | 来源:发表于2019-01-13 22:46 被阅读2次

    第三章 简单介绍介绍python

        在接下来的例子中,输入和输出存在着不一样的区别,(>>>和...),重复这个例子,你必须根据提示输入一些内容,当提示出现的时候,从解释器中输出的时候,一般是不会有什么提示的。在多行输入的时候一般都会出现第二行有空格的现象,这就是会被用作多行输入。

        在这篇文档中,在交互的输入中,可以包含一些注释,一般注释的开头是一#开始的,从这个行尾结束,一条注释应该出现在一行的开始或者是与代码隔几个空格,而不是出现先语句中,注释只是用来解释代码的作用,一般是不会被解释器翻译的。一般情况下在编译的时候会被解释器所忽略。

    # this is the first comment
    spam = 1 #and this is the second comment
             #... and now a third
    text = '# This is not a comment because its inside quotes'
    

    3.1 python用做计算器

        让我们尝试一下简单的命令,启动解释器并且等待>>>提示符的出现(不会很长时间的)

    3.1.1 数学计算

        解释器就充当一个简单的计算器,你可以输入一些表达式,并且他回打印一些值,表达式的语法是直接去输出的,运算符包括+,-,*,/,这些都在其他的计算机的高级语言中也会有作用,多重运算也可以用()来分组,例如:

    >>>2+2
    4
    >>>50-5*6
    20
    >>>(50-5*6)/4
    5.0
    >>>8/5 #division always return a floating point number
    1.6
    

        一般整数的类型是int,小数的类型为float,我们接下来会看到更多的数值类型在这个文档中。

        整除一般返回一个浮点数,地板除一般会得到一个整数类型的数字,你可以使用(//)这个运算符,计算余数的时候你可以用%:

    >>> 17 / 3  # classic division returns a float
    5.666666666666667
    >>>
    >>> 17 // 3  # floor division discards the fractional part
    5
    >>> 17 % 3  # the % operator returns the remainder of the division
    2
    >>> 5 * 3 + 2  # result * divisor + remainder
    17
    

    在python中,你可以用**来计算指数的运算。

    >>> 5 ** 2  # 5 squared
    25
    >>> 2 ** 7  # 2 to the power of 7
    128
    

    在python中,=的作用是相当于赋值,在下一次赋值之前,都是不会发生改变的。

    >>> width = 20
    >>> height = 5 * 9
    >>> width * height
    900
    

    如果一个变量没有被定义,那么你在调用的时候回出现错误提示。

    >>> n  # try to access an undefined variable
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    NameError: name 'n' is not defined
    

    python也支持整数,浮点数的混合运算。

    >>> 4 * 3.75 - 1
    14.0
    

    在交互模式下,变量的赋值是在最后一次对变量的调用,这就意味这你使用python的shell作为一个桌面级的计算器的时候,这个很容去用变量计算。例如:

    >>> tax = 12.5 / 100
    >>> price = 100.50
    >>> price * tax
    12.5625
    >>> price + _
    113.0625
    >>> round(_, 2)
    113.06
    

    这些变量应该被用户设置为只读的选项,每一个变量应该有一个明确的值,每一个变量有自己独立的命名空间,并且不和内建的变量,魔法方法不冲突。
        另外的int和float的类型,python也支持其他的数字类型,例如Decimal和Fraction,python也拥有内建的支持复数类型,(complex number),用J或者j来表明数字的虚部。

    3.1.2 字符串

        除过数字类型外,python也支持字符串的处理,可以用很多种形式来表示,可以用单引号,双引号,也可以用反斜线来表示多行的字符串。

    >>> 'spam eggs'  # single quotes
    'spam eggs'
    >>> 'doesn\'t'  # use \' to escape the single quote...
    "doesn't"
    >>> "doesn't"  # ...or use double quotes instead
    "doesn't"
    >>> '"Yes," they said.'
    '"Yes," they said.'
    >>> "\"Yes,\" they said."
    '"Yes," they said.'
    >>> '"Isn\'t," they said.'
    '"Isn\'t," they said.
    

    在交互型的解释其中,输出的字符串应该以引号,或者反斜线结尾,这个有的时候会看起来会与输入有区别的。两个字符串是相同的。如果在爽引号的字符创中还需要引号的话应当用单引号来区分。print()函数方法中提供了更丰富的输出,通过省略闭合的标点,或者是输出特殊的字符串。

    >>> '"Isn\'t," they said.'
    '"Isn\'t," they said.'
    >>> print('"Isn\'t," they said.')
    "Isn't," they said.
    >>> s = 'First line.\nSecond line.'  # \n means newline
    >>> s  # without print(), \n is included in the output
    'First line.\nSecond line.'
    >>> print(s)  # with print(), \n produces a new line
    First line.
    Second line.
    

    在特殊的字符处理中,如果你不想通过反斜线的方式来告诉解释器是转义字符,你可以在字符的开头加上r。

    >>> print('C:\some\name')  # here \n means newline!
    C:\some
    ame
    >>> print(r'C:\some\name')  # note the r before the quote
    C:\some\name
    

    字符串也可以表示为多行形式,一种方式是用三引号的形式:"""...""",或者是:'''...''',在一段话的末尾会自动的包含在一个字符串中,但是很多时候还是会在字符串的末尾会建行一个反斜线.例如:

    print("""\
    Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
    """)    
    

    输出如下:

    Usage: thingy [OPTIONS]
     -h                        Display this usage message
     -H hostname               Hostname to connect to
    

    字符串也可以用运算符来处理,如:+,重复的话,也可以用*;

    >>> # 3 times 'un', followed by 'ium'
    >>> 3 * 'un' + 'ium'
    'unununium'
    

    如果两个字符串同时出现,并且中间没有连接符之类的符号的话,会自动拼接在一起。

    >>> 'Py' 'thon'
    'Python'
    

    这个特征是只对于你想拆开很长的字符串时有用。

    >>> text = ('Put several strings within parentheses '
    ...         'to have them joined together.')
    >>> text
    'Put several strings within parentheses to have them joined together.'
    

    这个值对于两个字符串有用,对于变量或者表达式不能这么用。

    >>> prefix = 'Py'
    >>> prefix 'thon'  # can't concatenate a variable and a string literal
      File "<stdin>", line 1
        prefix 'thon'
                    ^
    SyntaxError: invalid syntax
    >>> ('un' * 3) 'ium'
      File "<stdin>", line 1
        ('un' * 3) 'ium'
                       ^
    SyntaxError: invalid syntax
    

    如果你想拼接多个变量或者是一个变量和文字,用“+”

    >>>prefix + 'thon'
    "Python"
    

    字符串也支持索引,第一个字符的索引是0,这里没有分离的字符,没有字符代表一个元素,占一个索引位置。

    >>> word = 'Python'
    >>> word[0]  # character in position 0
    'P'
    >>> word[5]  # character in position 5
    'n'
    

    有正数的索引,就会有复数的索引,是从最后变开始。

    >>> word[-1]  # last character
    'n'
    >>> word[-2]  # second-last character
    'o'
    >>> word[-6]
    'P'
    

    标记的时候从-0就是0,负数的话就是从-1开始。

        另外关于索引的,字符串也支持切片操作的。索引是获得单个的字符,而切片的话是获得一段字符串。

    >>> word[0:2]  # characters from position 0 (included) to 2 (excluded)
    'Py'
    >>> word[2:5]  # characters from position 2 (included) to 5 (excluded)
    'tho'
    

    另一种字符串的使用,只写开始的,或者只写结束的,就像s[:i]和s[i:]加在一起表示的事整个字符串一样。

    >>> word[:2] + word[2:]
    'Python'
    >>> word[:4] + word[4:]
    'Python'
    

    切片有一些比较有用的默认。可是不写的话一般表示的都是从0开始。

    >>> word[:2]   # character from the beginning to position 2 (excluded)
    'Py'
    >>> word[4:]   # characters from position 4 (included) to the end
    'on'
    >>> word[-2:]  # characters from the second-last (included) to the end
    'on'
    

    去思考切片的机制是如何去操作的。从左边开始的时候第一个字符的索引为0,从右边开始的话字符串的事n或者其索引为n,例如:

    +---+---+---+---+---+---+
    | P | y | t | h | o | n |
    +---+---+---+---+---+---+
    0   1   2   3   4   5   6
    -6  -5  -4  -3  -2  -1
    

    第一行的数字的位置是从0开始到6结束,第二行的数字是从负数开始的,切片从i开始到j结束,包含着所有的字符。

    从正向的方向开始数,切片的长度和目录的长度是不一样的,如果都在切片的都在界限以内,例如:长度word[1:3]是2.

    如果尝试的索引超过最大的限度会提示报错。

    >>> word[42]  # the word only has 6 characters
    Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
    IndexError: string index out of range
    

    然而,在末尾的索引可以使用无限大的数字,一般无限大的数字可以表示最后一位数字。

    >>> word[4:42]
    'on'
    >>> word[42:]
    ''
    

    python的索引是不可以被赋值的,他们是不可变类型的。因此, 不能对字符串的索引赋值。

    >>> word[0] = 'J'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'str' object does not support item assignment
    >>> word[2:] = 'py'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'str' object does not support item assignment
    

    如果你需要一个新的字符串,你可以试试这样:

    >>> 'J' + word[1:]
    'Jython'
    >>> word[:2] + 'py'
    'Pypy'
    

    内建的函数len()可以返回字符串的长度。

    >>> s = 'supercalifragilisticexpialidocious'
    >>> len(s)
    34
    

    3.1.3 列表

    python一种包含很多的数据类型的容器。里边包含了许多的值,列表是万能的,列表中包含了许许多多的数据类型,但是一般列表中的一般只存同一种数据类型。

    >>> squares = [1, 4, 9, 16, 25]
    >>> squares
    [1, 4, 9, 16, 25]
    

    像字符串一样,列表页支持索引和切片。

    >>> squares[0]  # indexing returns the item
    1
    >>> squares[-1]
    25
    >>> squares[-3:]  # slicing returns a new list
    [9, 16, 25]
    

    所有的切片返回一个新的列表,包含一个新的节点,这个意味着返回一个新的拷贝的列表。

    >>> squares[:]
    [1, 4, 9, 16, 25]
    

    列表也支持拼接。

    >>> squares + [36, 49, 64, 81, 100]
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    

    不像字符创,是不可变的类型,列表是可变类型,能够改变其内容。

    >>> cubes = [1, 8, 27, 65, 125]  # something's wrong here
    >>> 4 ** 3  # the cube of 4 is 64, not 65!
    64
    >>> cubes[3] = 64  # replace the wrong value
    >>> cubes
    [1, 8, 27, 64, 125]
    

    你可以在列表的末尾进行添加元素,通过append()方法。

    >>> cubes.append(216)  # add the cube of 6
    >>> cubes.append(7 ** 3)  # and the cube of 7
    >>> cubes
    [1, 8, 27, 64, 125, 216, 343]
    

    赋值和切片都是可以操作的,也能够改变列表的大小和完全清空列表。

    >>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    >>> letters
    ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    >>> # replace some values
    >>> letters[2:5] = ['C', 'D', 'E']
    >>> letters
    ['a', 'b', 'C', 'D', 'E', 'f', 'g']
    >>> # now remove them
    >>> letters[2:5] = []
    >>> letters
    ['a', 'b', 'f', 'g']
    >>> # clear the list by replacing all the elements with an empty list
    >>> letters[:] = []
    >>> letters
    []
    

    内建函数len()也可以返回列表的长度。

    >>> letters = ['a', 'b', 'c', 'd']
    >>> len(letters)
    4
    

    列表的嵌套也是可以的。

    >>> a = ['a', 'b', 'c']
    >>> n = [1, 2, 3]
    >>> x = [a, n]
    >>> x
    [['a', 'b', 'c'], [1, 2, 3]]
    >>> x[0]
    ['a', 'b', 'c']
    >>> x[0][1]
    'b'
    

    3.2 编程第一步

    当让我们可以利用python做更复杂的事情,例如我们可以将斐波那契数列来热热身。

    >>> # Fibonacci series:
    ... # the sum of two elements defines the next
    ... a, b = 0, 1
    >>> while a < 10:
    ...     print(a)
    ...     a, b = b, a+b
    ...
    0
    1
    1
    2
    3
    5
    8
    

    这个实例给我们介绍了几个特征:
        第一行包含了多变量的赋值,a和b分别赋值了0和1.在最后一行的又被用到了。在表达式对a和b进行计算之后又将他们用变量赋值给了新的值,不停如此。

        在while循环中,如果他的值小于10的情况下都会满足,在python中,像C,任何非0的整数的值都为True。0为False。这种情况有可能会是一个字符串或者是一个列表,在任何的序列中,任何非0的数字都是True。空的序列为False。这个可以用一个简单的例子来证明。标准的比较运算符和C的是一样,<less than,>greater than,==equal to,<=less than or equal to,>=greater than or equal to ,!=not equal to.

        循环的本身用缩进来表示关系的。python中用缩进来表示代码块的关系,你可以在一段代码大开始用tab或者空格来表示代码的归属关系,在练习中,你可能准备更复杂的输入方式来编写代码。不过在一些编辑其中,它们可以更加轻松的实现自动缩进。
        print()函数会输出你输入的东西,他不同于你输入的东西,他可以接受很多的参数,浮点数,字符串,输出之后没有字符的显示。所以你可以这样的使用:

    >>> i = 256*256
    >>> print('The value of i is', i)
    The value of i is 65536
    

    关键参数的使用可以避免打印在新的一行中。

    >>> a, b = 0, 1
    >>> while a < 1000:
    ...     print(a, end=',')
    ...     a, b = b, a+b
    ...
    0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

    相关文章

      网友评论

          本文标题:[python_doc]python_3.7_chapter.3

          本文链接:https://www.haomeiwen.com/subject/nllrdqtx.html