ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

使用 Python 的解释器

使用 Python 的解释器 3. 速览下列示例借由是否展示提示符 ( 与 ) 对输入和输出予以区分: 于输入示例里的代码之际, 需键入以提示符起始的行中提示符之后的全部内容并非以提示符起始的行乃是解释器的输出。留意, 示例中的某行所出现的第二个提示符是用以终结多行命令的, 在此情形下, 需键入一个空白行。你能够运用Copy 按钮, 它会于悬停或者点击代码示例之际, 在右上角予以显示, 通过它能够去除提示符, 并且省略输出, 从而把输入行复制粘贴至你的解释器。本手册里有着诸多的例子, 就连交互式命令之中也是含有注释的。注释是以 # 开头开启的, 会持续到这一物理行最后结束。注释或者处于行的开头部位, 又或者在空白符跟前以及代码之后的位置, 然而绝对不在字符串里边。字符串里的 # 号纯粹就是 # 号。注释属于用来阐明代码的, 是不解释注释的那种注释, 在键入例子的时候, 可以不把注释给输入进去。示例如下# 这是第一条注释 spam 1 # 而这是第二条注释 # ... 而这是第三条 text # 这不是注释因为它是在引号之内。3.1. 用作计算器使我们去试着采用一些简约的命令, 开启解释器与此同时等候主提示符 呈现, 理应不会等待太长时间3.1.1. 数字将解释器当作一台简单的计算器, 你可键入一个表达式, 使其给出结果值, 表达式语法直观, 运算符 、-、* 和 / 能用来执行算术运算, 圆括号 (()) 能用来进行分组, 例如:。 2 2 4 50 - 5*6 20 (50 - 5*6) / 4 5.0 8 / 5 # 除法运算总是返回一个浮点数 1.6用于表示像2、4、20之类没有小数部分的数, 所属的类型是整数的类型 , 而带有像5.0、1.6呀这样存在小数部分的数, 其所归属的类型是带小数部分数的类型。本教程在后续的部分阶段将会去介绍更多与之相关的数字类型。进行除法运算时, 也就是使用 (/) 这个符号时, 其总会返回浮点数。倘若你打算做 , 以便得到一个整数结果, 那么你能够运用 // 这个运算符要是你想计算余数, 那你可以使用 %: 17 / 3 # 经典除法运算返回一个浮点数 5.666666666666667 17 // 3 # 向下取整除法运算会丢弃小数部分 5 17 % 3 # % 运算返回相除的余数 2 5 * 3 2 # 向下取整的商 * 除数 余数 17用 ** 运算符计算乘方 5 ** 2 # 5 的平方 25 2 ** 7 # 2 的 7 次方 128用于给变量赋值的是等号, 赋值之后, 在接下来的交互提示符所处位置不会显示任何结果。 width 20 height 5 * 9 width * height 900如果变量未定义即未赋值使用该变量会提示错误 n # 试图访问一个未定义的变量 Traceback (most recent call last): File , line 1, in NameError: name n is not defined对浮点数给予全面支持, 混合类型运算数进行运算时, 会把整数转化为浮点数。 4 * 3.75 - 1 14.0交互模式之中, 上次输出的那个表达式会被赋予给变量 _ , 在把 当作计算器来使用那会儿, 借助该变量去达成下一步的计算会显得更为简单, 就比如: tax 12.5 / 100 price 100.50 price * tax 12.5625 price _ 113.0625 round(_, 2) 113.06最好把那个变量当成只读的类型, 不要给它进行显式赋值, 不然的话会创建出一个有着相同名字的独立局部变量, 那个变量会通过它的魔法行为来屏蔽内置变量。除去 和 之外, 它还对别的数字类型予以支持, 像是 或者。它还在内部具备支持, 后缀 j 或者 J 被用来表明虚数举例来说 35j。3.1.2. 文本除了数字之外, 还能够对文本进行操作, 这由类型呈现, 被称作“字符串”。这涵盖了字符“!”, 单词“”, 名称“Paris”, 句子“Got your back.”等等“Yay! :)”。它们能够使用成对的单引号...抑或是双引号...来加以标示, 最终的结果全都一样。 spam eggs # 单引号 spam eggs Paris rabbit got your back :)! Yay! # 双引号 Paris rabbit got your back :)! Yay! 1975 # 引号中的数字也是字符串 1975需要对引号本身进行标示时, 我们得对其做“转义”处理, 也就是在它前面加上一个 \。或者呢, 我们能够选用不同种类的引号:。 doesn\t # 使用 \ 来转义单引号... doesnt doesnt # ...或者改用双引号 doesnt Yes, they said. Yes, they said. \Yes,\ they said. Yes, they said. Isn\t, they said. Isn\t, they said.于shell之内, 字符串的定义以及输出字符串, 看上去兴许会有所不同。函数会将标示所用的引号略去, 并且打印经过转义的特殊字符, 进而产生更为易于阅读的输出。 s First line.\nSecond line. # \n 表示换行符 s # 不用 print()特殊字符将包括在字符串中 First line.\nSecond line. print(s) # 用 print()特殊字符会被转写因此 \n 将产生一个新行 First line. Second line.倘若不期望前置了 \ 的字符被转义成特殊字符, 那么能够运用原始字符串, 只需在此引号的前面增添一个 r 便可: print(C:\this\name) # 这里 \t 表示制表符\n 表示换行符 C: his ame print(rC:\this\name) # 请注意引号前的 r C:\this\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 乘以 un再加 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 # 不能拼接变量和字符串字面值 File , line 1 prefix thon ^^^^^^ SyntaxError: invalid syntax (un * 3) ium File , line 1 (un * 3) ium ^^^^^ SyntaxError: invalid syntax合并多个变量或合并变量与字面值要用 prefix thon Python于字符串而言, 其会支持索引这种行为通过下标来进行访问, 其中第一个字符所对应的索引数值是0。关于单字符, 它并没有专门特定的类型, 实际上就是那种长度为一的字符串形式: word Python word[0] # 0 号位的字符 P word[5] # 5 号位的字符 n索引还支持负数用负数索引时从右边开始计数 word[-1] # 最后一个字符 n word[-2] # 倒数第二个字符 o word[-6] P注意-0 和 0 一样因此负数索引从 -1 开始。不算索引方面的操作, 另一种被支持的是切片, 索引是起到获取单一字符作用的, 然而切片则能够让你去获取子字符串句号。 word[0:2] # 从 0 号位 (含) 到 2 号位 (不含) 的字符 Py word[2:5] # 从 2 号位 (含) 到 5 号位 (不含) 的字符 tho切片索引具极有用之默认值, 当省略起始索引时默认指向零起始位置当省略结束索引时默认指向字符串末尾处。 word[:2] # 从开头到 2 号位 (不含) 的字符 Py word[4:] # 从 4 号位 (含) 到末尾 on word[-2:] # 从倒数第二个 (含) 到末尾 on留意, 输出相应结论覆盖切片起始之处, 且不涵盖切片截止之点。所以, s 加上 s 始终等同于 s: word[:2] word[2:] Python word[:4] word[4:] Python从另一种角度去理解切片, 索引所指向的位置是字符之间, 将第一个字符的左侧标记为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之间所有对应字符所构成的部分, 是字符串从i到j的切片。要是针对运用非负索引去进行切片操作, 倘若这两个索引其中任何一个均不存在超越边界的情况, 那么切片具体的长度便应该是起始索引以及终止索引的差值。也就是说, 就像是这样, 比如 word 的长度为 2。索引越界会报错 word[42] # word 只有 6 个字符 Traceback (most recent call last): File , line 1, in IndexError: string index out of range但是切片会自动处理越界索引 word[4:42] on word[42:] 字符串没法进行修改, 这是确定无疑的。所以, 给字符串里某个索引位置去进行赋值就会出现报错: word[0] J Traceback (most recent call last): File , line 1, in TypeError: str object does not support item assignment word[2:] py Traceback (most recent call last): File , line 1, in TypeError: str object does not support item assignment要生成不同的字符串应新建一个字符串 J word[1:] Jython word[:2] py Pypy内置函数 返回字符串的长度 s supercalifragilisticexpialidocious len(s) 34参见字符串是 序列类型 支持序列类型的各种操作。字符串支持很多变形与查找方法。内嵌表达式的字符串字面值。使用 格式化字符串。这里详述了用 % 运算符格式化字符串的操作。3.1.3. 列表在支持众多复合数据类型的情况下, 能够把不一样的值组合到一块儿。其中, 最为常用的列表, 它是借助方括号来加以标注, 并且是通过逗号来实施分隔的一组值。列表能够囊括不同类型的元素, 然而按一般情形来讲, 各个元素所具备的类型是相同的: squares [1, 4, 9, 16, 25] squares [1, 4, 9, 16, 25]和字符串及其他内置 类型一样列表也支持索引和切片 squares[0] # 索引操作将返回条目 1 squares[-1] 25 squares[-3:] # 切片操作将返回一个新列表 [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] # 这里有点问题 4 ** 3 # 4 的立方是 64不是 65 64 cubes[3] 64 # 替换错误的值 cubes [1, 8, 27, 64, 125]通过运用 方式 , 于列表的末尾之处添加全新的条目 , 这一点你同样是能够做到的 , 关于该方式的更多介绍 , 我们会将其放置于后文才呈现出来。 cubes.append(216) # 添加 6 的立方 cubes.append(7 ** 3) # 和 7 的立方 cubes [1, 8, 27, 64, 125, 216, 343]中的单纯简单赋值绝对不会去复制数据, 当你把一个列表赋予给一个变量的时候, 这个变量将会去引用已存在的列表, 你借助一个变量针对列表所做的任何改变都将会被引用它的所有其他变量给看到, :。 rgb [Red, Green, Blue] rgba rgb id(rgb) id(rgba) # 它们指向同一个对象 True rgba.append(Alph) rgb [Red, Green, Blue, Alph]新列表内包含着由切片操作返回的, 请求的元素, 切片操作会返回的是以下的列表: correct_rgba rgba[:] correct_rgba[-1] Alpha correct_rgba [Red, Green, Blue, Alpha] rgba [Red, Green, Blue, Alph]为切片赋值可以改变列表大小甚至清空整个列表 letters [a, b, c, d, e, f, g] letters [a, b, c, d, e, f, g] # 替换一些值 letters[2:5] [C, D, E] letters [a, b, C, D, E, f, g] # 现在移除它们 letters[2:5] [] letters [a, b, f, g] # 通过用一个空列表替代所有元素来清空列表 letters[:] [] letters []内置函数 也支持列表 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] b3.2. 走向编程的第一步显然, 我们能够运用 去达成比二加上二更为繁琐的任务。举个例子, 我们能够采用像如下这般的方式来撰写出该斐波那契数列最先开始部分的子序列: # 斐波那契数列 # 前两项之和即下一项的值 a, b 0, 1 while a 10: ... print(a) ... a, b b, ab ... 0 1 1 2 3 5 8本例引入了几个新功能。备注由于 ** 这一运算符号 比 - 的运算优先级 更高, 以至于, 这里的 -3**2 就会被解释为 -(3**2) , 依据这个规则, 其最终结果是 -9。若要避免出现这样的问题 , 并且使结果得到 9 , 那么此时可以采用 (-3)**2 这种表达形式。和别样的语言不一样, 特别的字符 像 \n 在单引号 (...) 和双引号 (...) 里头的意思相同, 这两种引号仅有的差别是, 无需在单引号里对双引号 转义 不过这时必须把单引号转义成 \, 反过来也是这样。
返回列表