2018-07-24
python在我个人的理解是相对于其它是一门比较容易的语言,加上最近的人工智能特别火而Python是主要的语言基础,相信有很多前端后端的程序员们都在蠢蠢欲动,而对于有些本身就有java语言基础的人来说可能会在基础上浪费一大半时间,所以我在以我本人学习经验的基础上帮助大家以更少的时间搞懂python基础,等下会附上我项目地址,python在我的理解是基于java的思想变换写法,所以再有java基础的前提下再来看我这篇文章相信你会事 倍功半。
1.首先来讲一下paython基本数据类型,它与java不同之处在于python定义类型不需要指定(例如String,int之类的)例如java中我们需要一个String类型往往会这样写String a,而在python中直接可以写成a,你也可以认为a可以代表任何数据基本类型在python中String类型可以写成a="b",也可以写成a='b',双引号和单引号是一样的,在打印的时候使用这个就可以print('hello word'),python中空格是有语法形式的,所以我们写代码的时候一定要顶格从头写,而换行可以写成print('''hello word
hello word
hello word'''),斜杠\n也可以达到换行的目的
下面讲一下format,这个记住就可以了,我举个了例子,例如
age=3
name="Toms"
print("{0} was {1} years old".format(name, age))这句话里的{0}和 {1}分别代表的是name和age,fromat是一种格式化字符串的函数,0和1分别代表format后面参数的位置
2.python中的集合
2.1 list用法
number_list=[1,2,3,4,5,6,7,8],number_list里面可以写int 也可以写String混合使用,用法可以直接输出控制台print("list"+str(number_list))
你要想删除一个list内容的话直接编写del number_list[0],del表示删除的意思
list的截取:str(mix_list[1:],这句代码的意思是,在截取1后面的所有元素,下标从0开始,0表示第一位元素,在python中也可以反截取,例如我可以写成mix_list[:-1], 代 表的是从list最后一个开始截取,注意这时候下标从1开始。
2.2 tuple用法
理解tuple:一个tuple可以写成mix_tuple=(1,2,['a','b']),tuble的值不能被改变,但是如果是里面嵌套了list之类的list是可以更改的,你要想知道tuple的长度很简单,跟list 一 样,例如我想获取mix_tuple就可以写成len(mix_tuple),那么tuple的值可以删除吗,这个前面已经说过了,tuple里的值是不能改变的,所以要想删除就直接删 除整个 tuple,可以写成del mix_tuple,这样我们就删除了这个tuple
2.3 词典
理解词典:提到词典,这里你可以想象成java里的map,它跟map大同小异,只是写法不一样,例如我们创建一个词典mix_dict={'Tom':'boy',11:25,'boy':88},它是用大括 号表示的,提示(稍微注意一下括号是小括号,大括号还是中括号用以区分list,tuple,词典),mix_dict里面的类型也可以是String,int混合使用,至于取值是根据键去取的大 同小异,例如我们想取Tom里的值就可以写成mix_dict['Tom']),注意如果值是int类型的要转化成String,比如我们要取里面11的值25,这时候你就要写成str(11),你 要 去出全部就可以写成str(mix_dict)
你要想删除一个词典里的元素的话就可以写成del mix_dict['Tom'],删除整个就写成del mix_dict['mix_dict'],如果你想要清除这个词典的内容而不想把整个词典 都删除了的话你就可以写成mix_dict.clear()
词典添加和修改都是一样的mix_dict['heath']='888',如果词典里没有这个元素就可以添加,否则就会修改,词典里的键是唯一的,如果你一个词典里有两个相同的键那么 你就会被最后一个键替代。相当于你写了两个最后只有最后一个有用(是不是很通俗易懂)
3.函数
3.1 函数定义,我举个例子相比一大串的定义更加容易理解,例如有这样的一个函数
d=90
def sum(a,b):
c=a+b
d=60
return c
str(sum(1, 2)),sum是一个方法a和b都是参数,在方法冒号下面的就是方法的内容,sum(1, 2)是对方法的调用,str(sum(1, 2))是转化String,结合java方法定义,很容 易理解,python很灵活,所以在我的理解之下是对java的一 个简化,但是思想大多类似,python是完全支持面向对象编程,有一个需要注意的地方,例如上面的一个例 子,这时候d是一个全局变量,我们在方法里将d的局部变量改变成60,这时候外面调用d时,d是不会被改变的还是等于90,可以这样总结为全局变量不能被方法里的局 部变量改变
4.控制流 下面看这样一段代码
number=30
guess=int(input('请输入数字'))
if guess==number:
print('输入正确,答案为'+str(number))
else :
print('输入错误请重新输入')
for i in range(1,30):
print(str(i))
input就是我们能在控制台手动打出字符,外面int就是指int;类型,下面的这些if else格式就是这样的没有括号,这里看下就明白就不多讲,至于for循环我解释一下,range代表的是1,30的范围之内,这里还有一种写法
list=[1,3,5,6,0,19]
for i in list:
print(i)
这种写法指的是从list里的每一个元素按照顺序逐渐循环,相对java是不是很简便,不要爱上它
,这里讲到循环我就把循环都讲一下,还有一种是While,其实也大同小异。
number=50
guess_flag=False
while guess_flag:
guess=int(input("请输入一个值"))
if guess==number:
print('恭喜您猜对了,获得了女朋友一枚,答案为'+str(number))
guess_flag=True
break
elif guess
print('很遗憾,您猜错了,请再往高点试试没有任何奖品,请重新输入')
pass
print('请继续')
elif guess>number:
print('很遗憾,您猜错了,请再往低点试试没有任何奖品,请重新输入')
pass
print('请继续')
else :
print('很遗憾,您猜错了,没有任何奖品,请重新输入')
pass
print('请继续')
格式就是这样的,代码贴出来相信你也看懂了,如果你想要写一个死循环就可以直接写成while True,讲条件改成True就可以了,关于循环还有一个需要注意的,它比java多一个,分别是continue,break,还有一个pass前面两个我就不多讲了,要是不明白就去复习一下java,至于pass其实这个的意思是跳过这一行继续执行下一行的代码,它与continue的不同之处是continue是跳出下面所有的内容执行下一个循环
下面我来讲一下文件的读写,看下面一段代码
#写入文件
str_book='''I love learning python
because python is fun
and also easy to use'''
f=open('mypython.txt','w')
f.write(str_book)
f.close()
这段代码含义是将str_book这个字符串写入文件mypython.txt中,open里的w表示写入,r表示读取,如果是读取的时候你也可以不写r默认就是读取,open里的第一参数还有一层意思,就是你可以指定文件路径前面可以加路径,如果不加就是默认的地址,在与你同一项目的py文件同一目录下,相对于java是不是很简单
#读入文件
f=open('mypython.txt','r')
while True:
line=f.readline()
if len(line)==0:
break
print(line)
f.close()
这里是一个读取文件的操作,首先不管是读取还是写入,都要open('mypython.txt','w')这段代码,readline指的是读取文件里的每一个元素,其它的都一样就不多讲了。
5.python的异常处理
try:
except OSError as err:
print("OSError:{0}".format(err))
except ValueError:
print("出现异常")
except代表的是哪一类异常,ValueError代表的是值异常,OSError 代表的是文件异常,例如文件不存在,至于其它异常可以自行百度,我这里就举个例子,到这里那么还有的同学就会问了,如果捕获不到的异常怎么处理呢,程序不就会崩溃了,这里我提供两种方法用来捕获所有异常
import traceback
try:
print(8/0)
except:
print("出现异常")
try:
print(8/0)
except Exception as ex:
print("出现异常"+str(ex))
6. python面向对象编程,看以下代码
class Student:
def __init__(self,name,grade):
self.name=name
self.grade=grade
def myName(self):
print(str(self.name)+str(self.grade))
def myGrade(self,monment):
self.grade=self.grade+monment
stu=Student('张三',98)
stu.myName()
stu.myGrade(10)
stu.myName()
这里我解释一下__init__,这个是一个固定的写法,指的是初始化函数,而self相当于我们java的this,myName,myGrade都是方法,还有一个值得注意的是,java里都是new一个Student,我们这里直接就可以用等号就可以创建一个Student对象了,其它都是一样的
7.装饰器
python装饰器,参数可以是函数,是python的一个特性,这与java不同,仔细看以下代码
def myCake():
return "a cake"
def addCake(myCakes):
def myStyle():
return myCakes()+"style"
return myStyle()
asd=addCake(myCake)
print(myCake())
print(asd)
将myCake的返回值作为参数传入addCake方法里,在myStyle方法里添加了一个Style字符串作为返回值与myCake的返回值相加,最后得到addCake的返回值在控制台打印出来
python里还有一个独特的地方,那就是可以用@指定方法作为参数加入,直接省去了asd=addCake(myCake)这一段代码,例如
def addCake(myCakes):
def myStyle():
return myCakes()+"style"
return myStyle()
@addCake
def myCake():
return "a cake"
print(myCake)
7.图形界面介绍
图形界面指的是一个弹出框,让电脑弹出一个对话框,在最上面加入这几行代码用以导入类似我们java包之类的
from tkinter import *
import tkinter.simpledialog as dl
import tkinter.messagebox as wb
注意:as后面的只是简称可有可无,为了后面方便引用可以直接使用dl,wb
最后看具体实现
root=Tk()
w=Label(root,text='label Title')
#目的可以让标签自适应大小
w.pack()
wb.showinfo('welcome','welcome Message')
Label第一个参数是Tk对象,第二个是标题,showinfo是显示对话框,第一个是标题,第二个是内容,基于这些我们就可以写一个小游戏
root=Tk()
w=Label(root)
#目的可以让标签自适应大小
w.pack()
wb.showinfo('welcome','welcome Message')
#利用图形界面制作小游戏
while True:
guess=dl.askinteger('竞猜游戏', '请输入一个数字')
if guess==number:
wb.showinfo('I love you','恭喜您才对了,答案为'+str(number))
break
elif guess
wb.showinfo('错误提示','很遗憾,您猜错了,请再往高点试试没有任何奖品,请重新输入')
pass
print('请继续')
elif guess>number:
wb.showinfo('错误提示','很遗憾,您猜错了,请再往低点试试没有任何奖品,请重新输入')
pass
print('请继续')
else :
wb.showinfo('错误提示','您猜错了,没有任何奖品,请重新输入')
pass
print('请继续')
这就是一个数字游戏,当你输入高或者低都会提示你让你重新输入,直到你输入正确为止。
好了,python的一些基础就到此为止了,如有不对欢迎指正!
下载地址:http://download.csdn.net/download/qq_33407981/10149704