Python的入门()
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言
:面向对象、直译成的计算机程序语言
:遵循GPL协议(GNU General Public License)
创始人:吉多.范罗苏姆 源于1989年圣诞期间
特点:优雅、明确、简单
Python适合开发哪些应用?
Python语言应用于系统编程、数据库、网络编程、GUI、数字及科学计算、Web编程、快速产品成型等
编程特性:
1:面向过程
2、面向对象
3、函数式编程
基本数据类型:
整型(int)、
长整型(long) Python3没有
浮点数(float) 一个浮点数占8个字节,浮点数是小数(带小数点)
负数(complex)
布尔值(bool) 判断真或假
1为真 1=true 0为假 0=false (只有0是false,其他全是true)
各种Python解释器
CPython
CPython 是默认的python实现,环境或者是解释器(你喜欢哪个就那么叫)。脚本大多数情况下都运行在这个解释器中。 CPython是官方的python解释器,完全按照python的规格和语言定义来实现,所以被当作其他版本实现的参考版本。CPython是用C语言写的,当执行代码的时候Pythond代码会被转化成字节码(bytecode)。所以CPython是个字节码解释器。当我们从Python官网下载安装包安装,或者是通过类似 "apt-get" 或者 "yum"工具安装的时候,安装的都是CPython版本。
PyPy
PyPy 是一个很多地方都和CPython很像的实现,但是这个解释器本身就是由Python写成。也就是说开发者们用Python写了一个Python解释器。然而这个解释器的代码先转化成C,然后在编译。PyPy被认为要比CPython性能更好。因为CPython会把代码转化成字节码,PyPy会把代码转化成机器码。
Psyco
Psyco 是一个类似PyPy,但是很好的解释器。现在已经被PyPy取代了,有可能的话,使用PyPy来代替Psyco。
Jython
Jython是用java实现的一个解释器。Jython允许程序员写 Python代码,还可以把java的模块加载在python的模块中使用。Jython使用了JIT技术,也就是说运行时Python代码会先转化成 Java 字节码(不是java源代码),然后使用JRE执行。程序员还可以用Jython把Python代码打成jar包,这些jar和java程序打包成的 jar一样可以直接使用。这样就允许Python程序员写Java程序了。但是呢,必须要知道哪些Java模块可以在Jython中使用,然后使用 Python的语法就可以写程序了。Jython兼容python2,也可以使用命令行来写交互式程序。
ronPython
IronPython 是使用C#语言实现,可以使用在.NET 和 Mono 平台的解释器。IronPython 是兼容 Silverlight 的,配合Gestalt 就可以直接在浏览器中执行。IronPython也是兼容Python2的。
tip: Mono 是提供.NET-compatible 工具的开源框架。
安装Python 3.5
目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于3.x版越来越普及,我们的教程将以最新的Python 3.5版本为基础。
在Windows上安装Python
1、首先访问http://www.python.org/download/去下载最新的python版本。
首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.5对应的64位安装程序或32位安装程序然后,运行下载的EXE安装包:
特别要注意勾上Add Python 3.5 to PATH
,然后点“Install Now”即可完成安装。
运行Python
安装成功后,打开命令提示符窗口,敲入python后,会出现两种情况:
情况一:
看到上面的画面,就说明Python安装成功!
你看到提示符>>>
就表示我们已经在Python交互式环境中了,可以输入任何Python代码,回车后会立刻得到执行结果。现在,输入exit()
并回车,就可以退出Python交互式环境(直接关掉命令行窗口也可以)。
情况二:得到一个错误:
‘python’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
这是因为Windows会根据一个Path
的环境变量设定的路径去查找python.exe
,如果没找到,就会报错。如果在安装时漏掉了勾选Add Python 3.5 to PATH
,那就要手动把python.exe
所在的路径添加到Path中。
如果你不知道怎么修改环境变量,建议把Python安装程序重新运行一遍,务必记得勾上Add Python 3.5 to PATH
。
文本编译器
PyCharm 是 JetBrains 开发的 Python IDE。PyCharm 用于一般 IDE 具备的功能,比如, 调试、语法高亮、Project 管理、代码跳转、智能提示、自动完成、单元测试、版本控制……另外,PyCharm 还提供了一些很好的功能用于 Django 开发,同时支持 Google App Engine,更酷的是,PyCharm 支持 IronPython!
初次使用pycharm时,需要对pycharm对一些基本的操作,这样防止以后出现问题:
pycharm操作模板增加注释file ---default settings---temp(搜索框写) --- python Script
设置解释器 file ---default settings---encoding(搜索框写)---Default encoding...files 选择UTF-8
调字体大小 seting -mouse(搜索框写) -General--第二个打勾-保存--ctrl + 滚轮
快捷键的操作:
注释多行:先标记多行 Ctrl+?
查看源码:Ctrl+鼠标左键点击命令
列模式:Alt+鼠标左键
结束符号:
break 结束,跳出所有循环
continue 结束当前循环,执行下一次循环
pass python站位(什么都不执行,没有就会语法错误)
return 终止(针对函数)
特殊字符:
字典 a = {"a",1}定义键和值之间一对一的关系,已无序方式储存
:一段话的结束符
字符串格式化:
% 格式符号
%d 代表整数
%f 浮点数
%s 占位符
换行
; 段落结束符
,分割作用
命令:
id(name) 查看name内存地址 name是变量
type(name)查看name类型 获取类
len(name) 判断列表或元组的长度(如果是一个字符串,每一个字符是一个长度)
bool(name) 非0和非空都是true,name=ab,bool(name)bool值是true (布尔值)
list(name) 转换为列表 list和tuple的相互转化
tuple(name) 转换为元组 tuple和list的相互转化
dir(naem) 查看元组或列表权限
import 导入模块
int 把用户输入的字符串转换成数字格式
pyc 字节码
文件类型
Linux安装
1 #!/bin/bash 2 3 #install python3.6 4 5 yum -y install readline-devel #修复bug 6 7 wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1rc1.tgz 8 9 mkdir /usr/local/python3 10 11 tar -xvf Python-3.6.1rc1.tgz 12 13 cd Python-3.6.1rc1 14 15 ./configure --prefix=/usr/local/python3 16 17 make 18 19 make install 20 21 ln -s /usr/local/python3/bin/python3 /usr/bin/ 22 23 echo "python.2 write command----python" 24 25 python -V #显示默认安装版本 26 27 echo "python.2 write command----python3" 28 29 python3 -V #显示安装版本
交互
1 >>>print (name) #输出 2 >>>name = input("nanna:") #输入,显示交互 3 >>>import getpass #调用模块 4 >>>pqqq = getpass.getpass("请输入密码") #输入,不显示交换,需要调用变量import getpass)
快捷键操作
- 注释多行 先标记多行 再 Ctrl +/
- 查看源码 ctrl + 鼠标左键点击命令
- 列模式 alt +鼠标左键
结束符号
- break 结束 跳出所有循环
- continue 结束当前循环继续下一次循环,针对for循环
- pass python站位 没有就会语法错误
- return 终止 针对函数,
- exit 返回编号含蓄 如 exit(0...)
- continue 跳出本次循环,执行下一次循环
变量声明要求
- 变量只能用.字母,数字,下划线任意组合,且变量开头不能是数字
- 关键字不能为变量
import keyword #
keyword模块,可以输出当前版本的所有关键字print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else','except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or','pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
数据类型
数字
int 整型
- 32位系统 -2**31~~2**31-1 即-2147483648~2147483647
- 64位系统 -2**63~~2**63-1 即-9223372036854775808~9223372036854775807
1 >>>bin(10) 二进制 2 '0b1010' 3 >>> 10 默认十进制 4 10 5 >>> oct(10) 8进制 6 '0o12' 7 >>> hex(10) 16进制 8 '0xa' a表示10 b表示11 以此类推
Long 长整型 pytyon3没有
Float 浮点数 1个浮点数占8字节(64位) 浮点数:带有小数的整数)
布尔 (判断真或假 )
1 bool 2 1为真 1==True 0为假 0==False (只有0是False 其他都是True) 3 判断a列表是否存在元素 4 >>> a =['aa','cc'] 5 >>> "bb" in a 6 True 7 >>> "dd" in a 8 False
字符串
索引 name[2]
1 >>> name 2 [11, 'ad', 33] 3 >>> name[2] 4 33
元组
- count统计元素出现的次数
- index 查找字符串(查找不到报错)
1 >>> t1 = (1,2,{"gg":"k3"}) #增加了字典 2 >>> t1 3 (1, 2, {'gg': 'k3'}) 4 >>> t1[2]["gg"]=2 5 >>> t1 6 (1, 2, {'gg': 2})
列表
1 L = ["a",11,var] 2 dir(L) #查看L列表的能执行的命令 3 4 L.append(var) #增加,追加,var的值添加到L的中 5 6 L.insert(2,var) #插入, 指定追加,在第二元素后增加var 7 L.pop() #删除最后一个元素,并从list中删除之 8 9 L.remove(var) #删除,指定删除元素var 如有多个var 删除第一次出现元素var 10 11 L.count(var) #查看, 显示元素var出现个数 12 13 L.index(var) #该元素的位置,无则抛异常 14 15 L.extend(list) #追加list,即合并list到L上 16 17 L.sort() #排序 18 19 L.reverse() #倒序 反转排序 20 更新 a=['A','B'] a[1] = 'c' print(a) (结果 a = ['A','c'] )
字典
1 dic = {'name':'alex','age':["aa","bb"],} 2 #查 3 print (dic.get('name')) #如果找不到name的vulue,返回None 4 print (dic.get('name',"null")) #如果找不到name的vulue,指定返回null 5 #增 6 dic['gender']='female' 7 #改 8 dic['name']='guolm' #改key 9 dic['age'][0]='guolm' #改key中第一个value 10 #删 11 del dic['name']
1 name = input('Name:') 2 age = input('Age') 3 job = input('Job') 4 hobbie = input('Hobbie') 5 info = ''' 6 ---------info of %s--------- #%s是占位符 7 Name:%s 8 Age:%s 9 Job:%s 10 Hobbie:%s 11 ---------end---------------- 12 '''%(name,name,age,job,hobbie) #传参 13 print(info)
%s就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦(input接收的所有输入默认都是字符串格式!)
基本运算符
算数运算
比较运算
赋值运算
逻辑运算
字符编码
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
Unicode Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。 Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每 个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位 来表示(2个字节),即:2 **16 = 65536
UTF-8 utF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将 所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个 字节保存,东亚的字符用3个字节保存
循环语句
if循环
格式:
- ... 条件语句elif 条件:... 条件语句else:... 执行语句
交换判断
1 #一次交换判断 2 # #!/usr/bin/python 3 sex = input("input your gender: ") 4 if sex == "girl": 5 print ("i like you ") 6 elif sex == "man": 7 print ("Going to homesexual!...") 8 else: 9 print("I'm will very angry!")
1 gongxu=22 2 guess=int(input("请输入:")) 3 if guess > 30: 4 print("很接近了") 5 elif guess < 20: 6 print("或许可以再猜一次,也很接近了") 7 else: 8 print("bingo,答对了")
for循环
1 # 如下是for循环写3次方法,注意格式 2 gongxu = 23 3 for i in range(3): 4 g = int(input("guess your lucky number: ")) #int 把用户输入的字符串格式转换成数字格式 5 if g < gongxu: 6 print ("please guess a big bigger") 7 elif g > gongxu: 8 print ("please guess a little bit small") 9 else: 10 print("bingo!") 11 break 12 else: 13 print ("too many retrys!")
1 for i in range(1,10): 2 for j in range(1,10): 3 if j < 6: 4 continue #跳出当此循环继续下一次循环,针对for循环 5 print(i,j)
while循环
死循环
1 判断输入为数字 则跳槽,否则进行下一次循环 2 while True: #当条件为真 则: 3 salary = input("Your salary:") #交互 4 if salary.isdigit(): #判断为整数,则执行如下操作 5 salary = int(salary) #格式化数字 6 break #跳出所有循环 7 所有循环 else: 8 continue #跳出当此循环,进行下一次循环
1 count = 0 2 while count<=20: 3 print('haha',count) #只要count<=20就不断执行下面的代码 4 if count ==2: 5 break 6 count+=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0 7 print("hahhahahaahah")
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句
while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句
1 count = 0 2 while count <= 5 : 3 count += 1 4 print("Loop",count) 5 6 else: 7 print("循环正常执行完啦") 8 print("-----out of while loop ------")
第一个程序
Strip移除空白
1 gx=' abc ' 2 print(gx.strip()) #去掉左右空格 3 print(gx.rstrip()) #去掉右空格 4 print(gx.lstrip()) #去掉左空格
Split分割
1 user="gongxu|123|5" 2 i=user.split("|") #以|分隔,后边跟上1就是从左边第一个开始分隔 3 i=user.split("|",1) #分隔第一个,从右2边开始 4 print(i)
len长度
1 #获取number的长度 2 number = ("abc",123) 3 print(len(number)) 4 number1 = ("123456") 5 print(len(number1))
切片[]
1 gx="hello" 2 print(gx[1]) #取第一个值,从0开始 3 print(gx[2:3]) #取第二个至第三个的值,从0开始 4 print(gx[1:]) #取第一个至最后的值
capitlize返回一个首字母大写的字符串。
1 gx = "Hello,world" 2 print(gx.capitalize())
center分隔行
1 gx = "abc" 2 print(gx.center(10)) #10是总长度,左右10空格 3 print(gx.center(10,'*'))# *是内容 4 print(gx.rjust(10,'*')) #左边填充 5 print(gx.ljust(10,'*')) #右边填充
count统计出现的次数
gx = 'aahjdfhhaa chdldlfn fknfonfof' result=gx.count('a') #统计a出现的次数 范围:0-9个字符(有头无尾,注:不加0-10是统计所有字符)result:结果 print(result)
encode utf-8转gbk
gx = "龚旭" result = gx.encode('gbk') print(result)
expandtabs增加分割符(制表符 ,包含前面的值)
1 gx = 'xixixi hahah haha zizizi' 2 result = gx.expandtabs() 3 print(result) 4 输出结果:xixixi hahah haha zizizi
partition字符分割
1 gx = 'huhahehe' 2 result=gx.partition('ha') #指定ha为分隔,分割成三段 3 print(result) 4 输出结果:('hu', 'ha', 'hehe')
format拼接
gx = 'hello' print(gx.find('l')) #查找到元素,返回元素位置,如若查找不到元素,返回-1 print(gx.index('l'))#查找到元素,返回元素位置,如若查找不到元素,报错 name = '龚旭 {name} is {age}' result = name.format(name='girl',age='19') print(result)
isalnum判断值是否由数字和字母或纯数字或纯字母组
gx = '12gg''xixi''111' print(gx.isalnum())
isalpha判断值是否由字母组成
gx = 'gg' print(gx.isalpha())
isdecimal判断值是否为十进制
gx = '55555' print(gx.isdecimal())
isdigit 判断输入为整型(整数)数字
number="11" result=number.isdigit() print(result)
maketrans对应关系替换
gx = "what's your name" table = str.maketrans("name","1234") #name长度必须和1234相同 print(gx.translate(table))
zfill填充
gx = "123" print(gx.zfill(10)) #不够的位数用0填充
join拼接
li = ["wo","shi"] result = "_".join(li) print(result)
relpace转换
gx = "ggxxis" # result = gx.replace("g","x",1) #g转换成x范围:前1个,不加数字表示转换全部 # print(result)
swapcase小写转大写
name = 'gongxu' result =name.swapcase() print(result)
if循环
name = input("yougr name:") #交互 sex = input("youe sex:") if sex == "girl": #判断语句1 print("登录成功") elif sex == "woman": #判断语句2 print("恭喜你,成功") else: #执行语句 print('输入错误')
多层for循环
for i in range(1,10): for j in range(i,i+1): print(i,j)
while循环三次错误退出
gongxu = 22 count = 0 #计数器 while count <3: i = int(input("年龄:")) if i == gongxu: print("输入成功") break #跳出所有循环 elif i > gongxu: print("输入失败") count+=1 #计算器失败一次加一次,总共三次机会 else: print("输入错误")
多行定义
name = str(input('Name:')) age = int(input('Age')) job = str(input('Job')) hobbie = int(input('Hobbie')) info = ''' ---------info of %s--------- Name:%s Age:%s Job:%s Hobbie:%s ---------end---------------- '''%(name,name,age,job,hobbie) #传参 print(info)
列表循环
names = ["gx","zb","lt","hy"] for i in names: print(i) names = ["gx","zb","lt","hy"] for i,j in enumerate(names): #enumerate列举 print(i,j) 输出结果:0 gx 1 zb 2 lt 3 hy