廖雪峰课程 Python笔记(一)
一、学习网站
廖雪峰 Python课程:点击打开
二、补充前面知识
由于
python2.x
和python3.x
不互相兼容,并且官方宣布2020年即将停止对python2.x
的维护,所以我开始学习python3.x
版本,这个部分主要是对之前学习的内容进行补充,新的内容会在后面更新。
1、print ()
在 python3.x
中,不再使用 print ...
打印内容,而是换成更直观的 print()
方法,写法依旧:
1 | print ("hello") |
2、格式化
经常我们需要输出类似 "亲爱的xxx你好!你xx月的话费是xx,余额是xx"
之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。
这里我们可以使用占位符进行操作:
格式如下:
1 | "内容 + 占位符1 + 内容 + 占位符2" % (占位符对应内容值1,占位符对应内容值2) |
1 | "Hello, %s" % "world" # "Hello, world" |
常用占位符:
1 | %d # 整数 |
3、format()
使用字符串的 format()
方法,用参数 {0}、{1}...
来替换字符串占位符,比较麻烦。
1 | "Hello, {0}, 成绩提升了 {1:.1f}%".format("小明", 17.125) |
4、tuple
由于 tuple(名称:元组)
一旦初始化就不能修改,没有 append()
, insert()
方法,所以比较安全,如果能用 tuple
代替 list
的话尽量用 tuple
。
补充1:
但是有种情况可以修改 tuple
的值,就是 tuple
里面含有 list
,如下:
1 | test1 = ["hi","nihao"] |
补充2:
如果 tuple
只有 1
个元素,需要添加一个 ,
都好,以免误解成数学计算意义上的符号。
1 | test3 = (1,) # (1,) |
5、input() 和 raw_input()
python3.x中已经没有raw_input()!!
相同:都是用来获取控制台的输入,并且都能接收字符串。
不同:
1 | input() 对纯数字输入,也将返回数字类型(int,float)。 |
1 | input() 需要接收一个合法的python表达式,即输入内容需要用括号括起来,不然报错。 |
除非对 input()
有特别需求,不然一般推荐使用 raw_input()
和用户交互。input()
需要输入 python
表达式:
1 | a = input("input:") |
raw_input()
将所有输入作为字符串看待:
1 | a = raw_input("input:") |
6、循环
补充a、break,退出循环
1 | n = 1while n <= 100: |
补充b、continue,跳过这次循环
1 | n = 0 |
循环
是让计算机做重复任务的有效的方法。break语句
可以在循环过程中直接退出循环
,而 continue语句
可以提前结束本轮循环
,并直接开始下一轮循环。这两个语句通常都必须配合if语句
使用。
注意,不要滥用
break
和continue
语句。break
和continue
会造成代码执行逻辑分叉过多,容易出错。
大多数循环并不需要用到break
和continue
语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉break
和continue
语句。
7、关于数值类型的补充
a、整数类型:
在 python3.x
中,只要内存允许,整型数据的值可以拓展到 任意长度
,整数取值范围几乎包括全部整数,这给 大数据的计算
带来便利。
b、实型数据:
实型也称 浮点型
,Python语言中,实数只采用十进制。它有两种表示形式: 十进制形式
和 指数形式
。
十进制数形式由数码0~9和小数点组成,如345.0、12.2、0.0等。实型数据允许小数点后面没有任何数字,表示小数部分为0,如23.表示23.0。
指数形式即由科学计数法表示的浮点数,由十进制数加阶码标志E或e组成。e之前为数字部分,之后为指数部分,且两部分必须同时出现,指数必须为整数。如45e-5,9.34e2等,分别代表45x10-5、9.34x102,而e4,3.4e3.4、34e等是非法的浮点型常量。
c、复合型数据:
科学计算中经常遇到 复数
运算问题,如数学中求方程的复根,电工学中交流电路的计算等都用到复数运算。
python提供了 复数类型
,形式为 a+bj
,其中 a是复数的实部
,b是虚部
,j表示-1的平方根
(虚数单位)。代码:
1 | x = 12 +34 j |
通过 x.real
和 x.imag
来分别获取复数x的实部和虚部,结果都是 浮点型
1 | x.real # 12.0 |
8、数据类型转换 和 最值
Python内置的常用函数还包括 数据类型转换函数
,比如 int()函数
可以把其他数据类型转换为 整数
:
1 | int("123") # 123 |
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个 “别名”
:
1 | a = abs # 变量a指向abs函数 |
max函数 max()
可以接收任意多个参数,并返回最大的那个:
1 | max(1, 2) # 2 |
9、空函数 pass语句
空函数实际上什么也不做,一般用来作为 占位符
,比如现在没想好写什么内容,可以先写个 pass
让代码运行起来:
1 | def nop(): |
还可以放在其他语句中:
1 | if age >= 18: |
10、python运算符
运算符详细介绍:点击查看^
异或运算
比如,
1 | 1 ^ 1 = 0 |
11、默认参数的补充
可以不按照顺序传递参数:
1 | def f1(a,b,c="5",d=""): |
定义默认参数要牢记一点:默认参数必须指向不变对象
!
12、可变参数的补充
在参数前面加了一个 *
号。
1 | def f1(a,b,*list): |
13、关键字参数的补充
关键字参数允许你传入 0个
或者任意个
参数名的参数,这些关键字参数在函数内部会自动组装成一个 dict
:
1 | def person(name, age, **kw): |
**extra
表示把 extra
这个 dict
的所有 key-value
用关键字参数传入到函数的 **kw
参数, kw
将获得一个 dict
,注意 kw
获得的 dict
是 extra
的一份拷贝,对 kw
的改动不会影响到函数外的 extra
。
1 | extra = {"city": "Beijing", "job": "Engineer"} |
14、迭代的补充
for ... in
循环:
多个变量迭代 key
和 value
:
1 | d = {"x": "A", "y": "B", "z": "C" } |
15、生成器的补充
第一种方法很简单,只要把一个列表生成式的 []
改成 ()
:
1 | L = [x * x for x in range(10)] |