Python基本语法
1 循环语句 1.1 for循环 1 2 3 4 5 6 7 8 9 10 for i in range (5 ): print (i) ''' 结果: 0 1 2 3 4 '''
1 2 3 4 5 6 7 8 9 for i in range (0 , 10 , 3 ): print (i) ''' 结果: 0 3 6 9 '''
除了数字,还可以遍历字符串
1 2 3 4 5 6 7 name = "chongqing" for x in name: print (x, end="\t" ) ''' 结果: c h o n g q i n g '''
可以遍历数组,在之后会经常使用到这个功能
1 2 3 4 5 6 7 8 9 10 a = ["aa" , "bb" , "cc" , "dd" ] for i in range (len (a)): print (i, a[i]) ''' 结果: 0 aa 1 bb 2 cc 3 dd '''
1.2 while循环 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 i = 0 while i < 5 : print ("当前是第%d次执行循环" % (i+1 )) print ("i=%d" % i) i += 1 ''' 结果: 当前是第1次执行循环 i=0 当前是第2次执行循环 i=1 当前是第3次执行循环 i=2 当前是第4次执行循环 i=3 当前是第5次执行循环 i=4 '''
例:求1-100的和
1 2 3 4 5 6 7 n = 100 Sum = 0 counter = 1 while counter <= n: Sum = Sum + counter counter += 1 print ("1 到 %d 的和为:%d" % (n, Sum))
while配合else使用
1 2 3 4 5 6 count = 0 while count < 5 : print (count, "小于5" ) count += 1 else : print (count, "大于等于5" )
1.3 break和continue
break语句可以跳出for 和while 的循环体
continue语句可以跳出当前循环,直接进行下一循环
pass是空语句,一般用作占位符,不做任何事
1 2 3 4 5 6 7 i = 0 while i < 10 : i = i + 1 print ("-" *30 ) if i == 5 : break print (i)
1 2 3 4 5 6 7 i = 0 while i < 10 : i = i + 1 print ("-" *30 ) if i == 5 : continue print (i)
2 字符串、列表、元组、字典 2.1 字符串
python中的字符串可以使用单引号、双引号 和三引号 括起来,使用反斜杠“\”转义特殊字符
python3源码文件默认以UTF-8编码,所有字符串都是unicode字符串
支持字符串拼接、截取等多种运算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 word = '字符串' sentence = "这是一个句子" paragraph = """ 这是一个段落 可以由多行组成 """ print (word)print (sentence)print (paragraph)''' 结果: 字符串 这是一个句子 这是一个段落 可以有多行组成 '''
1 2 3 my_str = "I'm a student" my_str = 'I\'m a student' print (my_str)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 city = "chongqing" print (city)print (city[0 :6 ]) print (city[1 :7 :2 ]) print (city[5 :])print (city[:5 ])print (city + ",hello!" ) print (city*3 )''' 结果: chongqing chongq hnq qing chong chongqing,hello! chongqingchongqingchongqing '''
1 2 3 4 5 6 7 8 9 print ("hello\nchongqing" )print (r"hello\nchongqing" ) ''' 结果: hello chongqing hello\nchongqing '''
2.2 列表
列表可以完成大多数集合类的数据结构实现。列表中的元素类型可以不相同,支持数字,字符串甚至可以包含列表(所谓嵌套)
列表是写在方括号[]之间、用逗号分隔开的元素列表
列表索引值以0为开始值,-1为末尾的开始位置
列表可以使用+操作符进行拼接,使用*表示重复
1 2 nameList = ["Jack" , "Mike" , "Tony" , "Tom" ] print (nameList[2 ])
列表内可以存在不同数据类型的元素,照样也可以打印出来
1 2 3 4 5 6 7 8 9 10 testList = [0 , "张三" , 12.35 ] print (testList[0 ])print (testList[1 ])print (testList[2 ])''' 结果: 0 张三 12.35 '''
2.2.1 增
append:在末尾增加一个元素
extend:将元素逐一追加到末尾
insert:指定下标位置插入元素
1 2 3 4 5 6 nameList = ["Jack" , "Mike" , "Tony" , "Tom" ] nameList.append(input ("请输入添加学生的姓名:" )) for name in nameList: print (name)
1 2 3 4 5 6 7 8 a = [1 , 2 ] b = [3 , 4 ] a.append(b) print (a)''' 结果: [1, 2, [3, 4]] '''
1 2 3 4 5 6 7 8 a = [1 , 2 ] b = [3 , 4 ] a.extend(b) print (a)''' 结果: [1, 2, 3, 4] '''
1 2 3 4 5 6 7 a = [0 , 1 , 2 ] a.insert(1 , 3 ) print (a)''' 结果: [0, 3, 1, 2] '''
2.2.2 删
del :在指定位置删除一个元素
pop:弹出末尾最后一个元素
1 2 3 4 5 6 7 8 movieName = ["哈利波特" , "指环王" , "霍比特人" , "加勒比海盗" , "钢铁侠" ] del movieName[2 ] print (movieName)''' 结果: ['哈利波特', '指环王', '加勒比海盗', '钢铁侠'] '''
1 2 3 4 5 6 7 8 movieName = ["哈利波特" , "指环王" , "霍比特人" , "加勒比海盗" , "钢铁侠" ] movieName.pop() print (movieName)''' 结果: ['哈利波特', '指环王', '霍比特人', '加勒比海盗'] '''
1 2 3 4 5 movieName = ["哈利波特" , "指环王" , "霍比特人" , "加勒比海盗" , "钢铁侠" ] movieName.remove("加勒比海盗" ) print (movieName)
注:在使用remove时,列表中可以出现重复的数据,而remove只会删除第一个出现的指定元素
2.2.3 改 直接指定要修改的内容就可以
1 2 3 4 5 6 7 8 nameList = ["Jack" , "Mike" , "Tony" , "Tom" ] nameList[1 ] = "Jerry" print (nameList)''' 结果: ['Jack', 'Jerry', 'Tony', 'Tom'] '''
2.2.4 查
1 2 3 4 5 6 findName = input ("请输入要查找的学生姓名:" ) if findName in nameList: print ("找到!" ) else : print ("没找到!" )
1 2 3 4 5 6 7 a = ["a" , "b" , "c" , "a" , "b" ] print (a.index("a" , 1 , 4 )) ''' 结果: 3 '''
注:范围区间为左闭右开,例如当下标范围是[1, 3]时,是查不出“a”元素的
1 2 3 a = ["a" , "b" , "c" , "a" , "b" ] print (a.count("b" ))
2.2.5 排序 1 2 3 4 5 6 7 8 9 10 a = [1 , 5 , 6 , 3 , 0 , 7 , 2 , 8 ] a.sort() print (a)a.sort(reverse=True ) print (a)''' 结果: [0, 1, 2, 3, 5, 6, 7, 8] [8, 7, 6, 5, 3, 2, 1, 0] '''
2.2.6 反转 1 2 3 4 5 6 7 a = [1 , 5 , 6 , 3 , 0 , 7 , 2 , 8 ] a.reverse() print (a)''' 结果: [8, 2, 7, 0, 3, 6, 5, 1] '''
2.2.7 二维数组 1 2 3 schoolNames = [["清华大学" , "北京大学" ], ["上海交通大学" , "复旦大学" , "华东师范大学" ], ["华南理工大学" , "华南师范大学" , "深圳大学" ]] print (schoolNames[1 ][2 ])
例:一共有三间空的办公室,有八个人,将这八个人随机分配到这三间空的办公室中,每间办公室人数不限。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 import randomoffices = [[], [], []] names = ["A" , "B" , "C" , "D" , "E" , "F" , "G" , "H" ] for name in names: index = random.randint(0 , 2 ) offices[index].append(name) i = 1 for office in offices: print ("办公室%d的人数:%d" % (i, len (office))) i += 1 for name in office: print ("%s" % name, end="\t" ) print ("\n" ) print ("-" *20 ) ''' 结果: 办公室1的人数:3 A C H -------------------- 办公室2的人数:4 B D F G -------------------- 办公室3的人数:1 E -------------------- '''
2.3 元组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 tup1 = () print (type (tup1))tup2 = (50 ) print (type (tup2))tup3 = (50 ,) print (type (tup3))''' 结果: <class 'tuple'> <class 'int'> <class 'tuple'> '''
1 2 3 4 5 6 7 8 9 10 11 tup1 = ("abc" , "def" , 123 , 456 , 789 , 1111 ) print (tup1[0 ])print (tup1[-1 ]) print (tup1[1 :5 ]) ''' 结果: abc 1111 ('def', 123, 456, 789) '''
2.3.1 增(连接) 1 2 3 4 5 tup1 = (12 , 34 , 56 ) tup2 = ("abc" , "def" ) tup = tup1 + tup2 print (tup)
2.4 字典
字典是无序的对象集合,使用键-值(key-value)存储,具有极快的查找速度。
键(key)必须使用不可变类型。
同一个字典中,键(key)必须是唯一的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 info = {"name" : "张三" , "age" : 18 } print (info["name" ])print (info["age" ])print (info.get("gender" )) print (info.get("gender" , "m" )) ''' 结果: 张三 18 None m '''
2.4.1 增 1 2 3 4 info = {"name" : "张三" , "age" : 18 } info["id" ] = input ("请输入新的学号:" ) print (info["id" ])
2.4.2 删 在删除指定键值对后,再次访问的话会报错
1 2 3 info = {"name" : "张三" , "age" : 18 } del info["name" ]print (info["age" ])
1 2 3 info = {"name" : "张三" , "age" : 18 } info.clear() print (info)
2.4.3 改 1 2 3 info = {"name" : "张三" , "age" : 18 } info["age" ] = 20 print (info["age" ])
2.4.4 查 1 2 3 4 5 6 7 8 9 10 info = {"id" : "1" , "name" : "张三" , "age" : 18 } print (info.keys()) print (info.values()) print (info.items()) ''' 结果: dict_keys(['id', 'name', 'age']) dict_values(['1', '张三', 18]) dict_items([('id', '1'), ('name', '张三'), ('age', 18)]) '''
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 info = {"id" : "1" , "name" : "张三" , "age" : 18 } for key in info.keys(): print (key) print ("-" *20 )for value in info.values(): print (value) print ("-" *20 )for key, value in info.items(): print ("key=%s, value=%s" % (key, value)) ''' 结果: id name age -------------------- 1 张三 18 -------------------- key=id, value=1 key=name, value=张三 key=age, value=18 '''
1 2 3 4 5 6 7 8 9 10 11 12 myList = ["a" , "b" , "c" , "d" ] for i, x in enumerate (myList): print (i+1 , x) ''' 结果: 1 a 2 b 3 c 4 d '''
2.5 集合
set与dict类似,也是一组key的集合,但是不存储value。由于key不能重复,所以在set中,没有重复的key。
set是无序的,重复元素在set中自动被过滤
2.6 小结
是否有序
是否可变类型
列表[ ]
有序
可变类型
元组( )
有序
不可变类型
字典{ }
无序
key不可变,value可变
集合{ }
无序
可变类型(不重复)