2016年7月23日"Python基础s14-Day1"
Python是什么?
Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象、直译式的计算机程序语言,具有近二十年的发展历史。它包含了一组功能完备的标准库,能够轻松完成很多常见的任务。它的语法简单,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。
与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。
Python的官方解释器是CPython,该解释器用C语言编写,是一个由社区驱动的*软件,目前由Python软件基金会管理。
Python支持命令式程序设计、面向对象程序设计、函数式编程、面向侧面的程序设计、泛型编程多种编程范式。
Python历史
Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并获取了非常好的效果,完美结合了C和其他一些语言。[5]
就这样,Python在吉多手中诞生了。实际上,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。
目前吉多仍然是Python的主要开发者,决定整个Python语言的发展方向。Python社区经常称呼他是仁慈的*者。
Python 2.0于2000年10月16日发布,增加了实现完整的垃圾回收,并且支持Unicode。同时,整个开发过程更加透明,社区对开发进度的影响逐渐扩大。Python 3.0于2008年12月3日发布,此版不完全兼容之前的Python源代码。不过,很多新特性后来也被移植到旧的Python 2.6/2.7版本。
Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多重继承,有益于增强源代码的复用性。Python支持重载运算符,因此Python也支持泛型设计。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了与Haskell和Standard ML中类似的函数式程序设计工具。
虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发项目例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shell script、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
Python2到Python3发生了哪些变化
1.print语句没有了取而代之的是print()函数
下面是python2中的print写法
下面是python3中的print写法
2.raw_input()没有了取而代之的是input()
在python2中用户输入可以用raw_input()也可以用input()。
python3中只有input()
3.Pthon3中默认支持中文了
在python2中要想输出中文需要在代码中加上# -*- coding:utf-8 -*-
python3中还有一些模块名称发生了改变以及其他变化。这里不一一列出了
开始Python之旅
跟所有程序一样第一个程序总是Hello.World。下面我们写一个hello world:
#创建一个helloworld.py的程序
#!/usr/bin/env python # -*- coding: utf-8 -*- print("Hello.World!"
#然后执行命令python helloworld.py
[root@node1 ~]# python helloworld.py Hello.World!
Python变量
python中声明一个变量与shell相似"变量名 = value"
name = "enzhi.wang"
上面代码声明一个变量,变量名为name,变量的值为"enzhi.wang"。
Python变量的命名规范
1.变量只能是字母、数字、下划线任意组合
2.变量名第一个字符不能以数字开头
3.变量名第一个字符不能以特殊字符开头
Python注释
1.单行注释,Python中使用#号用来实现单行代码注释
#name = "enzhi.wang"
2.多行注释,python中使用一对'''来注释多行内容
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang #name = "enzhi.wang" # 下面为多行注释 ''' name = "enzhi.wang" age = 26 job = "IT" '''
Python用户输入
Python3中使用input()函数来实现用户与程序之间的交互
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name = input("Please enter your user name.") age = int(input("Age:")) job = input("Job:") print(name,age,job)
执行上面代码
Please enter your user name.enzhi Age:26 Job:IT enzhi 26 IT #用户输入结束后print打印出变量值
格式化输出
python中格式化输出的三种方式:
1.创建一个名为formatting.py的程序
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name = input("Please enter user name:") age = int(input("Age:")) job = input("Job:") info1 = ''' Information of:%s Name:%s age:%d job:%s ''' % (name,name,age,job) #变量必须按顺序去引用 print(info1)# %我理解为与shell中的$1,$2类似用于传参# %s,s是代表字符串# %d,d是代表数字
执行formatting.py
python formatting.py Please enter user name:wangenzhi Age:26 Job:IT Information of:wangenzhi Name:wangenzhi age:26 job:IT
第二种格式化输出方式:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name = input("Please enter user name:") age = int(input("Age:")) job = input("Job:") info2 = ''' Information of {_name} Name: {_name} Age: {_age} Job: {_job} ''' .format(_name=name,_age=age,_job=job) print(info2)
执行formatting.py
Please enter user name:wangenzhi Age:26 Job:IT Information of wangenzhi Name: wangenzhi Age: 26 Job: IT
第三种格式化输出方式:
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang name = input("Please enter user name:") age = int(input("Age:")) job = input("Job:") # 第一种格式化方式 info1 = ''' Information of: %s Name: %s age: %d job: %s ''' % (name,name,age,job)#变量必须按顺序去引 # 第二种格式化方式 info2 = ''' Information of {_name} Name: {_name} Age: {_age} Job: {_job} ''' .format(_name=name,_age=age,_job=job) # 第三种格式化方式 info3 = ''' Information of {0} Name: {0} Age: {1} Job: {2} '''.format(name,age,job) print(info3)
执行formatting.py
Please enter user name:enzhi Age:25 Job:it Information of enzhi Name: enzhi Age: 25 Job: it
Python条件判断
python中使用if来进行条件判断语法如下
if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3
- 如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句
- 如果 "condition_1" 为False,将判断 "condition_2"
- 如果"condition_2" 为 True 将执行 "statement_block_2" 块语句
- 如果 "condition_2" 为False,将执行"statement_block_3"块语句
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
- 1、每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。
- 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。当出现如下错误提示(IndentationError)则为缩进错误
实例:使用if条件判断实现猜大小的游戏
让用户输入一个年龄判断是否与定义的年龄相等,如果相等打印欢迎信息退出程序,如果大于定义的年龄则提示用户猜小一点,如果小于定义的年龄则提示用户猜大一点。
[root@node1 ~]# vim interaction.py #!/usr/bin/env python # -*- coding: utf-8 -*- # Author: enzhi.wang age = 26 #定义默认age为26 input_age = int(input("guess age:")) #提示用户输入一个年龄 if input_age == age: #如果等于age那么就打印下面的print内容 print("yes,guess great!") elif input_age > age: #如果大于age那么就打印下面print内容 print("guess a little bit samll") else: #否则,如果上面既不等于又不是大于那一定是小于,就打印下面print内容 print("guess a bit bigger")
Python循环语句
python中循环语句有while和for循环。
while循环
python中while循环的写法:在while循环中同样要注意代码之间的缩进
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author: enzhi.wang while 条件判断: 语句
在上面猜大小的游戏中用户输入完成后不论是否猜对答案程序都会退出,现在我们用while循环来实现只要用户正确就退出否则就一直猜
# 创建一个名为guess_while.py的脚本
1 [root@node1 ~]#vim guess_while.py 2 #!/usr/bin/env python 3 # -*- coding: utf-8 -*- 4 # Author: enzhi.wang 5 age = 26 6 while True: 7 input_age = int(input("Please enter your guess age:")) 8 9 if input_age == age: 10 print("yes,Guessed it.") 11 break 12 elif input_age > age: 13 print("guess a little bit small.") 14 else: 15 print("guess a bit bigger.")
执行guess_while.py
[root@node1 ~]# python3 guess_while.py Please enter your guess age: guess a bit bigger. Please enter your guess age: guess a little bit small. Please enter your guess age: yes,Guessed it.
# 运行上面脚本时只有用户猜对了才会退出这样显得非常不友好,现在要求如果用户猜错三次就提示用户对不起你猜错的次数过多并退出程序
[root@node1 ~]# age = 26 count = 0 while count <3: input_age = int(input("Please enter your guess age:")) if input_age == age: print("yes,Guessed it.") break elif input_age > age: print("guess a little bit small.") else: print("guess a bit bigger.") count += 1 else: print("I'm sorry your guess wrong too many times.")
# 提示:在python中while循环可以使用else来做条件式判断。当while count <3条件不满足时执行else下面的语句
执行guess_while2.py
[root@node1 ~]# python3 guess_while2.py Please enter your guess age: guess a little bit small. Please enter your guess age: guess a bit bigger. Please enter your guess age: guess a little bit small. I'm sorry your guess wrong too many times.
for循环
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的写法:for循环同样需要注意代码之间的缩进
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author: enzhi.wang for variable in sequence: statements else: statements
# 下面用for循环实现猜大小的游戏,并实现错误三次退出程序
[root@node1 ~]# #!/usr/bin/env python # -*- coding: utf-8 -*- # Author: enzhi.wang age = 26 for i in range(3): input_age = int(input("Please enter your guess age:")) if input_age == age: print("yes,Guessed it.") break elif input_age > age: print("guess a little bit small.") else: print("guess a bit bigger.") else: print("\033[31;1mI'm sorry your guess wrong too many times.\033[0m")
执行guess_for.py
[root@node1 ~]# python3 guess_for.py Please enter your guess age: guess a bit bigger. Please enter your guess age: guess a little bit small. Please enter your guess age: yes,Guessed it.
break和continue语句
break可以跳出for和while的循环体。如下面实例
[root@node1 ~]# vim break.py #!/usr/bin/env python # -*- coding: utf-8 -*- for i in range(10): #循环0到10之间的整数 print(i) #每循环一次打印出当前的整数 if i >4: #判断如果i大于4那么就退出整个循环 break
执行以上脚本输出结果为:
[root@node1 ~]# python3 break.py
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
[root@node1 ~]# vim continue.py #!/usr/bin/env python # -*- coding: utf-8 -*- for i in range(10): #循环10次 if i == 5: #当i等于5时跳出本次循环继续下一次循环 continue print(i)
执行上面脚本的输出结果为:
[root@node1 ~]# python3 continue.py 9# 当i等于5时则跳过去继续下一轮循环了