数和表达式
整除: //
>>>-10 // 3 -4
*向下圆整 结果为负时,圆整后离0更远。理解为floor(x)
求余: % 等价于 x - ((x // y) * y)
乘方:**
十六进制、八进制、二进制数:
oxAF 010 0b1011010010
str、float 并不是函数而是类
向下取整: math.floor()
向上取整:math.ceil()
cmath和复数:
nan = not a number 非数值
隐蔽冲突:
>>>import cmath
注意没有使用from ... import ...
,后者使用后无法正常使用常规函数sqrt
除非必须使用后者,否则坚持使用常规版import
变量
无默认值,需先赋值。不能以字母打头,字母、数字、下划线组成。
Q:表达式与语句?
A:表达式是一些东西,语句做一些事情
获取用户输入:input
>>> x = input("x: "
x: 34
变量命名:
PEP 8要求:
- 用小写字母拼写,多个单词用下划线连接;
- 受保护的实例属性用单个下划线开头;
- 私有的实例属性用两个下划线开头.
使用占位符格式化:
>>>a = 100; b = 6
>>>print('%d + %d = %d' %(a, b, a + b))
100 + 6 = 106
变量类型转换:
int() float() str() chr() ord()
函数
绝对值:abs
浮点数圆整为与之最接近的整数:round *距离两个整数一样近时圆整到偶数
幂运算:pow(x, y[, z]) z是可选参数 返回x的y次方对z求模的结果
模块
>>>import module
>>>module.function
or
>>>from module import function
def main():
# Todo: Add your code here
pass
if __name__ == '__main__': #当导入模块里有可执行代码,导入模块时即执行。只有当直接执行时模块名字才是“_main_”而不会执行。
main()
global
全局 nonlocal
非嵌套作用域
运行Python脚本
脚本第一行(UNIX): #!/usr/bin/env python
$ chmod a+x hello.py
$ hello.py
or
./hello.py
注释
汝应注释 :thou shalt comment
233
如果写起来难,理解起来必然也难
字符串及方法:
转义:’ ‘’ 换行符:\n
'Let’s say ‘‘Hello’’ ’ → ‘Let’\s say ‘‘Hello’’ ’
拼接: 连续输入两个字符串,相加
使用str将值转换为用户能够看懂的字符串,使用repr通常会获得值的合法Python表达式表示
>>>print(repr(''Hello,\nworld!''))
'Hello,\nworld!'
>>>print(str(''Hello,\nworld!''))
Hello,
world!
长字符串: ‘’‘跨越多行’’’ or “”“like this”""
常规字符串跨越多行:行尾加
原始字符串:(不以特殊方式处理反斜杠,写正则)
>>>print(r 'C:\nowhere')
C:\nowhere
1.引号需要像通常那样进行转义,但是用于转义的反斜杠也将包含在最终的字符串中
>>>print(r'Let\'s go!')
Let\'s go!
2.原始字符串不能以单个反斜杠结尾(EOF),除非进行转义。
解决以\结尾的DOS路径:以\单独作为一个字符串
>>>print(r'C:\Program Files\foo\bar' '\\')
C:\Program Files\foo\bar\
3.使用原始字符串,可使用单/双/三引号
Unicode、bytes、bytearray:待补充
斯堪的纳维亚字母没有对应的ASCII编码,最好使用UTF-8
Note: 字符串不可变
- 格式与转换
在%左边指定一个字符串(格式字符串),并在右边指定要设置其格式的值
format = "Hello, %s . %s"
val = ("A", "b")
format % val
'Hello, A . b'
%s
称为转换说明符,指出要将值插入什么地方,s意味着将值视为字符串进行格式设置。如果指定值不是字符串,将使用str转换。
%.3f
将值的格式设置为包含3位小数的浮点数
- 对齐
- 查找
列表和元组
有些编程语言的第一个元素索引为1,但从0开始之初相对于序列开头的偏移量。
列表可更改,元组不可以。几乎在所有情况下都可使用列表来代替元组。
序列操作:
- 索引 indexing
-1 最后一个元素
对函数调用返回的序列也可执行索引操作:
>>>fourth = input('Year: ')[3]
Year: 2005
>>>fourth
'5'
- 切片 slicing
提供两个索引指定切片的边界,其中第一个索引指定的元素包含在切片内,但第二个索引指定的元素不包含在切片内
步长为第三个参数,默认为1,可为负,不能为0
>>>numbers[-3:0]
[]
如果第一个索引指定的元素位于第二个索引指定的元素后面,结果为空
[:]
复制整个序列
- 相加
不能拼接不同类型的序列 - 相乘
序列与数x相乘,重复序列x次
>>>'python' * 3
'pythonpythonpython'
>>>[42]*2
[42, 42]
使用None初始化列表:
>>>seq = [None] * 3; seq
[None, None, None]
- 成员资格检查
运算符(布尔运算符)in,返回True/False
长度:len()
最小值:min() 返回序列中最小的元素
最大值:max() 返回序列中最大的元素
列表操作:
函数(类)list
任何序列都可作为list参数
>>>list('hello')
['h','e','l','l','o']
- 修改列表:mutable
- 删除元素:del
del names[2]
- 切片赋值: 可替换为长度与其不同的序列;
- 可在不替换原有元素的情况下插入新元素
num[1:1] = [2,3,4]
列表方法: