一、变量、运算符与数据类型
1. 注释
- 在 Python 中,# 表示注释,作用于整行。
- ''' ''' 或者 """ """ 表示区间注释,在三引号之间的所有内容被注释(多行注释)。
2. 运算符
1. 位运算符
操作符 | 名称 | 示例 |
~ | 按位取反 | ~4 |
& | 按位与 | 4 & 5 |
` | 按位或 | |
^ | 按位异或 | 4 ^ 5 |
<< | 左移 | 4 << 2 |
>> | 右移 | 4 >> 2 |
运算符的优先级
- 一元运算符优于二元运算符。例如
3 ** -2
等价于3 ** (-2)
。 - 先算术运算,后移位运算,最后位运算。例如
1 << 3 + 2 & 7
等价于(1 << (3 + 2)) & 7
。 - 逻辑运算最后结合。例如
3 < 4 and 4 < 5
等价于(3 < 4) and (4 < 5)
。
2. 数据类型与转换
类型 | 名称 | 示例 |
int | 整型 | <class 'int'>-876, 10 |
float | 浮点型 | <class 'float'>3.149, 11.11 |
bool | 布尔型 | <class 'bool'>True, False |
通过 print() 可看出 a 的值,以及类 (class) 是int
a = 1031 print(a, type(a)) # 1031 <class 'int'>
type可以帮助我们去获取到它的类型,再通过print()打印出来。
type()
不会认为子类是一种父类类型,不考虑继承关系。isinstance()
会认为子类是一种父类类型,考虑继承关系- 如果要判断两个类型是否相同使用
isinstance()。
Python 里面有很多用途广泛的包 (package),用什么你就引进(import)
什么。包也是对象,可以用dir(decimal)
来看其属性和方法
【例子】使 1/3 保留 5 位,用getcontext().prec
来调整精度。
import decimal from decimal import Decimal decimal.getcontext().prec = 5 c = Decimal(1) / Decimal(3) print(c)
布尔 (boolean) 型变量只能取两个值,True 和 False。当把布尔型变量用在数字运算中,用 1 和 0 代表 True 和 False
类型转换
- 转换为整型
int(x, base=10)
- 转换为字符串
str(object='')
- 转换为浮点型
float(x)
3. print() 函数
- 将对象以字符串表示的方式格式化输出到流文件对象file里。其中所有非关键字参数都按
str()
方式进行转换为字符串输出; - 关键字参数
sep
是实现分隔符,比如多个参数输出时想要输出中间的分隔字符; - 关键字参数
end
是输出结束时的字符,默认是换行符\n
; - 关键字参数
file
是定义流输出的文件,可以是标准的系统输出sys.stdout
,也可以重定义为别的文件; - 关键字参数
flush
是立即把内容输出到流文件,不作缓存。
没有参数时,每次输出后都会换行。
shoplist = ['apple', 'mango', 'carrot', 'banana'] print("This is printed without 'end'and 'sep'.") for item in shoplist: print(item) # This is printed without 'end'and 'sep'. # apple # mango # carrot # banana
item
值与'another string'
两个值之间用sep
设置的参数&
分割。由于end
参数没有设置,因此默认是输出解释后换行,即end
参数的默认值为\n
。
shoplist = ['apple', 'mango', 'carrot', 'banana'] print("This is printed with 'sep='&''.") for item in shoplist: print(item, 'another string', sep='&') # This is printed with 'sep='&''. # apple&another string # mango&another string # carrot&another string # banana&another string
二、条件语句
1. if 语句
- if 语句的
expr_true_suite
代码块只有当条件表达式expression
结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句,如果为假则不输出。 - 单个 if 语句中的
expression
条件表达式可以通过布尔操作符and
,or
和not
实现多重条件判断。if - else语句就是对if
后的内容进行一个判断,是则将继续执行紧跟在该代码块后面的语句,否则执行else
后的语句
temp = input("猜一猜小哥哥帅不帅?") guess = int(temp) # input 函数将接收的任何数据类型都默认为 str。 if guess == 帅: print("你太了解小姐姐的心思了!") print("哼,猜对也没有奖励!") else: print("猜错了,小姐姐现在心里想的是666!") print("游戏结束,不玩儿啦!")
if - elif - else
语句对if
后的内容进行一个判断,是则将继续执行紧跟在该代码块后面的语句,否则继续对elif
后的内容进行一个判断,是则将继续执行紧跟在该代码块后面的语句,否则直到执行else
后的语句
temp = input('请输入成绩:') source = int(temp) if 100 >= source >= 90: print('A') elif 90 > source >= 80: print('B') elif 80 > source >= 60: print('C') elif 60 > source >= 0: print('D') else: print('输入错误!')
assert
这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。
my_list = ['lsgogroup'] my_list.pop(0) assert len(my_list) > 0 # AssertionError
三、循环语句
1.while语句
while语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于while代码块的缩进语句,代码块会一直循环执行,直到布尔表达式的值为布尔假。。
string = 'abcd' while string: print(string) string = string[1:] # abcd # bcd # cd # d
如果布尔表达式不带有<、>、==、!=、in、not in等运算符,仅仅给出数值之类的条件,也是可以的。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。
当while循环正常执行完的情况下,执行else输出,如果while循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容。
count = 0 while count < 5: print("%d is less than 5" % count) count = count + 1 else: print("%d is not less than 5" % count) # 0 is less than 5 # 1 is less than 5 # 2 is less than 5 # 3 is less than 5 # 4 is less than 5 # 5 is not less than 5
2.for 语句
for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict。
member = ['张三', '李四', '刘德华', '刘六', '周润发'] for each in member: print(each) # 张三 # 李四 # 刘德华 # 刘六 # 周润发
每次循环,迭代变量被设置为可迭代对象的当前元素,提供给代码块使用。
当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容,与while - else语句一样。
for num in range(10, 20): # 迭代 10 到 20 之间的数字 for i in range(2, num): # 根据因子迭代 if num % i == 0: # 确定第一个因子 j = num / i # 计算第二个因子 print('%d 等于 %d * %d' % (num, i, j)) break # 跳出当前循环 else: # 循环的 else 部分 print(num, '是一个质数') # 10 等于 2 * 5 # 11 是一个质数 # 12 等于 2 * 6 # 13 是一个质数 # 14 等于 2 * 7 # 15 等于 3 * 5 # 16 等于 2 * 8 # 17 是一个质数 # 18 等于 2 * 9 # 19 是一个质数
range 这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值。
for i in range(1, 10, 2): print(i) # 1 # 3 # 5 # 7 # 9
3.跳出循环语句
break语句可以跳出当前所在层的循环。
import random secret = random.randint(1, 10) #[1,10]之间的随机数 while True: temp = input("猜一猜小姐姐想的是哪个数字?") guess = int(temp) if guess > secret: print("大了,大了") else: if guess == secret: print("你太了解小姐姐的心思了!") print("哼,猜对也没有奖励!") break else: print("小了,小了") print("游戏结束,不玩儿啦!")
continue终止本轮循环并开始下一轮循环。
for i in range(10): if i % 2 != 0: print(i) continue i += 2 print(i) # 2 # 1 # 4 # 3 # 6 # 5 # 8 # 7 # 10 # 9
四、异常处理
1. Python 标准异常总结
标识符 | 内容 | 标识符 | 内容 |
BaseException |
所有异常的 基类 | Exception | 常规异常的基类 | |
StandardError | 所有的内建标准异常的基类 | ArithmeticError | 所有数值计算异常的基类 |
FloatingPointError | 浮点计算异常 | OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除数为零 | AssertionError | 断言语句(assert)失败 |
AttributeError | 尝试访问未知的对象属性 | EOFError | 没有内建输入,到达EOF标记 |
EnvironmentError | 操作系统异常的基类 | OError | 输入/输出操作失败 |
OSError | 操作系统产生的异常(例如打开一个不存在的文件) | WindowsError | 系统调用失败 |
ImportError | 导入模块失败的时候 | KeyboardInterrupt | 用户中断执行 |
LookupError | 无效数据查询的基类 | IndexError | 索引超出序列的范围 |
KeyError | 字典中查找一个不存在的关键字 | MemoryError | 内存溢出(可通过删除对象释放内存) |
NameError | 尝试访问一个不存在的变量 | UnboundLocalError | 访问未初始化的本地变量 |
ReferenceError | 弱引用试图访问已经垃圾回收了的对象 | RuntimeError | 一般的运行时异常 |
NotImplementedError | 尚未实现的方法 | SyntaxError | 语法错误导致的异常 |
IndentationError | 缩进错误导致的异常 | TabError | Tab和空格混用 |
SystemError | 一般的解释器系统异常 | TypeError | 不同类型间的无效操作 |
ValueError | 传入无效的参数 | UnicodeError | Unicode相关的异常 |
UnicodeDecodeError | Unicode解码时的异常 | UnicodeEncodeError | Unicode编码错误导致的异常 |
UnicodeTranslateError | Unicode转换错误导致的异常 |
2.Python标准警告总结
标识符 | 内容 | 标识符 | 内容 |
Warning | 警告的基类 | DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 | UserWarning | 用户代码生成的警告 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 | RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning | 可疑语法的警告 | ImportWarning | 用于在导入模块过程中触发的警告 |
UnicodeWarning | 与Unicode相关的警告 | BytesWarning | 与字节或字节码相关的警告 |
ResourceWarning | 与资源使用相关的警告 |