python简史:
python我认为特性就是简洁,灵活,高效。
python重要版本:
python1991年问世,
python2.4:2004,同年django框架诞生。
python2.6:2008年推出。
python2.7:2010年推出。
python3.0:与2.6并行推出,由于python推行多年底层垃圾积攒过多(好比网站运行多年,有大量的废弃函数,文件)使语言逐渐的失去其简洁的特性。所以python作者对python进行优化,底层进行重大的改动。使其2.4之前的python程序无法迁移到3.0上(底层函数/调用方法/文件等改动),推行不顺利。所以python官方推出2.6作为2x与3x中间版本,可以同时兼容两个版本。
python3.5:2015年推出。
python2014年11月官方表示python2.7将会是最好的一个2x版本,之后不会更新2x。并建议python尽快升级到3x。时间2020年。
python:2x与3x区别
(1)2.x print **
3.x print(**)
2.7两种都可以。
(2)3.x某些模块进行改名 _改为. 大多数改成小写。
(3)3.x不支持Twisted(异步网络框架)模块,正在支持。
(4)3.x2/1=0.5 2.x 2/1=2分之1
(5)3.x raw_input改成input
(6)3.x class Foo:改成class Foo()
python输出:
print ("hello word")
print (\n"hello word2") \n代表换行
linux下运行python声明解释器路径:
1.#!/usr/bin/python3
2.#!/usr/bin/env python (最安全写法,去整个环境变量中去找python,避免因为版本升级造成影响)
python变量与赋值:
a = 5(变量可以方便随时进行调用)
示例:
a=3
b=a
a=5
print (b,a) 3 5
在python中内存回收机制,b指向最初a的变量值时,指向的并不是a的路径,而是a变量在python内存中的位置(并不是实际物理内存位置,而是python虚拟化的内存,python进行空间分配时,会产生一张表去记录变量位置,类似mfs主)类似于linux的软硬链接。a重新赋值则会将之前的路径回收,产生新的路径。
python变量名规则:
1.有明显代表性。
2.以_进行分割类似:wang_jian_hui = 20
3.字母开头大写类似:WangJianHui=20
4.数字,特殊符号,关键字符不能作为变量名称。
id(name)查看python内存位置:id(a),id(b)
python用户交互:
python2.x raw_input()
puthon3.x input()
python条件判断与缩进:
if...elif...else...
age=int(input(“please input your age:”))(int声明变量为整数)
a=18
if age==a:
print(“good”)
elif age>a:
print (“your inout age min”)
elif age<a:
print (“your input age max”)
else
print (“input error”)
注意python中强制缩进4个空格,如果不缩进则会报错。通过缩进来使代码可视化更高,用于区分作用域。
python循环控制:
while true:无限循环,true false真假 true代表真,所以输入任何东西都会认为真,会去执行,所以是无限循环。
1 luck_num=20 2 num_count=0 3 num=0 4 while num_count<3: 5 num=int(input("please your luck num:")) 6 if num > luck_num: 7 print("please input num max") 8 elif num < luck_num: 9 print("please input num min") 10 else: 11 print ("Bingo") 12 break 13 num_count +=1 (num_count = num_count+1) 14 else: 15 print("your input count max") 16 思路:定义你的幸运数字,定义输入次数为0,每次执行一次循环加1,定义原始数。进行循环条件判断,如果次数小于3,则执行循环体中条件。如果不满足小于1说明超过次数则执行else条件(注意是while的else)。 17 如果满足while条件,则让用户输入变量,进行第二层判断,如果不满足if定义条件则执行if中else,执行完毕之后跳出循环break,每次执行+1次数。
1 luck_num=20 2 3 num=0 4 for i in range(3): #range()定义循环次数 5 num=int(input("please your luck num:")) 6 if num > luck_num: 7 print("please input num max") 8 elif num < luck_num: 9 print("please input num min") 10 else: 11 print ("Bingo") 12 break 13 else: 14 print("your input count max")
python数据类型:
int(整数型):32位支持-2**31~2**31-1 64位支持-2**63~2**63-1
long(长整数):当整数超过计算机所能支持的位数时python并不会强制规定位数,会将不支持的位数转换成L结尾。type()可以查询类型
float(浮点型):小数点
2.布尔值
true 或 flase 0或1
python字符串改进:
name = input("name:")
age = input("age:")
job = input("job:")
print("name:"+ name +"\nage:"+ age +"\njob:"+job) 万恶的字符串+
print("name:%s\nage:%s\njob:%s "%(name,age,job) )
'''
......
''' (注释:前后三个单引号为注释)
name=input("name:")
age=input("age:")
job=input("job:")
a=''' ##变量名称之后跟'''...'''为段落符
name:%s
name:%s
age:%s
job:%s
'''%(name,name,age,job)
print (a)
%s代表字符
%d代表数字
%f代表浮点
python列表常用操作
a=input(“name:”).strip()
字符串后加.strip() 去除空白,前后空白
列表
name_list=["wang","20","it"]
print name_list[0] wang
help(对象name_list)查看该对象可以使用的操作
列表操作
append追加
count计算
extend扩展
index索引
insert插入
pop删除一个
remove删除指定一个
reverse反转
sort排序
name_list.append(“address”)列表末尾追加数据
name_list.index(“wang”)查看列表对象在该列表中的索引值
name_list.count(“wang”)查看该对象在该列表中的数量
name_list.insert(1,"wang2")在指定索引后面插入指定内容
name_list.pop删除列表中最后一个对象
name_list.remove(“wang”)从列表中删除该对象
name_list.reverse()该列表进行反转
name_list+a 扩展 两个列表相加 a加入name_list之后 name_list.extend(a)
for i in range(name_list.count(“wang”)):统计wang在该列表中的重名数量,赋值给for循环次数,然后for循环执行删除该对象。
name_list.remove(”wang“)
python列表切片:
a=["1","2","A","3","4","5","6","7"]
a[0:1:3:4:5:6] 1234567
a[0:7:2]切片从0切到7之后隔2两个在进行切分
4 in (a) 4是否包涵在a列表中
if 4 in (a)
print (“aaa”)
python元组:
a=(“a”,“b”) 元组与列表区别就是元组是只读的,counnt index只支持 ttype(t)查看类型
list(a)把元组a,转换成列表
tuple(t)把列表转换成元组
python二进制换算
+两对象相加
- 两个对象相减
* 相乘
/ 相除
% 取模,取余数
** 幂平方
// 整除,地板除
> 小于
< 大于
>= 小于等于
<= 大于等于
= 等于
+= 加等于
-= 减等于
*= 乘等于
/= 除等于
== 比较两数是否相等
!= 比较两数是否不相等
%= 取模等于
**= 幂等于
//= 整除等于
python位运算
身份运算符:
a = ["1","2"]
is 判断两个对象是否引用于同一对象 type(a) is list
not is 判断是否取自不同对象 type (a) not is tuple
逻辑运算符
and 与
or 或
not 非
if name == wang and age>=19:and满足第一个条件并且满足(and)第二个条件去执行
print (“good”)
else
print (“ass”)
if name == wang and name == hui: 满足第一个条件或(or)第二个条件就执行
print (“good”)
成员运算符
in 查看该对象是否在列表中
not in 查看该对象不存在与该列表中
name = ["wang1","wang2"]
if wang3 not in name:
print (“not exise”)
python简单的嵌套循环
continue跳过本次循环
for i in range(10):
if i<5:
continue
print (i)
python文件基本操作:
1 file_obj=file(“文件路径”,“文件模式”) 2 file_obj=open(“文件路径”,“文件模式”) 3 r 只读 4 w 只写 5 a 追加 6 w+ 写读 7 8 obj.read()#一次性加载所有内容到内存 9 obj.readlines()#一次性加载所有内容到内存,并根据行分割成字符串 10 for line in obj:#每次读取一行 11 print (line) 12 13 obj.write(‘内容’)#写文件内容 14 15 obj.close() #关闭文件句柄 16 17 f=open("test.txt","w") 18 f.write("wang1\n") 19 f.write("wang2\n") 20 f.write("wang4\n") 21 f.write("wang5\n") 22 f.close()''' 23 ''' 24 f=open("test.txt","r") 25 print (f.read()) 26 f.close()''' 27 ''' 28 f=open("test.txt","r") 29 print(f.readlines()) 30 f.close()''' 31 32 ''' 33 f=open("test.txt","r") 34 print(f.readline()) 35 for line in f: 36 if "4" in line: 37 print ("this is the third line") 38 else: 39 print (line) 40 f.close()''' 41 42 f=open("test.txt","a") 43 f.write("wang6\n") 44 f.write("wang7\n") 45 f.close() 46 f=open("test.txt","r") 47 print(f.read()) 48 f.close()
作业:
作业一:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 ming=["jack","wang","tom"] #定义用户名列表 2 pswd=["123","321","567"] #定义密码列表,与用户名列表索引位置相对应,新添加用户名和密码已追加形式分别追加到两个列表末尾 3 for i in range(3): #循环三次 4 name = input("please your name:") #输入用户名。 5 if name in (ming):#查看是否存在于用户列表中 6 weizhi=ming.index(name) #查看用户名在列表中的索引 7 psd = input("please your psd:") #让用户输入密码 8 if psd == pswd[weizhi] : #判断用户名和密码是否相等,通过用户名和密码存入的索引位置 9 print ("login") #提示语 10 break #跳出循环结束本次登陆 11 else: 12 print("password input error") #如果当上方密码输入错误则进行提示并重新输入。 13 else: 14 print ("input username error") #上方进行用户名是否存在用户文件中,如果不存在进行提示。 15 else: 16 print("input count max") #输入次数超过定义次数。
作业二:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #定义字典 2 memu = { 3 "东北":{ 4 "吉林省":{ 5 "吉林市":['吉林市1','吉林市2'], 6 "长春":['长春1','长春2'],}, 7 "辽宁省":{ 8 "沈阳":['沈阳1','沈阳2','沈阳3'], 9 "大连":['大连1','大连2'], 10 }, 11 }, 12 '华北':{ 13 '河北省':{ 14 '廊坊':['廊坊1','廊坊2'], 15 '保定':['保定1','保定2'], 16 }, 17 '内蒙古':{ 18 '呼和浩特':['呼和浩特1','呼和浩特2','呼和浩特3'], 19 '包头':['包头1','包头2'] 20 }, 21 22 }, 23 } 24 #定义循环值,true为真永久循环,false为假不循环。用于及时进行循环控制 25 flag = True 26 while flag: # 全局变量,设置跳出整个循环 27 for i,v in enumerate(memu.keys()): #遍历第一层字典 28 print (i,v) #打印出第一层key,value 29 add = input("Please select the target number /q quit /b return:")#提取用于键盘输入值 30 if add == 'q':#定义退出条件,当用户输入是q时结束程序 31 flag = False#定义循环条件,false为假,结束循环 32 break#跳出当前循环 33 ada = int(add)#定义用户输入值为整数。 34 #elif ype(add) is int: 35 count =int(len(memu))#查询字典key的数量 36 if int(count >= ada ):#用户进行比较,当输入的小于字典key时进行输出 37 for i1,v1 in enumerate(memu.keys()):#将输出内容赋值给两个变量,进行循环输出 38 if ada == i1 :#当用户输入的值等于字典中某个key时 39 add1= v1#将key的value值赋予给一个变量 40 while flag:#定义循环,这里在定义循环是方便于用户可以返回上一层菜单,再次进行输入。 41 for i2,v2 in enumerate(memu[add1]): 42 print(i2,v2)#打印出用户需要的信息 43 44 add2 = input("Please select the target number /q quit /b return:")#提取用户键盘值 45 if add2 == 'q':#进行判断 46 flag = False#将无限循环条件进行更改。 47 break#跳出整个循环 48 if add2 == 'b':#进行判断是否为b 49 break#break跳出本循环,需注意程序定义了多层无限循环,结束本次循环会返回上层继续循环以达到可以返回上层的目的 50 count1 = (len(memu[add1]))#定义用户需查找范围内key值得数量 51 ada1 = int(add2)#定义查找条件 52 if count1 >= ada1:#进行对比判断 53 for i2,v2 in enumerate(memu[add1]):#将结果赋值给两个量 54 if ada1 == i2: 55 add2 = v2#进行条件匹配然后赋值 56 while flag:#定义第三层无限循环 57 for i3,v3 in enumerate(memu[add1][add2]):#将需要内容进行显示 58 print(i3,v3) 59 60 add3 = input("Please select the target number :/q quit /b return:").strip()#提取用户输入值 61 if add3 == 'q':#判断 62 flag = flase 63 break 64 if add3 == 'b': 65 break 66 ada2 = int(add3) 67 count2 = (len(memu[add1][add2]))#定义条件 68 if count2 >= ada2:#判断 69 for i3,v3 in enumerate(memu[add1][add2]):#赋值 70 if ada2 == i3: 71 add3 = v3 72 print(memu[add1][add2][add3])#进行三级菜单显示 73 while flag: 74 end = input("/q quit /b return:") 75 if end == 'q': 76 flag = False 77 break 78 elif end == 'b': 79 break 80 else: 81 print ("input error") 82 83 84 # for i4,v4,e4 in (memu[add1][add2][add3]): 85 # print(i4,v4,e4) 86 # flag = flase 87 # break 88 ''' 89 else: 90 print("input error") 91 92 else: 93 print("input error") 94 else: 95 print("input error") 96 '''