、
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 判断需要加强)












