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年推出。 python官方表示python2.7将会是最好的一个2x版本,之后不会更新2x。并建议python尽快升级到3x。时间2020年。
(1)2.x print ** 3.x print(**) 2.7两种都可以。 (2)3.x某些模块进行改名 _改为. 大多数改成小写。 (3)3.x不支持Twisted模块,正在支持。 (4)3.x2/1=0.5 (5)3.x raw_input改成input (6)3.x class Foo:改成class Foo()
print ("hello word") print (\n"hello word2") \n代表换行 linux下运行python声明解释器路径: 1.#!/usr/bin/python3 2.#!/usr/bin/env 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重新赋值则会将之前的路径回收,产生新的路径。
1.有明显代表性。 2.以_进行分割类似:wang_jian_hui = 20 3.字母开头大写类似:WangJianHui=20 4.数字,特殊符号,关键字符不能作为变量名称。 id(name)查看python内存位置:id(a),id(b)
python2.x raw_input()
puthon3.x input()
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个空格,如果不缩进则会报错。通过缩进来使代码可视化更高,用于区分作用域。
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")
int(整数型):32位支持-2**31~2**31-1 64位支持-2**63~2**63-1 long(长整数):当整数超过计算机所能支持的位数时python并不会强制规定位数,会将不支持的位数转换成L结尾。type()可以查询类型 float(浮点型):小数点 2.布尔值 true 或 flase 0或1
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代表浮点
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)把列表转换成元组
+两对象相加 - 两个对象相减 * 相乘 / 相除 % 取模,取余数 ** 幂平方 // 整除,地板除 > 小于 < 大于 >= 小于等于 <= 大于等于 = 等于 += 加等于 -= 减等于 *= 乘等于 /= 除等于 == 比较两数是否相等 != 比较两数是否不相等 %= 取模等于 **= 幂等于 //= 整除等于
身份运算符: 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)
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()
作业一:
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") #输入次数超过定义次数。
作业二:
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 '''