、
1.1 Python2 和Python 3 区别
python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。
为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。
许多针对早期Python版本设计的程式都无法在Python 3.0上正常执行。
为了照顾现有程式,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。
新的Python程式建议使用Python 3.0版本的语法。
除非执行环境无法安装Python 3.0或者程式本身使用了不支援Python 3.0的第三方库。目前不支援Python 3.0的第三方库有Twisted, py2exe, PIL等。
大多数第三方库都正在努力地相容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写相容Python 3.0版本的程式,然后使用Python 2.6, Python 2.7来执行。
Python 3.0的变化主要在以下几个方面:
1.2 print 函数
print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。在Python 2.6与Python 2.7里面,以下三种形式是等价的:
print “fish”
print (“fish”) #注意print后面有个空格
print(“fish”) #print()不能带有任何其它参数
然而,Python 2.6实际已经支持新的print()语法:
from __future__ import print_function
print(“fish”, “panda”, sep=’, ‘)
1.3 Python windows安装
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27
3、配置环境变量
【右键计算机】–》【属性】–》【高级系统设置】–》【高级】–》【环境变量】–》【在第二个内容框中找到 变量名为Path 的一行,双击】 –> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
1.4 Python Hello Worl
windos安装Python后执行第一个命令 进入Python D:\>python Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. 输出Hello World >>> print("Hello World") Hello World 退出 >>> exit()
其中windos DOS 命令 进入D盘(大小写忽略) D:\>d: D盘目录结构 D:\>dir 驱动器 D 中的卷没有标签。 卷的序列号是 0DEB-0B18 D:\ 的目录 2017/08/02 22:01 <DIR> 360安全浏览器下载
2017/05/24 13:50 <DIR> badboy 2014/04/18 09:24 4,467,982,336 CentOS-6.5-x86_64-bin-DVD1.iso
只要写可执行程序,第一行要写解释器 它们用于指定执行该脚本的解释器,如上即是指定python作为解释器。 #!/usr/bin/env python #env是找环境变量 #!/usr/bin/python #写死了Python路径(不建议用) print ("Hello World")
1.17 python 开发工具 pycharm
为什么用Python:1、效率高2、可调式。
创建一个项目
新建项目首先第一个是 location 创建的项目名称
创建一个Python文件 新建选择 python file
输入名字就好
创建pycharm 设置
英文选择 Editor —File and Code Templates —Python Scrpts
1.1 Python 运行
运行有两种方式可以任选其一
1.1 变量的赋值
怎么定义一个变量 Python 是一个动态语言 #!/usr/bin/env python # Author:Xue Bao name = "xuebao" name2 = name print("My name is",name,name2) name = "Pao" print(name,name2) 运行结果 My name is xuebao xuebao Pao xuebao 备注:变量名为 name、name2
1.20 变量定义的规则:
变量名只能是字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
[‘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’]
定义变量名要能看懂不能简单写(不建议写汉字和拼音)
#下划线定义长变量(官方建议用这种) gf_of_oldboy = "test" #驼峰型变量 GF0of0oldboy = "test"
1.21 常量
#常量可以用大写
1.22 字符编码
为什么讲字符编码,计算机底层存储 只认识0和1。
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
关于中文
为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。
有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:
ASCII 一个字节
unicode 两个字节
utf- 英语一个字节 中文3个字节
1.23 Pycharm 修改为Python2.7
#Python 2里中文要python解释器 定义python解释器 # -*- coding:utf-8 -*- # Author:Xue Bao name = "你好世界" print(name)
1.24 Python 注释
# Author:Xue Bao #单行注释 name = "你好世界" print(name) #多行注释(注释:三个单引号) ''' name2 = "你好中国" print(name2) ''' #多可以注释可以用于 输出 msg = ''' test test ''' print(msg)
1.25 字符串格式化拼接
在Python的实际开发中,很多都需要用到字符串拼接,python中字符串拼接有很多
1.25.1 字符串格式化拼接输出一
#!/usr/bin/env python # Author:Xue Bao name = input("name:") age = input("age:") job = input("job:") salary = input("salary:") info = ''' #字符串的拼接 -------info of '''+ name +''' ------- Name:'''+ name +''' Age:'''+ age +''' Job:'''+ job+ ''' Salary: '''+ salary +''' ''' print(info)
1.25.2 字符串格式化拼接输出二
#!/usr/bin/env python # Author:Xue Bao name = input("name:") age = input("age:") job = input("job:") salary = input("salary:") info = ''' #字符串的拼接 -------info of %s ------- Name:%s Age:%d Job:%s Salary:%s ''' % (name,name,age,job,salary) print(info) 注释:%s,表示格式化一个对象为字符 %d,整数 %f 浮点型(小数)
1.25.3 字符串格式化拼接输出三
#!/usr/bin/env python # Author:Xue Bao name = input("name:") age = int(input("age:"))#integer 转成整型 #打印数据类型 print(type(age) ,type(str(age))) job = input("job:") salary = input("salary:") info = ''' #字符串的拼接 -------info of {_name} ------- Name:{_name} Age:{_age} Job:{_job} Salary:{_salary} ''' .format(_name=name, _age=age, _job=job, _salary=salary) print(info)
1.26 打印数据类型
#!/usr/bin/env python # Author:Xue Bao name = input("name:") age = input("age:") #打印数据类型 print(type(age))
1.26.1 强行转换因为Python是强制型语言
#!/usr/bin/env python # Author:Xue Bao name = input("name:") age = int(input("age:"))#integer 转成整型 #打印数据类型 print(type(age))
1.26.2 raw input 和input 区别
#raw_input 2 写法 ,input (不要用) #input Python 3.0写法 job = raw input("job:") 等于 input("job:") 备注:在Python 2里面input 为变量(在2.7忘记input) D:\Python27>python Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> name = input("name:") name:ddd Traceback (most recent call last): File "", line 1, in File "", line 1, in NameError: name 'ddd' is not defined
1.26.3 加载Python模块getpass(影藏密码)
#!/usr/bin/env python # Author:Xue Bao #初始模块,import getpass #什么是模块、import从标准库里调用getpass 使输入密文 #import 导入 getpass import getpass username = input("username:") password = getpass.getpass("password:") print(username,password) #注意在pycharm 中无法执行getpass 需要在widows 命令行中执行 进入Python的路径
1.27 Python if判断语句
讲解:
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
注意:
1、每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在Python中没有switch – case语句。
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件:
执行语句……
else:
执行语句……
其中”判断条件”成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。
else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句,具体例子如下:
实例
#!/usr/bin/env python # -*- coding:utf-8 -*- name = "xuebao" name2 = input("Name:") if name2 == name: print("name xuebao") else: print("please input name:")
扩展
if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可以使用以下形式:
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
实例
提示:需要注意在做数字判断中数字要为int 整型。
#!/usr/bin/env python # -*- coding:utf-8 -*- num = int(input("name:")) if num == 3: print("number ok") elif num == 2: print("number 2") elif num == 1: print("number 1") elif num > 20: print("number 20") else: print("test")
由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。
实例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 例3:if语句多个条件
num = 9
if num >= 0 and num <= 10: # 判断值是否在0~10之间
print 'hello'
# 输出结果: hello
num = 10
if num < 0 or num > 10: # 判断值是否在小于0或大于10
print 'hello'
else:
print 'undefine'
# 输出结果: undefine
num = 8
# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print 'hello'
else:
print 'undefine'
# 输出结果: undefine
当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。
简单的语句组
你也可以在同一行的位置上使用if条件判断语句,如下实例:
实例
#!/usr/bin/python # -*- coding: UTF-8 -*- var = 100 if ( var == 100 ) : print "变量 var 的值为100" print "Good bye!" 以上代码执行输出结果如下: 变量 var 的值为100 Good bye!
1.27.1 以下为if中常用的操作运算符:
#!/usr/bin/python3 # 该实例演示了数字猜谜游戏 number = 7 guess = -1 print("数字猜谜游戏!") while guess != number: guess = int(input("请输入你猜的数字:")) if guess == number: print("恭喜,你猜对了!") elif guess < number: print("猜的数字小了...") elif guess > number: print("猜的数字大了...") 例子 #!/usr/bin/env python # Author:Xue Bao import getpass _username = "xuebao" _password = "abc123" username = input("username:") password = input("password:") if _username == username and _password == password : print("Welcome user {name} login...".format(name=username)) else: print("Invalid username or password!")
1.27.2 if 判断语句 elif
#!/usr/bin/env python # Author:Xue Bao age_of_oldboy = 56 guess_age =int(input("guess age:")) if guess_age == age_of_oldboy: print("yes,you got it.") elif guess_age > age_of_oldboy: print("think smaller...") else: print("think bigger!")
1.27.3 if 嵌套
在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。
if 表达式1: 语句 if 表达式2: 语句 elif 表达式3: 语句 else: 语句 elif 表达式4: 语句 else: 语句 1.27.3.1 实例 #!/usr/bin/env python count = 0 while count < 3: name = int(input("name:")) if name < 10: print("name < 5") if name == 5: print("name == 5") else: print("test") count +=1
1.27.4 python 循环
本章节将为大家介绍Python循环语句的使用。
Python中的循环语句有 for 和 while。
Python循环语句的控制结构图如下所示:
1.27.5 while 循环语句
while 循环
Python中while语句的一般形式:
while 判断条件:
语句
同样需要注意冒号和缩进。另外,在Python中没有do..while循环。
例子:
#!/usr/bin/env python # Author:Xue Bao count = 0 #True 是真当这个条件成真 while True: print("count:",count) count = count +1 #相当于count +=1 while 循环 count计数 if判断 #/usr/bin/env python # Author:Xue Bao age_of_oldboy = 56 #计数器 count = 0 #while 判断是否执行正确 while True: #大于3结束 if count ==3: break guess_age =int(input("guess age:")) if guess_age == age_of_oldboy: print("yes,you got it.") break elif guess_age > age_of_oldboy: print("think smaller...") else: print("think bigger!") #计数 count count +=1 注释:while True: #大于3结束 if count ==3: break
可以优化为 while count <3:
1.27.6 优化后的 #!/usr/bin/env python # Author:Xue Bao age_of_oldboy = 56 #计数器 count = 0 #while 判断是否执行正确 while count <3: guess_age =int(input("guess age:")) if guess_age == age_of_oldboy: print("yes,you got it.") break elif guess_age > age_of_oldboy: print("think smaller…") else: print("think bigger!") #计数 count count +=1 #人性化 #if count ==3: else: print("you have tried too many times no")
1.27.7 for 循环
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 for循环的一般格式如下: for <variable> in <sequence>: <statements> else: <statements> Python loop循环实例: 实例 >>>languages = ["C", "C++", "Perl", "Python"] >>> for x in languages: ... print (x) ... C C++ Perl Python >>> 以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体: 完成循环!
1.28 range()函数
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列, range (瑞兹) 范围 例如: 实例 >>>for i in range(5): ... print(i) ... 0 1 2 3 4 你也可以使用range指定区间的值: 实例 >>>for i in range(5,9) : print(i) 5 6 7 8 >>> 也可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'): 实例 >>>for i in range(0, 10, 3) : print(i) 0 3 6 9 >>> 负数: 实例 >>>for i in range(-10, -100, -30) : print(i) -10 -40 -70 >>> 您可以结合range()和len()函数以遍历一个序列的索引,如下所示: 实例 >>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ'] >>> for i in range(len(a)): ... print(i, a[i]) ... 0 Google 1 Baidu 2 Runoob 3 Taobao 4 QQ >>> 还可以使用range()函数来创建一个列表: 实例 >>>list(range(5)) [0, 1, 2, 3, 4] >>> #!/usr/bin/env python # Author:Xue Bao for i in range(0,10): if i <3: print("loop",i) else: continue print("hehe...") 备注:break 是结束循环、contine 是结束当前循环 实例2 #!/usr/bin/env python # Author:Xue Bao for i in range(10): print("------------",i) for j in range(10): print(j) if j >5: break
作业:1、博客
作业二:编写登录接口
输入用户名密码
认证成功后显示欢迎信息
输错三次后锁定(增删改错)
先登录看看用户在不在
#!/usr/bin/env python # Author:Xue Bao name = input("请输入用户:") #输入用户名 name_str = open("name.txt","r",encoding="utf-8") #打开用户和密码txt文件 locking_str = open("passwd.txt","r+",encoding="utf-8") #打开已锁定的用户表 name_list = name_str.readlines() #将name.txt 字符串转换为列表 locking_list = locking_str.readlines() #将passwd.txt 字符串转换为列表 name_list2 = [] #定义的新name 为if 对比用 passwd_list = [] #定义的新的passwd 为if 对比用 name_locking = [] #定义新的用户锁 为if 对比用 for name_a in name_list: #循环用户和密码的列表,分别将 name_list2.append(name_a[0:5].strip()) passwd_list.append(name_a[6:].strip()) # print(name_list2) # print(passwd_list) for name_locking2 in locking_list: name_locking.append(name_locking2[0:6].strip()) # print(name_locking) if name in name_locking: print("----------------错误反馈-----------------------") print("对不起,你的账号已锁定,请联系管理员解锁!") exit() count = 1 if name in name_list2: while count <4: num = 3 - count print("----------------请输入密码:-----------------------") passwd = input(":") name_number = name_list2.index(name) # print(name_number) if passwd == passwd_list[name_number]: print("----------提示----------------") print("欢迎进入!") exit() else: print("----------------------------------------------") print("对不起密码错误、请重新输入你还有: ",num ,"机会。") print("----------------------------------------------") count +=1 else: print("----------------错误反馈-----------------------") print("对不起,你的账号不存在,请联系管理员申请!") 执行结果: 总结: 1、此次明确方法,通过open打开文件,通过readlines将字符串转成列表对比。 2、通过列表切片,apped 追加新的列表进行对比,strip去除空格 3、通过for if 语句判断 作业三: 三级菜单 可依次选择进入各子菜单 所需新知识点:列表、字典。 #!/usr/bin/env python # Author:Xue Bao data = { "北京":{ "朝阳":{ "望京":["陌陌","联想" ], "国贸":["CICC","HP"], "东直门":["Advent","飞信"], }, "海淀":{ "中关村":{"TBT","微软" }, "苏州街":{"人大","航天"}, "海淀黄庄":{"OFO","机电"}, }, }, "甘肃":{ "白银":{ "白银区":{"白银市","王显" }, "平川":{"平川区","平川"}, "会宁":{"学校","学生"}, }, "天水":{ "麦积区":{"麦积山","林校" }, "秦州区":{"师院","飞机场"}, "甘谷区":{"大象山","没有"}, }, }, } exit_flag = False print("---------省市区选择说明--------------") print(":输入省市后,可以输入q退出,b返回上一级目录!") print("------------------------------------") while not exit_flag: for i in data: print(i) city = input("请输入选择的省:") if city in data: while not exit_flag: for i2 in data[city]: print(i2) city2 = input("请选择市区") if city2 in data[city]: while not exit_flag: for i3 in data[city][city2]: print(i3) city3 = input("请选择地方:") if city3 in data[city][city2]: while not exit_flag: for i4 in data[city][city2][city3]: print(i4) city4 = input("最后一层了、请按b返回!") if city4 =="b" : pass elif city4 == "q": exit_flag = True if city3 == "b": break elif city3 == "q": exit_flag = True if city2 == "b": break elif city2 == "q": exit_flag = True 总结: 1、使用字典和列表的取值(for 判断需要加强)