我们准备利用17天时间,将 Python 基础的刻意练习分为如下任务:
Task01:变量、运算符与数据类型(1day)
Task02:条件与循环(1day)
Task03:列表与元组(2day)
Task04:字符串与序列(1day)
Task05:函数与Lambda表达式(2day)
Task06:字典与集合(1day)
Task07:文件与文件系统(2day)
Task08:异常处理(1day)
Task09:else 与 with 语句(1day)
Task10:类与对象(2day)
Task11:魔法方法(2day)
Task12:模块(1day)
TASK01 :变量、运算符与数据类型
- 注释
在Python中,#表示注释,作用于整行
# 这是一个注释
print("Hello world")
# Hello world
""" """或者''' '''表示区间注释,在三引号之间的所有内容被注释
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号
这是多行注释,用三个单引号
'''
print("Hello Lsgo")
# Hello Lsgo
"""
这是多行注释,用三个双引号
这是多行注释,用三个双引号
这是多行注释,用三个双引号
"""
print("hello china")
# hello china
2.运算符
三元运算符
x, y = 4, 5
if x < y:
small = x
else:
small = y
print(small) # 4
有了三元操作符的条件表达式,你可以使用一条语句来完成以下的条件判断和赋值操作
x, y = 4, 5
small = x if x < y else y
print(small) # 4
优先级
一元运算符高于二元运算符
先乘除后加减,有括号先括号内
比较运算符高于逻辑运算符
print(-3 ** 2) # -9
print(3 ** -2) # 0.1111111111111111
print(-3 * 2 + 5 / -2 - 4) # -12.5
print(3 < 4 and 4 < 5) # True
3.变量和赋值
在使用变量之前,需要对其先赋值
变量名可以包含字母、数字、下划线、但是变量名不能以数字开头
Python变量名是区分大小写的, foo!=FOO
例子1
first = 2
second = 3
third = first + second
print(third) # 5
``
例子2
```python
myTeacher = "老马的程序人生"
yourTeacher = "小马的程序人生"
ourTeacher = myTeacher + yourTeacher
print(ourTeacher) # 老马的程序人生小马的程序人生
4.数字
int整型 float浮点型 bool布尔型(True False)
对于二进制例子
a = 1031
print(bin(a)) # 0b10000000111
print(a.bit_length()) # 11
该函数是找到一个整数的二进制表示,再返回其长度
浮点型
有时候我们想保留浮点型的小数点后n位,可以用 decimal包里的Decimal对象和**getcontext()**方法来实现。
import decimal
from decimal import Decimal
a = decimal.getcontext()
print(a)
# Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
Decimal对象的默认精度是28位
例子
b = Decimal(1) / Decimal(3)
print(b)
# 0.3333333333333333333333333333
我们如何自己调整保留位数呢?
可以用getcontext().prec来调整精度
例子
decimal.getcontext().prec = 4
c = Decimal(1) / Decimal(3)
print(c)
# 0.3333
布尔型
布尔型变量只能取两个值,True和False,当把布尔变量用在数字运算中,用1和0代表True和False
print(True + True) # 2
print(True + False) # 1
print(True * False) # 0
除了直接给变量赋值 True 和 False,还可以用 bool(X) 来创建变量,其中 X 可以是
基本类型:整型、浮点型、布尔型
容器类型:字符、元组、列表、字典和集合
print(type(0), bool(0), bool(1))
# <class 'int'> False True
print(type(10.31), bool(0.00), bool(10.31))
# <class 'float'> False True
print(type(True), bool(False), bool(True))
# <class 'bool'> False True
bool 作用在基本类型变量的总结:X 只要不是整型 0、浮点型 0.0,bool(X) 就是 True,其余就是 False。
print(type(''), bool(''), bool('python'))
# <class 'str'> False True
print(type(()), bool(()), bool((10,)))
# <class 'tuple'> False True
print(type([]), bool([]), bool([1, 2]))
# <class 'list'> False True
print(type({}), bool({}), bool({'a': 1, 'b': 2}))
# <class 'dict'> False True
print(type(set()), bool(set()), bool({1, 2}))
# <class 'set'> False True
bool 作用在容器类型变量的总结:X 只要不是空的变量,bool(X) 就是 True,其余就是 False。
确定bool(X) 的值是 True 还是 False,就看 X 是不是空,空的话就是 False,不空的话就是 True。
对于数值变量,0, 0.0 都可认为是空的。
对于容器变量,里面没元素就是空的。
5.数据类型与转换
获取类型信息 type()
print(type(1)) # <class 'int'>
print(type(5.2)) # <class 'float'>
print(type(True)) # <class 'bool'>
print(type('5.2')) # <class 'str'>
获取类型信息 isinstance()
print(isinstance(1, int)) # True
print(isinstance(5.2, float)) # True
print(isinstance(True, bool)) # True
print(isinstance('5.2', str)) # True
转换为整型 int()
转换为字符串 str()
转换为浮点型 float()
print(int('520')) # 520
print(int(520.52)) # 520
print(float('520.52')) # 520.52
print(float(520)) # 520.0
print(str(10 + 10)) # 20
print(str(10.1 + 5.2)) # 15.3