>>> 12 + 3
15
>>> 15 * 2
30
>>> 21%2 #(取余数)
1
>>> 12/13 #(因为答案要取整数值, 0.923... 会变成 0)
0
>>> 12.0 / 13 #(这样就没问题了, 因为中蟒明白你现在要小数
0.92307692307692313
>>> 12 + 3 * 3 #(先乘除, 后加减)
21
>>> 2 ** 4
16
>>> 2 ** 64 #(超出了最大整数上限)
OverflowError: integer exponentiation
>>> 2L ** 64 #(用了 2L, 中蟒知道你要用大整数, 就没问题了)
18446744073709551616L
变量: 你可以在中蟒中定义一些变量, 并为给它们指定值
>>> 甲 = 12
>>> 乙 = 3
>>> 甲 + 乙
15
>>> 甲 + 乙**乙
39
>>> 甲 = 0 #(可以重新指定值)
>>> 乙 = 甲 + 1
>>> 写 乙
1
>>> 删除 甲 # 从变数表中除去 '甲', 共空出记忆体
字串: 字串是指一串的文字符. 如 "This is a test", 或 "这个也算 1 个"
中蟒内建了许多字串的操作. 其中特别针对中文做了几个常用到的函数. 包括:
\begin{verbatim}
>>> 甲 = "这是this字串"
>>> 甲.中英文字数()
8
>>> 甲.中文字数()
4
>>> 甲.英文字数()
4
>>> 甲.拆字()
[ '这', '是', 't', 'h', 'i', 's', '字', '串' ]
>>> 甲.字串编码() #传回该字串的编码
'国标'
>>> 乙 = 甲.强设编码('大五') # 不做变换, 只改变编码代号
>>> 丙 = 甲.国标变大五() # 做编码变换
>>> 甲.十六进() # 以十六进位代表字串内容
'\\xb3\\x6f\\xac\\x4f\\x74\\x68\\x69\\x73\\xa6\\x72\\xa6\\xea'
>>> 长度(甲) # 记住中文字是占两个位元的
12
>>> 甲[0:2] # 抽出'甲'中的第 0 位到第 2 个子字串
'这'
>>> 写 '这也' + 甲[2:] # 产生一个新字串
'这也是this字串'
有几件事要留心:
抽取子字串时, 甲[始, 终] 里 '始' 是从 '0 位' 开始算的, 而 '终' 则是指到第几 '个'. 像上面字串中首字 '这' 的第位元是 '甲' 字串中的第 '0' 位, 但算是第 '1' 个字元. 如果不给出 '始', '终' 则暗示从字串的头, 尾开始数.
如果 '始', '终' 是负数的话, 则表示从字串的右面开始数起. '甲[-1]' 其实就是指最尾的字元
字串在中蟒属于不可变型态. 你不能做 "甲[0] = 't'" 这样的操作. 你只能利用字串中的值来产生新的字串, 像 " 甲 = 't' + 甲[1:] " 就没问题了.
序列: 你可以把序列想像成是阵列. 分别是你可以用任何型态的值放到序列中. 同样你可以抽取子序列. 和字串不同的是序列是可变的.
>>> 甲 = [ 'a', 12.5, 3, '你好' ] >>> 长度(甲) 4 >>> 甲[0] = 'wah' >>> 写 甲 [ 'wah', 12.5, 3, '你好' ] >>> 甲[2] = [ 3, 4, 5 ] >>> 写 甲 [ 'wah', 12.5, [ 3, 4, 5], '你好' ] >>> 删除 甲[0], 甲[1], 甲[2] # 或者也可以用 "删除 甲[0:3]" >>> 写 甲 [ '你好' ] >>> 甲[:0] = [ 12 ] # 插入一个序列 >>> 写 甲 [ 12, '你好' ]
字典: 字典其实也可以想像成一个阵列, 不过除了阵列中的元素可以是任何值外, 连阵列的索引也可以是任意字串或数字. 因为用起来很像字典的用法, 所以就叫字典型态了. 学术名字大概叫 "关键字索引式阵列".
>>> 甲 = { '我': 12, '你': 13, '他': 18 }
>>> 写 甲 # 注意字典中各条的先后次序是不定的 !
{ '你' : 13, '我': 12, '他': 18 }
>>> 甲['我']
12
>>> 甲['我们'] = 22 # 可以随时加入新条
>>> 甲.索引() # 取出字典中的所有条目
[ '我们', '我', '你', '他' ]
>>> 甲.值() # 取出字典中所有的值
[ 22, 12 ,13, 18 ]
另外一个学名是 '拼揍表'. 字典类是无法直接做子项抽取的, 必须先取出索引值. 意思就是如果 '甲' 是一个字典类, '甲[1]' 这样句法是错的, 要用 '甲.索引()[1]' 才行.
输入输出: 写 变量: 把变量显示到萤幕上, 另起一行
写 变量1, 变量2, 变量3: 依之写出变量组 写 变量1, 变量2, : 如果最后加上 ',', 则不另起新一行 读入(指示字串): 读取用户的键盘输入 文件 = 打开(档案名, 'r'): 打开文件档以备读取资料 文章 = 文件.读(): 将文件内容全部读入, 资料为字串型态 文章 = 文件.读一行(): 依次读取文件中的一行, 资料为字串型态 文章 = 文件.读多行(): 全部读入, 依 '回车' 键分成多行, 资料为序列型态 文件 关闭(): 关闭文件. 文件 = 打开(档案名, 'w'): 打开文件档以备写出资料 文件.写(字串): 把字串内容写到档案中去 文件.关闭(): 关闭文件. 注意文件书写完, 很多时只是写到暂存区中, 有时要关闭文件才能把资料真正存到档案中.
熟悉你的周围: 中蟒提供了一些功能让你检视整个中蟒即译器的状态. 例如定义了哪些变量, 载入了什么模组, 内建函数的用法等. 这些功能被唤做 '自省' 功能. 可用的主要有
内容(): 目前的变量表里都有什么 内容(变量): 在 '变量' 中都定义了些什么 总内容: 和 '内容' 是一样的不过同时也显示英文项. 因为中蟒尚未完全翻译完, 所有有些功能必须参考英文版. 共用变数(): 整个程式中的全局变量表 私有变数(): 目前执行域的变量表 代号(变量): 中蟒为 '变量' 指派的代号, 如两个变量代号一样则两变量是完全相同的. (在记忆体中占相同的地址)