'Day01-Python简介与基础
1.Python前世今生
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
最新的TIOBE排行榜,Python赶超PHP占据第五!
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。互联网公司广泛使用Python来做的事一般有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。
注视:上述重点字体表示该公司主要使用Python语言开发
2.为什么是Python而不是其他语言?
C 和 Python、Java、C#等
C语言: 代码编译得到机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
其他高级语言: 代码编译得到字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
Python 和 C Python这门语言是由C开发而来
对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
对于速度:Python的运行速度相较与C,绝逼是慢了
Python 和 Java、C#等
对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
对于速度:Python在速度上可能稍显逊色
所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。
3.Python的种类
- Cpython(解释)代码----字节码-----机器码(解释一行,执行一行)
Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。 - Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。 - IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似) - PyPy(特殊)(编译)代码---字节码-----机器码(全部转换完之后在执行)
Python实现的Python,将Python的字节码字节码再编译成机器码。 - RubyPython、Brython ...
- Cpython(解释)代码----字节码-----机器码(解释一行,执行一行)
4.python基础
—python规则
1.安装:python解释器(作用:开辟内存,执行结果,检验代码格式是否正确,最终释放内存,给出结果)
windows--安装目录:C:\python35
2.写代码(程序)
将内容保存到目录下面,在终端里面执行:c:\python35\python.exe G:\1.py
python内部内部执行顺序:1.打开文件,读取文件内容 2.词法,语法分析 3. 符合规则之后 代码—字节码—机器码
—解释器
window环境:解释器—C:\python\python.exe G:\1.py (给个文件执行)
C:\python\python.exe (进入解释器环境,单行执行)
liunx环境:文件头部信息:#!/usr/bin/env python
#-*- coding:utf8 -*-(指定编译器编码)
chmod 755 1.py (给文件权限) ./1.py (直接执行)
—潜规则
文件格式后缀名以.py结尾
—编码
最早出现的编码(ascii):只支持英文,8位一个字节(例如a:00000001)
万国码:(编码至少16位)随着电脑的普及,为了支持其他国家使用,出现支持各种语言的编码。中文占三个字节(24位)。(例如a:00000000 00000001)(对于a类型的来说,位数较多,比较占用内存,所以出现出现万国码的压缩版 utf-8)
utf-8:中文还是占用三个字符
gbk,gb2312:正对中文的编码,gb2312比给gbk增加了繁体字,中文只需2个字节
默认python2编码为ascii码,python3为utf-8
5. 注释
单行注释:代码前面加# 多行注释: 三个引号 ("""代码""") 鼠标选中多行Ctrl+?进行多行注释,选中多行注释的代码Ctrl+?取消多行注释
6.变量(声明变量)
变量名要求: 1.字母 2.数字(不能以数字开头) 3.下划线 4.不能使用关键字 5.变量名要有意思(中间以下划线分隔,可识别度高)
示例:
1 name = 'longkunsheng' 2 n = name 3 name = 'liuhaoran' 4 print(n+name)
7.输入.输出
输入:
name: v = input('请输入用户名:') v = 表示接收用户输入的值(等同于变量)
import: 示例: import getpass v = getpass.getpass ('请输入密码')
输出:
print('内容') :打印括号里面的内容 print(变量): 打印变量的内容
示例:
name = input('请输入姓名:') print(name) import getpass pwd = getpass.getpass ('>>>') print(pwd) import getpass name = input('请输入姓名:') pwd = getpass.getpass ('请输入密码:') age = input('请输入您的年龄:') print(name) print(pwd) print(age)
8.条件语句
if 条件: if 条件:
成功走这儿 ...
else: elif 条件:
失败走这儿 ...
elif 条件:
...
else:
...
示例:
username = input('请输入用户名:') if username == 'long': print('管理员') elif username == 'liu': print('sb') else: print('gu拜') print('end')
user_type = input('请输入姓名:') if user_type == '龙': name = input('请输入家庭地位:') if name == '老大': print('yes') elif name == '刘': print('仆人') else: print('什么东西都不是')
9.循环语句
while 条件:
continue (跳出本次循环,执行下次循环)
break (跳出所有循环)
示例:
while True: username = input('xingming:') pwd = input('mima:') if username == 'long' and pwd =='123': print('ok') break else: print('no')
i = 1 while True: if i == 7: i +=1 continue print(i) i +=1 if i == 11: break
i = 1 while i < 11: if i == 7: i+=1 continue print(i) i +=1 if i == 11: break
10.运算符
a.算术运算符
b.比较运算符
c.赋值运算符
d.逻辑运算符
e.成员运算符
11.练习题
1、使用while循环输入 1 2 3 4 5 6 8 9 10
i = 1 while i < 11: if i == 7: i +=1 continue print(i) i +=1 if i == 11: break
2、求1-100的所有数的和
value = 0 i = 1 while i < 101: value = value+i i +=1 print(value)
3、输出 1-100 内的所有奇数
i = 1 while i < 101: if i % 2 == 1: # i % 2 == 0 输出的是偶数 print(i) i += 1
4 求1-2+3-4+5 ... 99的所有数的和
i = 1 value = 0 while i < 100 : if i % 2 == 1: value += i if i % 2 == 0: value -= i i += 1 print(value)
5、用户登陆(三次机会重试)
i = 1 while i < 4: name = input('请输入用户:') pwd = input('请输入密码:') if name == 'long' and pwd =='123': print('成功') break else: print('失败') i += 1
12..python类型
—整数:创建:a = 123 或 a = int(123) 转换:age = ‘18’ ---- new_age = int(age) print (type(变量)) 查看这个变量是什么类型
—布尔值 :创建:a = True b = False 转换:数字转换时,只有0是False,其他都是True,字符串转换时,只有为空时是False,其他True(a = 1 -- b = bool(a) print (b))
—字符串:-创建:a = 'tom' 或 a = str('tom') -转换:age = 18 new_age = str(age)
-字符串的拼接:如下
str = '我叫龙坤生,今年1岁,性别男' val = '扯淡' str_val = str+val print(str_va
-字符串的格式化(占位符):如下
name = '我叫刘浩然,今年2%s岁,性别女' val_name = name % ('b') print(val_name)
name = '我叫刘浩然,今年2%s岁,性别女' % ('b') print(name)
-判断子序列是否在其中:如下
name = "国家主席,国家副主席," if '国家' in name: print('包含敏感字符') else: print(name)
-去除空白(只能去除前后,不能去除中间)
a = ' 龙坤生 ' a1 = a.split() #去除左右空白 a2 = a.rsplit() #去除右边空白 a3 = a.lstrip() #去除左边空白 print(a1) print(a2) print(a3
-分割
user_info = 'alex sb123 9' v = user_info.split(' ') #分割所有的 val = user_info.split(' ',1) #分割最左边的 new_val = user_info.rsplit(' ',1) #分割最右边的 print(v) print(val) print(new_val)
val = 'abcdef' naw_val = val[0] print(naw_val)
-索引(0代理表第一个,以此类推)
-切片
name = '我叫刘浩然,性别我今年岁,我在说啥! 'print(name[0]) print(name[0:2]) print(name[5:9]) print(name[5:]) print(name[5:-2]) print(name[0::2])
13.列表
-创建列表: a = ['龙','alex','刘',123]
a = ['龙','alex','刘',123] if '龙' in a: print(a) if 'a' in a[2]: print(a)
-索引 val = a [0] print (val)
-长度 val = len(a) print (val)
-切片 val = a [0::2] print (val)
-追加 a.append ('sb') 追加只能从最后追加
-插入 a.insert (1,'xo') 在第二个字符串前面插入,这里的0指的是索引
-删除 a.remove ('tom') 只删除列表中的第一个该字符串 del a [0] 删除列表下的第几个字符串 (可以索引删除,也可以切片删除)
-修改 a[0] = 'longkunsheng' 重新给该字符赋值
-for循环
a = ['龙','alex','刘',123] for imte in a: print(imte) continue ##break
14.字典
-创建 v = {'name':'tom','pwd':'123'} 或 v = dic ({'name':'tom','pwd':'123'})
-索引 val = v['name'] print(val)
-增加 (有该值时,修改,没有该值,增加)v['age'] = 18 print (v)
-删除 del v['name']
-for循环
-长度 print (len(v))
v = {'name':'chengfei','password':'123123'} n = v ['name'] # 通过索引keys获取values(只能根据keys获取values) print(n) v ['age'] = 18 # 增加 无 增加 有时 修改 print(v) del v['name'] # 删除 print(v) for item in v : # for 循环所有的keys值 print(item) for item in v.keys(): # for 循环所有的keys值 print(item) for item in v.values(): # for 循环所有的values值 print(item) for key,val in v.items(): # for 循环keys,values的值 print(key,val)