1、首先简单认识python
python是一种解释型语言,啥时解释语言呢?打个简单的比方,你不懂别人说英语的意思,听不懂外国人说话,这个时候就是给你一个翻译,别人说一句英语翻译就给你立马翻译成你懂的汉语,这个时候你就知道别人在说什么了。这个跟计算机与python语言之间的关系类似,计算机它本身只知道0 1这种二进制代码,它根本不知道python语言,这个时候python自己的解释器就相当于这个翻译,每执行一段代码就把这段代码翻译成计算机懂的语言,这样计算机就可以执行它根本不懂的语言,现在除python外还有一个非常火的解释型语言就是java,它执行则是通过java本身的jvm虚拟机去执行被解释的java语句的;除了解释型语言外还有一种就是编译语言,比如c、c++、c#,这些语言是在编写完后就编译一次直接成计算机懂的二进制语言,后面拿到计算机中就可以直接使用了。也正是这个原因,解释型语言比编译型语言执行效率要差很多。
但是这并不影响人们学习python的热情,为啥呢?因为python学起来比其他语言简单,没有热别复杂的语言,更重眼的是现在应用也越来越广泛,比如比较火的数据挖掘、人工智能,还有用于自动测试以及后台应用服务器接口开发。所以好好学python还是比较实用的。
2、变量
首先呢任何语言都会有变量,其次还要知道一点是任何应用程序都是在内存中运行的,原因是cpu只能在内存中操作数据的,而变量声明就是在内存中声明一个地址并接收输入的变量值,后面要使用就可以直接通过变量来得到想要的值。
python定义变量时跟其他语言还有不同,python不用声明变量的类型,而是根据最终赋值的结果来确定参数的类型,比如age=27,这里不用age就是变量,它是根据后面赋值的整数27来确定变量age是整型的;
在声明变量的时候最好的原则是声明的变量要明白它的具体意思,也就是见参数名知其意,还有一点需要特别注意的是跟其他的语言一样,python本身自有的关键字不能做参数,python本身的关键字如下:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
#声明整型
age=27
name='zhangsan'
score=83.85
my_list=[1,2,3,4] #定义一个列表变量
my_tuple=(1,2,3,4) #定义一个元组变量
#字符串使用单引号/双引号/三引号的情况
str1='你好!菜鸟' #单引号就是里面就是字符串
str2="i'am green hand" #用双引号就是因为里面有单引号
str3='"菜鸟好好学习吧"' #字符串中有双引号时,引用就用单引号
str4='''green hand say:"i'am green hand"''' #字符串里面既有单引号,又有双引号是选择3引号
#3个单引号就是注释的作用,这里就是不再执行了
'''
print(age,name,score,my_list,my_tuple)
print(str1,str2,str3,str4)
'''
print(str4)
print("姓名:{name},年龄:{age},分数:{grade}".format(name=name,age=age,grade=score))
3、格式化输出
先了解下python3接收键盘输入的函数input(),这里接收输入的是字符串的类型,如果想得到int类型的数据,就要加Int进行强制转化,比如age=int(input("请输入年龄:"))
格式化输出就是按照指定的格式来输出结果,现在学习的有3种格式化输出的内容,
import datetime
today=datetime.date.today()
username=input("请输入姓名:")
#采用+号来拼接字符串,但是占用内存比较多,这里username 欢迎光临 还有组合的字符串
print("欢迎光临"+username)
name='zhangsan'
age=27
score=98.255
#使用+号进行字符串的拼接,不推荐用+号的形式连接,是因为比较耗内存,
#还有一点就是连接的必须是字符串类型,整形和浮点型要转化为str类型
print("name:"+name+",age:"+str(age)+",score:"+str(score))
#用,进行连接
print("welcome",name)
#使用占位符来格式化输出,
print("welcome:%s,today is %s,your score is %.2f"%(name,today,score))
#使用format字符串的格式化来输出
print("welcome:{name},today is {today},you score is{score}".format(name=name,today=today,score=score))
4、条件判断
python中判断只有if ...elif....else,只有两条判定路径是就是有if...else,有多条判定条件时就使用if....elif....else
a、两个条件判断: if...else...
age=int(input("请输入年龄:"))
if age<10:
print("未成年")
else:
print("成年人")
b、多个判定条件 if elif else
score=int(input("请输入分数:"))
#多条件判断加多个elif
if score>90:
print("优秀")
elif 75<score<=80:
print("良好")
elif score>60 and score<=75:
print("及格")
else:
print("该努力了小伙!")
if判断中的非空即真(空字符串、空列表、空字典、空集合等都符合这一语法)、非0即真、非None即真,这三个用在平常的代码里会减少代码的量,比如现在需要判断用户的输入是否为空,直接把用户输入的参数跟在判断条件后面即可,不需要调用strip和len函数来去前后空格然后取输入长度来判断参数是否为空,代码如下:
1 #非空即真 2 if '': #字符串为空,所以为假,进入下一个判断 3 print('假') 4 elif 'asd': #字符串有值不为空,所以为真,这里会打印真 5 print('真') 6 else: 7 print('over') 8 9 #非0即真 10 if 0: #值是0,所以为假,进入下一个判断 11 print('假') 12 elif 123: #值不是0,所以为真,这里会打印真 13 print('真') 14 else: 15 print('over') 16 17 #非None即真 18 if None: #值为None,所以为假,进入下一个判断,这个类似于'' 19 print('假') 20 elif 'asd': #字符串有值不为空,所以为真,这里会打印真 21 print('真') 22 else: 23 print('over')
5、循环
python中循环有两种,一种是while循环,一种是for循环,循环的意义就是可以按条件循环循环体内的指令,完成重复性的操作。
先看while循环,看到while循环顾名思义就是当什么时候,如果满足条件就执行while循环下面的循环体内容,反之当不满足条件的时候就不执行循环,这样结束循环后又会回到判断条件这里来,这时你也发现了,只要条件一直为真,那么他将马不停蹄的运行下去,就跟永动机一样,这就是所谓的死循环,所以我们用来判断的这个条件,不能是一个常量,判断条件需要时变化的,就是要赋值一个计数器,并且计数器循环一次改变一次,不然就是一个死循环,程序就永远也不会结束。
#从0开始定义一个计数器
count=0
#while后面跟一个判定条件,满足则运行循环体代码
while count<10:
print(count)
#计数器自加1
count+=1
#跟着的else就是一个正常结束的意思
else:
print("over")
while循环里面还有一个break终止和continue,break顾名思义就是终止,在while循环中只要遇到break,不管循环有没有结束都退出整个循环,遇到continue就是跳出本次循环,接着进行下次循环。
i=0 while i<=10: i += 1 if i==5: #当i的值等于5时,执行下面的break break #while遇到break时,就结束掉整个循环了,所以这段代码运行的结果是 打印1-4 print(i) else: #当上面的while循环正常结束,运行else print('over') #这里非正常结束,所以打印1-4后,不打印over
i=0 while i<=10: i += 1 if i==5: #当i的值等于5时,执行下面的continue continue #while遇到continue时,就结束掉本次循环,继续下一个循环,所以这段代码运行的结果是 打印1-4,5-11 print(i) else: #当上面的while循环正常结束,运行else print('over') #这里会正常结束,所以打印1-4,5-11后,会打印over
for循环,for的翻译是“为了”,python这里就是说为了什么而循环,比如后面跟一个列表,为了列表里面的元素循环,循环取列表里的元素,就好比后面跟的是自己的孩子,肯定不能厚此薄彼,全部都要照顾到。for循环后面必须接一个可迭代的对象,什么是可迭代的对象呢?先把可以把它想象成糖葫芦,以后自然会理解,这个迭代的对象就是一串糖葫芦,可以每次取一颗下来吃,这就是可迭代。for循环就是每次取一颗糖葫芦出来,直到取完为止,也就是说你有几个糖葫芦就循环几次。
这样理解应该比较好理解了,那么python里有哪些可迭代的对象呢,用的比较多的就只有这几种:字符串(每次取一个字符),列表(每次取一个元素),元祖(每次取一个元素),集合(每次取一个元素),字典(注意,这里取的是字典的key)。主要就是这些,后面都会讲到,这里先记住这些事可以迭代的,切记,数字、小数是不能迭代的。
用for循环,比较while而言更方便,以后基本都会用到for循环,因为不像while需用设置计数器,for永远也不用担心会进入死循环,它迭代完后面的可迭代对象里的值之后,就结束了,不存在死循环,所以在这点上比while好用。其他和上面的while语法差不多,代码如下:
for i in ['a','b','c']: if i=='b': #当i的值等于'b'时,执行下面的break break #for遇到break时,就结束掉整个循环了,所以这段代码运行的结果是 打印'a' print(i) else: #当上面的for循环非正常结束,运行else print('over') #这里非正常结束,所以打印'a'后,不打印over
for i in ['a','b','c']: if i=='b': #当i的值等于'b'时,执行下面的continue continue #for遇到continue时,就结束掉本次循环,继续下一个循环,所以这段代码运行的结果是 打印'a','c' print(i) else: #当上面的for循环正常结束,运行else print('over') #这里非正常结束,所以打印'a','c'后,打印over
for循环记住以下几点,在后面再细讲:
1.循环list实质是根据下标循环里面的元素
2.循环list的时候,切记不要删除list元素,不然会导致取值错乱,解决方法,用copy方法设置一个新list
3.只要能通过下标取值的对象,都能够用for循环
4.循环文件对象的时候,实质是循环文件里的行内容
5.循环字典的时候,实质是循环key