2018-10-19 16:08:42
注:如有侵犯,请联系删除,本资料仅用于个人学习笔记,无其他目的。
参考:太白金星
https://www.cnblogs.com/jin-xin/articles/7459977.html
一,Python介绍
1,python的出生与应用
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
宏观上:python2 与 python3 区别:
python2 源码不标准,混乱,重复代码太多,
python3 统一 标准,去除重复代码。
2,python是什么编程语言。
编译型:一次性将所有程序编译成二进制文件。
缺点:开发效率低,不能跨平台。
优点:运行速度快。
:C,C++等等。
解释型:当程序执行时,一行一行的解释。
优点:开发效率高,可以跨平台。
缺点:运行速度慢。
:python ,php,等等。
3,python的优缺点。
优点:
- Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
- 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
- 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
- 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
- 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
- 可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点:
- 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
- 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
- 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。
4,python的种类。
CPython
当我们从Python官方网站下载并安装好Python 3.6后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python
就是启动CPython解释器。
CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。
IPython
IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
CPython用>>>
作为提示符,而IPython用In [
序号
]:
作为提示符。
PyPy
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
Jython
Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython
IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
小结:
Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。
二,python环境
windows下安装Python(手动添加环境变量)以2.7版本举例:
windows:
1 1、下载安装包 2 https://www.python.org/downloads/ 3 2、安装 4 默认安装路径:C:\python27 5 3、配置环境变量 6 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】 7 如:原来的值;C:\python27,切记前面有分号
windows下安装Python(自动添加环境变量)以3,.5版本的举例:
1,官网下载:https://www.python.org/downloads/windows/
2,选择版本。
3,自动添加环境变量。
4,更改完成。
5,点击安装即可。
linux
1 无需安装,原装Python环境 2 3 ps:如果自带2.6,请更新至2.7
三,python基础初识。
1,运行python代码。
在d盘下创建一个t1.py文件内容是:
1 print('hello world')
打开windows命令行输入cmd,确定后 写入代码python d:t1.py
2,解释器。
运行第一个py文件:
python3x :python 文件路径 回车
python2x :python2 文件路径 回车
python2 python3 区别:python2默认编码方式是ascii码
解决方式:在文件的首行:#-*- encoding:utf-8 -*-
python3 默认编码方式utf-8
3,注释。
当行注释:# 被注释内容
多行注释:'''被注释内容''',或者"""被注释内容"""
4,变量。
变量:就是将一些运算的中间结果暂存到内存中,以便后续代码调用。
变量定义的规则:
1,必须由数字,字母,下划线任意组合,且不能数字开头。
2,不能是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']
3,变量具有可描述性。
4,不能是中文。
推荐定义方式:
1 #驼峰体 2 3 AgeOfOldboy = 56 4 5 NumberOfStudents = 80 6 7 #下划线 8 9 age_of_oldboy = 56 10 11 number_of_students = 80
定义变量不好的方式举例
- 变量名为中文、拼音
- 变量名过长
- 变量名词不达意
7,常量。
一直不变的量。 π
BIR_OF_CHINA = 1949
8,程序交互
input
1,等待输入,
2,将你输入的内容赋值给了前面变量。
3,input出来的数据类型全部是str
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 # 将用户输入的内容赋值给 name 变量 5 name = input("请输入用户名:") 6 7 # 打印输入的内容 8 print(name)
执行脚本就会发现,程序会等待你输入姓名后再往下继续走。
可以让用户输入多个信息,如下
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 name = input("What is your name?") 4 age = input("How old are you?") 5 hometown = input("Where is your hometown?") 6 7 print("Hello ",name , "your are ", age , "years old, you came from",hometown)
例子2
1 name = input('请输入你的名字:') 2 age = input('请输入你的年龄:') 3 print('我的名字是'+name,'我的年龄'+age+'岁')
9,基础数据类型初始。
数字:int 12,3,45
+ - * / **
% 取余数
//
字符串:
str,python当中凡是用引号引起来的都是字符串。
那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合。
1 msg = "My name is Alex , I'm 22 years old!"
多引号什么作用呢?作用就是多行字符串必须用多引号
1 msg = ''' 2 今天我想写首小诗, 3 歌颂我的同桌, 4 你看他那乌黑的短发, 5 好像一只炸毛鸡。 6 ''' 7 print(msg)
可相加:字符串的拼接。
可相乘:str * int
bool:布尔值。 True False。
ps:type()
字符串转化成数字:int(str) 条件:str必须是数字组成的。
数字转化成字符串:str(int)
10,格式化输出。
现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式
------------ info of Alex Li ----------- Name : Alex Li Age : 22 job : Teacher Hobbie: girl ------------- end -----------------
只需要把要打印的格式先准备好
1 name = input("Name:") 2 age = input("Age:") 3 job = input("Job:") 4 hobbie = input("Hobbie:") 5 6 info = ''' 7 ------------ info of %s ----------- #这里的每个%s就是一个占位符,本行的代表 后面拓号里的 name 8 Name : %s #代表 name 9 Age : %s #代表 age 10 job : %s #代表 job 11 Hobbie: %s #代表 hobbie 12 ------------- end ----------------- 13 ''' %(name,name,age,job,hobbie) # 这行的 % 号就是 把前面的字符串 与拓号 后面的 变量 关联起来 14 15 print(info)
11,基本运算符。
算数运算
比较运算
赋值运算
逻辑运算
成员运算:
Python运算符优先级
12,流程控制之--if。
1 age_of_oldboy = 48 2 3 guess = int(input(">>:")) 4 5 if guess > age_of_oldboy : 6 print("猜的太大了,往小里试试...") 7 8 elif guess < age_of_oldboy : 9 print("猜的太小了,往大里试试...") 10 11 else: 12 print("恭喜你,猜对了...")
13,流程控制之--while循环。
while 条件:
循环体
无限循环。
终止循环:1,改变条件,使其不成立。
2,break
continue
例子:continue
count = 0 while count <= 100 : count += 1 if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop continue print("loop ", count) print("-----out of while loop ------")
输出
loop 1 loop 2 loop 3 loop 4 loop 5 loop 95 loop 96 loop 97 loop 98 loop 99 loop 100 loop 101 -----out of while loop ------
,while ... else ..
count = 0 while count <= 5 : count += 1 print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------")
输出:
Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 循环正常执行完啦 -----out of while loop ------
如果执行过程中被break啦,就不会执行else的语句啦
count = 0 while count <= 5 : count += 1 if count == 3:break print("Loop",count) else: print("循环正常执行完啦") print("-----out of while loop ------")
输出:
Loop 1 Loop 2 -----out of while loop ------
四,相关练习题。
1、使用while循环输入 1 2 3 4 5 6 8 9 10
1 count = 0 2 while count < 10: 3 count += 1 # count = count + 1 4 if count == 7: 5 print(' ') 6 else: 7 print(count)
1 count = 0 2 while count < 10: 3 count += 1 # count = count + 1 4 if count == 7: 5 pass 6 else: 7 print(count)
1 1 2 2 3 3 4 4 5 5 6 6 7 8 8 9 9 10
1 count = 0 2 while count < 10: 3 count += 1 # count = count + 1 4 if count == 7: 5 continue 6 print(count)
2、求1-100的所有数的和
1 count = 0 2 sum = 0 3 while count < 100: 4 count = count +1 5 sum = sum +count 6 print(sum)
输出:
5050
3、输出 1-100 内的所有奇数
1 count = 1 2 while count < 101: 3 print(count) 4 count += 2
1 count = 1 2 while count < 101: 3 if count % 2 == 1: 4 print(count) 5 count += 1
4、输出 1-100 内的所有偶数
5、求1-2+3-4+5 ... 99的所有数的和
1 sum = 0 2 count = 1 3 while count < 100: 4 if count % 2 == 0: 5 sum = sum - count 6 else: 7 sum = sum + count 8 count += 1 9 print(sum)
6、用户登陆(三次机会重试)
1 i = 0 2 while i < 3: 3 username = input('请输入账号:') 4 password = int(input('请输入密码:')) 5 if username == '咸鱼哥' and password == 123: 6 print('登录成功') 7 else: 8 print('登录失败请重新登录') 9 i += 1