Python修炼第一天
新的开始:不会Python的运维,人生是不完整的。 为了我的人生能够完整,所以我来了!今后跟着太白金星师傅学习功夫,记录一下心得,以便日后苦练。
一 Python的历史:
Python是一种面对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(江湖人称龟叔)于1989年发明,第一个公开发行版发行于1991年。
1991年第一个Python编译器诞生,使用C语言实现的。并能够调用C语言的库文件!
需要注意的是:2008年 开发了2个版本 Python2.6 与 Python3.0 这是由于 Python2X 源码重复,不规范。所以就开发了Python3,整合了源码,更清晰简单优美。并决定到2020年就不再支持Python2X的版本 。
二 Python的应用:
目前主要领域: 云计算、WEB开发、科学运算、人工智能、系统运维、金融等。
公司应用:谷歌:Google App Engine 、谷歌爬虫 谷歌广告等。
CIA:美国中情局网站是Pthon开发的。
NASA:美国航天局大量使用Python进行数据分析。
YouTube:世界上最大的视频网站就是用Python开发的。
Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
RedHat:世界最流行的Linux发行版的YUM包管理工具是由Python开发的。
豆瓣:公司几乎所有的业务都是通过Python开发。
知乎:国内最大的问答社区,通过Python开发
除了上面的还有 金山,搜狐,百度,阿里,淘宝,土豆,新浪,腾讯等等公司都在用。
三 Python的分类:
语言要分为两类:编译型 解析型
编译型: 将代码一次性全部编译成二进制(010101),然后在运行。
缺点:开发效率低。不能跨平台。
优点:执行效率高。
代表:C C++
解析型: 当程序开始运行时,先编译成字节码,然后交给解释器(虚拟机)一行一行解析,执行。
缺点:执行效率低
优点:开发效率高,可以跨平台
代表:Python
Python解析器主要有:
CPython: 这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python
就是启动CPython解释器。CPython是使用最广的Python解释器。
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优缺点:
优点:
1.开发效率高:是因为拥有强大的第三方库里,想要实现计算机功能可以网上找一些对应的功能模块导入使用。
2.高级语言:当你写程序的时候,你不用考虑如何管理你的程序使用的内存等类似的底层细节。
3.可移植性:开源,所以允许移植到多个平台,所以,如果小心避免使用依赖系统的特性,那么这个程序无需修改就几乎可以运行在任何平台上。
4.可扩展性:可以吧部分程序用C或C++语言编写 然后嵌入到Python程序中使用
5.课嵌入性 :可以吧Python嵌入到C或C++程序中,给程序用户提供脚本功能。
6.简单易学:优雅,明确,简单,初学者容易入门。深入下去可以编写非常复杂的程序。
缺点:
1.速度慢:相比较C要慢很多。跟JAVA也要慢一些,但是这个对于一般的用户也是无法感知的,比如一个C程序运行只用了0.01S 。
Python运行需要用0.1S,C比Python快了10倍。但是人是无法用肉眼感知的。因为正常人感知最小单位是0.4S左右,所以大多数情况下
Python都可以满足程序运行速度需求了。
2.代码不能加密:因为Python是解析型语言,他的源码都是明文形式存放。如果要求代码是加密的,哪就不应该使用Python。
3.线程不能利用多个CPU:这个问题以后再说。。。
五 变量
变量:将程序中运行的中间结果暂时存放到内存中,以后便程序调用。
5.1 声明变量:
user = "jack"
上面代码意思就是声明一个变量,变量名为user, 他的值为“jack”。
5.2 变量的定义:
1 变量是由数字 字母 下划线任意组合。 并且变量不能以数字开头。
2 变量不能是Python中的关键字。
3 变量应具有描述性。
5.3 变量定义规则:
1 变量不能使用中文,拼音。
2 变量不能过长。
3 变量名词不达意。
5.4 变量的写法
变量一般分为驼峰 与 下划线。
驼峰:
UserName = "jack"
下划线:
user_name = "tom"
推荐 下划线
六 常量
6.1 常量定义:一直不变的量就是常量。
比如 π 、身份证号、 中国成立日期等。
6.2 常量定义规则:
约定俗成 全部大写字母,同时放在整个文件最上面 那就叫常量。
比如:
NEWCHINA = 1949
while True。。。。
。。。。。
七 注释
7.1 单行注释 #号:
比如:
# 这是个用户名变量
n = "jack"
7.2 多行注释 ''' ''' 或 """ """
比如:
'''
a = "bbb"
print(a)
'''
比如:
''''''
b = "ccc"
print(b)
''''''
八 基础数据类型
8.1 初识数字与字符串类型:
int 数字: 计算加减乘除取余等 比如 666 (不加引号) 数字类型还有float浮点型 与复数型。
str 字符串:用引号引起来的就叫字符串 "666" 同时有单引号,双引号,与多引号。
单引号与多引号没有区别,只是在字符中有单引号意思的字符出现时需要使用双引号
多引号是在多行字符串的情况下使用:
message = '''
我同桌不是人,
我同桌不是
'''
8.2 查看类型:
可以通过type方法查看数据类型:
print(666,type(666))
print("666",type("666"))
8.3 字符串拼接:
数字类型可以进行加减乘除取余等操作,字符串也可以进行加与乘两种运算。单只能是加于乘。
通过加可以实现字符串拼接:(注意字符串加运算需要两边都是字符串类型。)
a = "老男孩"
b = "最好的培训机构"
c = a + b
print(c) 结果就是 “老男孩最好的培训机构”
乘就是用字符串乘数字:
print("坚强"*8)
输出为:坚强坚强坚强坚强坚强坚强坚强坚强
8.4 布尔值bool: True,False
就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断:
print(bool(1>2)) 结果为False
九 用户交互 Input
把用户输入的值赋给一个变量(接收用户输入)。然后可以把变量交给程序进行下一步处理。
注意:input 出来的数据类型全部都是字符串。 如果是数字需要进行数据类型转换: age = int(input("输入您的年龄:"))
同时如果要字符转换为数字格式 需要字符串都是数字。数字转换为str字符 可以随便转换。
usernam = inport("请输入您的账号:")
password = inpurt("请输入您的密码:")
print(username,password)
十 if
10.1 if基本语句
主要是进行条件判断。判断布尔值为真或假。来进行流程的控制。
比如:
if 条件1:
结果
elif 条件2:
结果
else:
结果
10.2 多分支例子:
num = int(input("输入数字选择:1.召唤神龙,3.召唤苍井空,5.召唤奥特曼,其他退出。"))
if num == 1:
print("神龙在路上")
elif num == 3:
print("兄弟该补肾了")
elif num == 5:
print(”你先给我来个怪兽啊“)
else:
print(”会见~“)
注意: 使用多分支的时候,代码是从上到下依次判断,只要满足一个,就不会再往下走。所以,进行在编写分支条件的时候,要按照从上到下的逻辑顺序来编写。
10.3 缩进:
Python在判断条件后下一行就需要进行缩进。注意是强制缩进,如果不缩就会报错! 缩进一般使用TAB键,缩进主要就是要为了让程序知道,每段代码依赖哪个条件。
如果不通过缩进来区分,程序不会知道当条件成立后,去执行哪些代码。
10.4 缩进原则:
1.*代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进
2.同一级别的代码,缩进必须一致
3.官方建议缩进用4个空格,当然也可以用2个,建议按照官方的统一来。
十一 while
11.1 while基本语句:
主要是做程序循环的功能:
条件如果为真,那么程序就会一直循环下去,如果条件为假,就退出。
while True:
print("aa")
print("bb")
print("cc")
这个例子会一直循环下去:循环print一圈后再回到while语句第一行,判断while条件是否还是True(真) ,如果是True(真),哪么就继续往下走。
11.2 循环终止语句:
如果在循环过程中,因为一些原因,不想循环了,那么就需要用到break 与continue
break: 终止整个循环:
while True:
print(a)
break
程序从上向下执行,先输出了一个a ,然后遇到break就终止整个循环了。 所以最终只有一个字符a。
continue:跳出当前循环:
for i in range(1,11):
if i == 5:
continue
print(i)
如果等于5就跳出当前循环,所以最后的结果没有5 。结果:1,2,3,4,6,7,8,9,10 。
11.3 while else
Python中还有while else 这个语句,
如果while 循环被break打断,那么就不执行else后面的语句,如果没有被break打断就会执行else后面的语句:
程序没有被break打断:
a = 1
while a < 3:
print(a)
a +=1
else:
print("程序执行完毕!")
输出结果: 1 2 程序执行完毕 !
while循环全部执行完毕输出1 2 ,但是没有被break跳出,那么就会继续执行else后面的程序。
程序被break打断:
while True:
print("aaaa")
break
else:
print("程序执行完毕")
输出结果: aaaaa
程序循环遇到break跳出,while虽然也全部执行完了。但是因为被break打断的,所以就不会执行else后面的程序了。
十二 格式化输出
12.1 占位符:
% 为占位符,表示这个地方需要使用格式化输出
12.2 格式化类型:
s 代表字符串类型输出
d 代表数字类型输出
12.3 格式化实现方法一:
name = input("输入您的姓名:")
age = input("输入您的年龄:")
sex = input("输入您的性别:")
job = input("输入您的工作:")
msg = '''
---------- info to %s -----------
Name : %s
Age: %d
Sex: %s
Job: %s
---------------------------------
'''%(name,name,int(age),sex,job)
12.4 格式化实现方法二:
info = {"name":"jack","age":22,"sex":"man","job":"IT"}
msg2 = '''
-------------- info to %(name)s ----------------
Name : %(name)s
Age : %(age)d
Sex : %(sex)s
Job : %(job)s
----------------- end -------------------
'''%(info)
print(msg2)
注意:如果在输入中%号要按照实际输出, 可以加上% 来转义一下: %% 两个百分号就输出实际的%号了。
十三 初始编码
13.1 asiic码
只有英文字母,数字,特殊符号。
A :00000001 8位 等于一个字节 8位是256个
13.2 unicode 万国码
看到的内容最小组成元素是一个字符 unicode 是16位也就是2字节为一个字符
16位就是 65535个
A :00000001 00000001
13.3 由于万国码也无法装下全世界的语言字符,所以就进行了升级,升级为32位 四个字节表示一个字符
A : 00000001 00000001 00000001 00000001 四个字节
中文 :00000001 00000001 00000001 00000001 四个字节
这个字符集太浪费空间了。于是吧 unicode 升级到 utf-8。
13.4 utf-8
UTF-8可以动态调整编码大小。
A : 01000010 一字节
欧洲文字: 00000001 00000001 两字节
中文 : 00000001 00000001 00000001 三字节
13.5 GBK 国标 :
只能翻译中文与英文。
A : 00000001 一个字节
中文 : 00000001 00000001 两个字节
十四 基础数据类型简单介绍
14.1 数组
数组定义是使用 { } 来进行定义。数组中一个key也叫做键, 对应一个value叫做值,是成对出现的。
dict = {"name":"jack","sex":"man"} “name”就是key "jack"就是value。
键的类型只能是 int 、 bool 、 str、 tuple()。一般是使用字符串当键。
数组取值: 使用数组的键来获取他的值。
dict = {"name":"jack","sex":"man","job":"IT"}
print(dict["name"] ) 输出结果为"jack"
14.2 列表
列表定义是使用 [ ] 来进行定义:
name = [ "jack","tom","bobo"]
列表中的值是有索引的也叫下标,每个值对应一个下标。默认是从0开始
比如:取出列表中的jack
li = [1,2,3,4,5,"jack"]
print(li[5]) 输出结果为"jack"
练习题:
1、使用while循环输入 1 2 3 4 5 6 8 9 10
2、求1-100的所有数的和
3、输出 1-100 内的所有奇数
4、输出 1-100 内的所有偶数
5、求1-2+3-4+5 ... 99的所有数的和
6、用户登陆(三次机会重试)
可以支持多用户登录
li = [{'username':'alex','password':'SB'},
{'username':'wusir','password':'sb'},
{'username':'taibai','password':'男神'},
]
客户输入了三次机会,都没成功,给它一个选择,让它在试试
Y 再给他三次机会...不输入了,print('拜拜。。')