前言
python,是龟叔在1989年为了打发无聊的圣诞节而编写的一门编程语言,特点是优雅、明确、简单,现今拥有丰富的标准库和第三方库。python适合开发web网站和各种网络服务,系统工具和脚本,作为“胶水”语言把其他语言开发的模块包装起来使用,科学计算等等。
小编学习python的理由有三个:为了爬取需要的各种数据,不妨学习一下python。为了分析数据和挖掘数据,不妨学习一下python。为了做一些好玩有趣的事,不妨学习一下python。
准备工作
1、在python官网下载安装喜欢的版本,小编使用的,是当前最新版本3.6.0。
2、打开idle,这是python的集成开发环境,尽管简单,但极其有用。idle包括一个能够利用颜色突出显示语法的编辑器、一个调试工具、python shell,以及一个完整的python3在线文档集。
hello world
1、在idle中,输入print(‘hello world’),回车,则打印出hello world。ps:语句末尾加不加分号;都可以,小编决定不加分号,更简单。
2、使用sublime新建文件hello.py,内容如下:
print(‘hello world’)
在windows下,shift+右键,在此处打开命令窗口,执行python hello.py,回车,则打印出hello world。
3、使用sublime新建文件hello.py,内容如下:
#!/usr/bin/env python
print(‘hello world’)
在linux或mac环境下,可以直接运行脚本。首先添加执行权限chmod a+x hello.py,然后执行./hello.py。当然,也可以和windows一样,使用python hello.py来执行脚本。
引入模块
1、新建name.py,内容如下:
name=’voidking’
2、执行python name.py。3、进入python shell模式,执行import name,print(name.name),则打印出voidking。
基础语法
常用函数(print)、数据类型、表达式、变量、条件和循环、函数。和其他语言类似,下面选择一部分展开。
list链表数组
1、定义数组mylist = [‘hello’, 100, true]2、输出数组print(mylist)3、输出数组元素print(mylist[0]),print(mylist[-1])4、追加元素到末尾mylist.append(‘voidking’)5、追加元素到头部mylist.insert(0,’voidking’)6、删除元素mylist.pop(),mylist.pop(0)7、元素赋值mylist[0]=’hello666′
tuple固定数组
1、定义数组mytuple = (‘hello’, 100, true)错误定义:mytuple1=(1),正确定义:mytuple=(1,)2、输出数组print(mytuple)3、输出数组元素print(mytuple[0])4、tuple和list结合t = (‘a’, ‘b’, [‘a’, ‘b’]),t[2][0]=’x’
if语句ifscore = 75
if score>=60:
print ‘passed’
两次回车,即可执行代码。
if-elseif score>=60:
print(‘passed’)
else:
print(‘failed’)if-elif-elseif score>=90:
print(‘excellent’)
elif score>=80:
print(‘good’)
elif score>=60:
print(‘passed’)
else:
print(‘failed’)循环for循环l = [75, 92, 59, 68]
sum = 0.0
for score in l:
sum += score
print(sum / 4)while循环sum = 0
x = 1
while x 100:
break
print(sum)continuel = [75, 98, 59, 81, 66, 43, 69, 85]
sum = 0.0
n = 0
for x in l:
if x < 60:
continue
sum = sum + x
n = n + 1
print(sum/n)多重循环for x in ['a', 'b', 'c']:
for y in ['1', '2', '3']:
print(x + y)dict
dict的作用是建立一组 key和一组value的映射关系。
d = {
‘adam’: 95,
‘lisa’: 85,
‘bart’: 59,
‘paul’: 75
}
print(d)
print(d[‘adam’])
print(d.get(‘lisa’))
d[‘voidking’]=100
print(d)
for key in d:
print(key+’:’,d.get(key))set
set持有一系列元素,这一点和list很像,但是set的元素没有重复,而且是无序的,这点和dict的key很像。
s = set([‘adam’, ‘lisa’, ‘bart’, ‘paul’])
print(s)
s = set([‘adam’, ‘lisa’, ‘bart’, ‘paul’, ‘paul’])
print(s)
len(s)
print(‘adam’ in s)
print(‘adam’ in s)
for name in s:
print(name)s = set([(‘adam’, 95), (‘lisa’, 85), (‘bart’, 59)])
for x in s:
print(x[0]+’:’,x[1])s.add(100)
print(s)
s.remove((‘adam’,95))
print(s)函数自带函数del sum
l = [x*x for x in range(1,101)]
print sum(l)自定义函数def my_abs(x):
if x >= 0:
return x
else:
return -x
my_abs(-100)引入函数库import math
def quadratic_equation(a, b, c):
x = b * b – 4 * a * c
if x < 0:
return none
elif x == 0:
return -b / (2 *a)
else:
return ((math.sqrt(x) - b ) / (2 * a)) , ((-math.sqrt(x) - b ) / (2 * a))
print(quadratic_equation(2, 3, 0))
print(quadratic_equation(1, -6, 5))可变参数def average(*args):
if args:
return sum(args)*1.0/len(args)
else:
return 0.0
print(average())
print(average(1, 2))
print(average(1, 2, 2, 3, 4))切片list切片l = ['adam', 'lisa', 'bart', 'paul']
l[0:3]
l[:3]
l[1:3]
l[:]
l[::2]倒序切片l[-2:]
l[-3:-1]
l[-4:-1:2]l = range(1, 101)
l[-10:]
l[4::5][-10:]
ps:range是有序的list,默认以函数形式表示,执行range函数,即可以list形式表示。
字符串切片def firstcharupper(s):
return s[0:1].upper() + s[1:]
print(firstcharupper(‘hello’))迭代
python的for循环不仅可以用在list或tuple上,还可以作用在其他任何可迭代对象上。迭代操作就是对于一个集合,无论该集合是有序还是无序,我们用for循环总是可以依次取出集合的每一个元素。集合是指包含一组元素的数据结构,包括:
有序集合:list,tuple,str和unicode;
无序集合:set
无序集合并且具有key-value对:dict
for i in range(1,101):
if i%7 == 0:
print(i)索引迭代
对于有序集合,元素是有索引的,如果我们想在for循环中拿到索引,怎么办?方法是使用enumerate()函数。
l = [‘adam’, ‘lisa’, ‘bart’, ‘paul’]
for index, name in enumerate(l):
print(index+1, ‘-‘, name)
mylist = zip([100,20,30,40],l);
for index, name in mylist:
print(index, ‘-‘, name)迭代dict的valued = { ‘adam’: 95, ‘lisa’: 85, ‘bart’: 59 }
print(d.values())
for v in d.values():
print(v)
ps:python3.x中,dict的方法dict.keys(),dict.items(),dict.values()不会再返回列表,而是返回一个易读的“views”。这样一来,k = d.keys();k.sort()不再有用,可以使用k = sorted(d)来代替。同时,dict.iterkeys(),dict.iteritems(),dict.itervalues()方法不再支持。
迭代dict的key和valued = { ‘adam’: 95, ‘lisa’: 85, ‘bart’: 59 }
for key, value in d.items():
print(key, ‘:’, value)列表生成一般表达式l = [x*(x+1) for x in range(1,100)]
print(l)复杂表达式d = { ‘adam’: 95, ‘lisa’: 85, ‘bart’: 59 }
def generate_tr(name, score):
if score >=60:
return ‘%s%s’ % (name, score)
else:
return ‘%s%s’ % (name, score)
tds = [generate_tr(name,score) for name, score in d.items()]
print(”)
print(‘namescore’)
print(‘\n’.join(tds))
print(”)条件表达式l = [x * x for x in range(1, 11) if x % 2 == 0]
print(l)def touppers(l):
return [x.upper() for x in l if isinstance(x,str)]
print(touppers([‘hello’, ‘world’, 101]))多层表达式l = [m + n for m in ‘abc’ for n in ‘123’]
print(l)l = [a*100+b*10+c for a in range(1,10) for b in range(0,10) for c in range(1,10) if a==c]
print(l)后记
至此,python基础结束。接下来,爬虫飞起!
更多python,基础相关文章请关注php中文网!