中公IT优就业阶段学习与实战演练紧密结合,致力于让学员学习实战技能,真正做到学以致用,在理论学习完成后,设置大型项目实训阶段,让学员真正接触、切身体会岗位所需技能,直接加入名企项目研发团队,亲自动手参与项目开发、运作过程...
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。作为今年来越来越流行的语言,我们该如何学习或者转行学习Python呢,这里小迹为大家介绍如何入门学习Python。以下是小编为你整理的如何用python学数据结构
如何选择教材,好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。因此我们需要去百度或者知乎等平台看看大家是如何选购学习教材的,寻找最合适自己的学习资料;
书本的选购完成后,我们需要查看是否有配套的视频教程,可以通过百度或者去某些平台购买实时授课,这样在学习过程中遇到的问题就可以得以解答;
书和视频已搞定,那就是环境配置了,PC平台的环境配置以及库的安装,对于能否成功运行Python文件,有着关键的作用。不懂事要学会自己百度搜索相关的资源,一般你遇到的问题许多人也遇到过;
学习过程结束后,我们需要自己动手做些事情,比如写一些界面程序,学学机器学习,训练一下神经网络等,从中我们会发现我们的许多不足与不懂的地方,通过请教他人,或者加入一些论坛进行学习,参考他人的代码等,这都是很重要的,一定要学会站在巨人的肩膀上思考问题;
最后,还有非常非常重要的一点就是代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。学会标注而不是一味地复制,在编程时懂得思考,同样的问题可以有数十种解法,因此,懂得思考很重要。
for循环判断的格式
for循环判断的格式为:
for i in range(100): print i,
我们开始加上判断条件输出50到70之间的数
for i in range(100): if i >49 and i <71: print i,
当然可以以此类推,比如输出 1-100 内,除开50-70的数,说明一下在range后面的括号内,前面可以自定义起始值
#求1-100 内的所有奇数for i in range(1,100): if i % 2 == 1: print i,
我们在1到100内循环查找,如果i无法被2整除就是奇数(视频中这里写错了写成了质数,表示抱歉)
新增一个知识点获取随机数,我们可以通过导入的方式获取一个随机数
import randoma = random.randint(1,200)b = random.randint(1,999)print a,b
常用的变量
class Student(object): def __init__(self, name, score): self.name = name self.score =score def Print_score(self): print ('%s:%s' % (self.name, self.score))bat = Student('hongbin', 100)bat.Print_score()print bat.name
我们可以观察一下在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性:小编可是好不容易才“考了”100分 就这样被修改成了59,会不会很不爽!
在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,我们可以测试一下:
这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加健壮。
Python技巧
交换变量
x = 6
y = 5
x, y = y, x
print x
>>> 5
print y
>>> 6
if 语句在行内
print "Hello" if True else "World"
>>> Hello
连接
下面的最后一种方式在绑定两个不同类型的对象时显得很cool。
nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
print nfc + afc
>>> ['Packers', '49ers', 'Ravens', 'Patriots']
print str(1) + " world"
>>> 1 world
print `1` + " world"
>>> 1 world
print 1, "world"
>>> 1 world
print nfc, 1
>>> ['Packers', '49ers'] 1
数字技巧
#除后向下取整
print 5.0//2
>>> 2
# 2的5次方
print 2**5
>> 32
注意浮点数的除法
print .3/.1
>>> 2.9999999999999996
print .3//.1
>>> 2.0
数值比较
这是我见过诸多语言中很少有的如此棒的简便法
x = 2
if 3 > x > 1:
print x
>>> 2
if 1 < x > 0:
print x
>>> 2
同时迭代两个列表
nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teamb in zip(nfc, afc):
print teama + " vs. " + teamb
>>> Packers vs. Ravens
>>> 49ers vs. Patriots
6
带索引的列表迭代
teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
print index, team
>>> 0 Packers
>>> 1 49ers
>>> 2 Ravens
>>> 3 Patriots
跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类。在python类,定义类的方法。然后直接使用类的初始化调用自身,获取相应的属性。以下是小编为你整理的怎样用python自学编程
第一步,双击打开eclipse开发工具,新建python文件,添加编码格式,新建类User
第二步,在类中定义一个变量userNum,并赋值为0,注意排列位置
第三步,定义函数__init__,有五个参数,self、name、age、sex和addr
第四步,再定义一个函数showUser,打印出User类对应的属性值,
第五步,在类的下面定义一个对象变量user,然后调用类User,传入属性值
第六步,接着调用User类中的方法showUser,然后运行这个文件,打印出属性值
建立变量str在打印输出的时候可以截取其中的部分文本,例如print(str[0:-1]),python中的文本索引是从0开始的,-1则是末尾的开始位置,可以输入print(str[-1])查看最后一个文字
如果需要重复输出文本可以使用print(str*数字)这种格式,数字表示文本重复的次数 ,比如print(str*2)
“+”既是运算符号,也是文本连接符号,连接字符串的时候使用就好了
如print(str+“ma ma hong”)
转移字符使用"\",我们重用的换行就是“\n”
print("my\n name")
如果不需要转义,就在字符串前面加“r”即 print(r"my\n name")
需要注意的是python里面的字符串不能更改,如将str的首字母改为L
str[0]=L python会报错
此外,还有就是格式化字符串,和C是一致的,搞不清是什么类型的时候用%s就好了
如“python %s”% “language”
函数定义
def 函数名(参数名):
函数体
说明:
如果函数有返回体,就使用return 返回值;
b如果函数没有返回体,就使用return None或者return;
如果函数有多个返回值,就使用return x1,x2...。
这里主要讲述自定义函数,系统函数请参照https://docs.python.org/2/library/functions.html#abs
3例子:
一元二次方程的定义是:ax² + bx + c = 0
请编写一个函数,返回一元二次方程的两个解。
注意:Python的math包提供了sqrt()函数用于计算平方根。
import math
def equation(a,b,c):
temp=b*b-4*a*c
if temp<0:
return
x1=(-b+math.sqrt(temp))/(2*a)
x2=(-b-math.sqrt(temp))/(2*a)
return x1,x2
print equation(2,3,0)
默认参数:主要是方便调用,默认参数一定在必须参数后面。
例子:
请定义一个 greet() 函数,它包含一个默认参数,如果没有传入,打印 'Hello, world.',如果传入,打印 'Hello, xxx.'
def greet(n='world'):
print 'hello,',n
可变参数:
定义:def fn(*args):
print args
python 解释器 会把传入的一组参数组装成一个tuple传递给可变参数。因此在函数内部,直接把变量args看成一个tuple 就好了
例子:请编写接受可变参数的 average() 函数。
import math
def avg(*args):
if len(args)==0:
return 0.0
else:
return sum(args)/len(args)
print avg(1,2,3)
切片
1)切片:主要用于对集合取指定范围的元素。
2)形式 L[first-index:last-index,length]。
说明:
从索引为first-index的元素取到索引为last-index的元素,其中不包含last-index元素;
first-index 为空,则默认从0开始,如果两个参数都为空,则表示从头到尾获取元素;
length 表示每隔几个元素获取元素;
默认length为1 ,不隔元素获取;若length为2,则每隔一个元素;
若first-index为负数,则是倒序切片,倒序切片从-1开始;
f若 fist-index为正数,first-index从0开始;
例子1:
range()函数可以创建一个数列:
range(1, 101)
[1, 2, 3, ..., 100]
请利用切片,取出:
1. 前10个数;
2. 3的倍数;
3. 不大于50的5的倍数。
print L[0:10],'\n',L[2::3],'\n',L[4:50:5]
例子2:
利用倒序切片对 1 - 100 的数列取出:
* 最后10个数;
print L[-10:]
字符串切片:我们可以把字符串看成一组list,所以也可以对字符串进行切片。
例子:
字符串有个方法 upper() 可以把字符变成大写字母:
'abc'.upper()
'ABC'
但它会把所有字母都变成大写。请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。
import math
def upperFirstChar(str):
return str[0:1].upper()+str[1:]
用Eclipse+插件PyDev+Python
a.安装插件:在eclipse官网下载Eclipse4.3版本,然后再下载插件Pydev:http://pydev.org/download.html
安装步骤不说了;网上可以搜一下;如:Eclipse配置PyDev插件:http://www.cnblogs.com/halfacre/archive/2012/07/22/2603848.html
b.安装Python2.7;
然后主要的是需要安装numpy,scipy,nose,theano等吧,直接在http://www.lfd.uci.edu/~gohlke/pythonlibs/下载,(记得选你安装Python对应的版本);安装直接Next;
c.需要配置G++环境;选theano因为他能够在GPU上运行,GPU和CPU运行原理和比较需要自己去google一下(重要知识);配置G++:参考英文:http://www.kineticsystem.org/?q=node/19
中文:http://blog.csdn.net/cheungmine/article/details/8918808
我们只看它安装CMAKE前面的两个部分就好了。
然后就去试试吧!