这个是零基础开始学Python笔记
视频+书籍:
imooc廖雪峰老师的视频 初始Python + Python进阶
书籍- Python核心编程
一、Python变量和数据类型
1.Python中数据类型
1.1整数
- 在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080。
- 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
1.2浮点数
- 浮点数也就是小数,对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。
1.3字符串
- 字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。
- 举个例子:
1.4布尔值
- 逻辑值,一个布尔值只有True、False两种值,布尔值可以用and、or和not运算。
1.5空值
- 空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
2.print+定义字符串
1.需要理解的' '和" ""
#注意使用print命令
#Enter a code
print 45678+0x12fd2
print '45678+0x12fd'
print 'Learn Python in imooc'
print 100 < 99
print 0xff == 255
- 输出结果如下
123456
45678+0x12fd #对比两者的不同
Learn Python in imooc
False
True
- ' '和" ""的相互套用
"I'm OK"
'Learn "Python" in imooc'
- 如果字符串既包含'又包含"怎么办?这个时候,就需要对字符串的某些特殊字符进行“转义”,Python字符串用\进行转义。要表示字符串
Bob said "I'm OK".
'Bob said \"I\'m OK\".'
- 常用转义符
\n 表示换行
\t 表示一个制表符
\\ 表示 \ 字符本身
- 逗号, 的意义
>>> print '100 + 200 =', 100 + 200
100 + 200 = 300 #运行结果
3.Python中raw字符串与多行字符串
-
r'...'
表示法不能表示多行字符串,也不能表示包含'和 "的字符串
'''Line 1
Line 2
Line 3'''
# 上下两者完全一样
'Line 1\nLine 2\nLine 3'
- 作业训练
# 注意查看前后变化,以及包含'和 "的字符串
# 请把下面的字符串用r'''...'''的形式改写,并用print打印出来:
'\"To be, or not to be\": that is the question.\nWhether it\'s nobler in the mind to suffer.'
print r'''"To be, or not to be": that is the question.
Whether it's nobler in the mind to suffer.'''
4 .Python中整数和浮点数
- 和数学运算不同的地方是,Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数:
1 + 2 # ==> 整数 3
1.0 + 2.0 # ==> 浮点数 3.0
# 试着比较一下三者不同
11 / 4 # ==> 2
11 % 4 # ==> 3 ,求余
11.0 / 4 # ==> 2.75 ,与11 / 4 比较
5.Python中布尔类型
- 在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:
a = True
print a and 'a=T' or 'a=F'
# 计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?
- 因为Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True.
- 解释一下代码
a = 'python'
print 'hello,', a or 'world'
b = ''
print 'hello,', b or 'world'
# 通过 or 运算,可以把空字符串“变成”默认字符串,而非空字符串保持不变。
二、List和Tuple类型
List
1.Python创建list+索引
- 由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:
>>> L = ['Michael', 100, True] #那些需要加上单引号
# 一个元素也没有的list,就是空list:
>>> empty_list = []
- 由于list是一个有序集合,通过索引来获取list中的指定元素,需要特别注意的是,索引从 0 开始,也就是说,第一个元素的索引是0,第二个元素的索引是1,以此类推。
>>> L = ['Adam', 'Lisa', 'Bart']
>>> print L[0]
Adam
# Python之倒序访问list
>>> print L[-1]
Bart
2.Python从list删除元素
- pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,那么原来的List就会发生相应。
L = ['Adam', 'Lisa', 'Paul', 'Bart']
#Paul的索引是2,Bart的索引是3,如果我们要把Paul和Bart都删掉,请解#释下面的代码为什么不能正确运行:
L.pop(2)
L.pop(3)
#怎样调整代码可以把Paul和Bart都正确删除掉?
L.pop(2)
L.pop(2)
3.替换元素
- 直接用索引进行赋值
L[-1] = 'Paul'
Tuple
1.Tuple与List
- tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。
>>> t = ('Adam', 'Lisa', 'Bart')
- 创建tuple和创建list唯一不同之处是用( )替代了[ ]
- 获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素。
2.创建单元素tuple
>>> t = (1)
>>> print t
1
# 比较两者不同
>>> t = (1,)
>>> print t
(1,)
- 因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。
- 正是因为用()定义单元素的tuple有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”
- Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。
3.Python之“可变”的tuple
>>> t = ('a', 'b', ['A', 'B'])
# List=['A', 'B']是可变的
>>> L = t[2]
>>> L[0] = 'X'
>>> L[1] = 'Y'
>>> print t
('a', 'b', ['X', 'Y'])
三、条件判断和循环
1.Python之if语句
>>> age = 20
>>> if age >= 18: # if 语句后接表达式,然后用:表示代码块开始
... print 'your age is', age #4个空格,不要使用Tab,
... print 'adult'
... #退出缩进需要多敲一行回车
your age is 20
adult
- if + else
if age >= 18:
print 'adult'
else:
print 'teenager'
- Python之 if-elif-else
- 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了。
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
elif age >= 3:
print 'kid'
else:
print 'baby'
# 比较两者的不同
# 那个代码存在错误
age = 8
if age >= 6:
print 'teenager'
elif age >= 18:
print 'adult'
else:
print 'kid'
2. for循环+ while循环
- for循环
L = [75, 92, 59, 68]
sum = 0.0
for socre in L:
sum=sum+socre
print sum / 4
- while循环
# 这个是正确的
sum = 0
x = 1
while x<100:
sum=sum+x
x=x+2
print sum
# 这个是错误的,想想为什么
sum = 0
x = 1
while x<100:
x=x+2
sum=sum+x
print sum
- Python之 break退出循环
sum = 0
x = 1
while x<100:
sum=sum+x
x=x+2
print sum
# 上面代码可以使用break实现:
sum = 0
x = 1
while True:
sum = sum + x
x = x + 2
if x > 100:
break
print sum
- Python之 continue继续循环
- 对已有的计算 0 - 100 的while循环进行改造,通过增加 continue 语句,使得只计算奇数的和:
sum = 0
x = 0
while True:
x = x + 1
if x > 100:
break #注意上下缩减关系
if x % 2 == 0: # if条件句后面一定要有冒号:
continue
sum = sum + x
print sum
- Python之 多重循环
- 在循环内部,还可以嵌套循环:
for x in ['A', 'B', 'C']:
for y in ['1', '2', '3']:
print x + y
# x 每循环一次,y 就会循环 3 次,这样,我们可以打印出一个全排列
四、Python之Dict+Set类型
Dict
- 什么是dict
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
#由于dict也是集合,len() 函数可以计算任意集合的大小:
>>> len(d)
3
- 访问dict
>>> print d['Adam']
95
# 一是先判断一下 key 是否存在,用 in 操作符:
if 'Paul' in d:
print d['Paul']
# 二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:
>>> print d.get('Bart')
59
>>> print d.get('Paul')
None
- dict的特点
- 打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。
- 更新dict
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
>>> d['Paul'] = 72
>>> print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}
2.set
- Python中什么是set
- set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
# 创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素
>>> s = set(['A', 'B', 'C', 'C'])
>>> print s
set(['A', 'C', 'B'])
>>> len(s)
3
#因为set不能包含重复的元素,所以...
- 访问set
>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
>>> 'Bart' in s #区别大小写
True
# 可以用 if 语句判断,
weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
x = '???' # 用户输入的字符串
if x in weekdays:
print 'input ok'
else:
print 'input error'
- 遍历set
- 由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现。
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for x in s:
print x[0] + ':', x[1] #如何理解+
- 更新set
- 添加元素时,用set的add()方法,如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了.
- 删除set中的元素时,用set的remove()方法,如果删除的元素不存在set中,remove()会报错.
s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for name in L:
if name in s:
s.remove(name)
else:
s.add(name)
print s
>>>set(['Bart'])
五、函数
- 编写函数
- 在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
def square_of_sum(L):
sum=0
for x in L:
sum=sum + x * x
return sum
print square_of_sum([1, 2, 3, 4, 5])
- Python之定义默认参数
- 由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:
#请定义一个 greet() 函数,它包含一个默认参数,如果没有传入,打印 'Hello, world.',如果传入,打印 'Hello, xxx.'
def greet(name='world'): #name是必需参数,'world'为默认参数
print 'Hello, ' + name + '.'
greet()
greet('Bart')
- Python之定义可变参数
- 可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:
def average(*args):
sum = 0.0 #想想sum = 0会是怎么样?
if len(args)==0:
return sum
for i in args:
sum=sum + i
return sum/len(args)
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)