1、Python 入门之一,王海峰,主要内容,介绍并总结Python语言中的数据类型 介绍并练习Python语言中的流程控制语句的基本使用和实例 讨论一个完整实际问题的设计、编程。,数据类型,基本数据类型:字符串,整数,浮点数,布尔型,复数 t = 7 # t 为数值型变量 t = “hello” # t 为字符串变量 t = 1+2j # t 为复数型变量 t = True # t 为布尔型变量,集合类型:list, tuple, dictionary 列表,元组,字典 t = 1,2,3,4,5 #t 为列表型变量 t = (1,2,3,4,5) # t 为元组型变量 t = name:Jac
2、k, age: 20,问题1:既生list,何生tuple,共同之处:两者都是装数据的容器,而且这种容器不挑食,可以装各种类型的数据,完全是个大杂烩!,问题1:既生list,何生tuple,不共同之处:list可以排序,可能改变内容,但是元组比较憨厚老实,不能随意改变。 例如: t = 2,10,8,1,0,12,32 t.sort() t 0, 1, 2, 8, 10, 12, 32,元组和列表的互换,例如: t = (cc,aa,ab,dd,bb) t.sort()Traceback (most recent call last):File “, line 1, in t.sort() A
3、ttributeError: tuple object has no attribute sort, tmp = list(t) tmp cc, aa, ab, dd, bb tmp.sort() tmp aa, ab, bb, cc, dd t = tuple(tmp) t (aa, ab, bb, cc, dd),问题2:为什么有奇怪的字典型,字典: 一对怪异的花括号 其中每一项是一对 key:value,用C语言如何表示一个学生的信息? 姓名,年龄,专业,身高,, t = name:wanghai, age:37, major:computer, height:175.5 t.get(n
4、ame) wanghai t.get(height) 175.5,文件:是一种特殊的数据类型。 建立一个文本文件,例如data.txt hello Python I am a teacher You are students,读文件, f = open(data.txt, r) s = f.read() s hello PythonnI am a teachernYou are studentsn,思考题:为什么是空字符串?, f = open(data.txt, r) s = f.read() s hello PythonnI am a teachernYou are studentsn s
5、 = f.readline() s ,读文件中的一行, f = open(data.txt, r) s = f.readline() s hello Pythonn, s = f.readline() s hello Pythonn s = f.readline() s I am a teachern s = f.readline() s You are studentsn s = f.readline() s ,写文件, str = hello python f.write(str)Traceback (most recent call last):File “, line 1, in f.
6、write(str) IOError: File not open for writing, f = open(data.txt, w) f.write(str)观察结果: data.txt 文件内容是空的,为什么?, f = open(data.txt, w) f.write(str) f.flush() flush()刷新一下输出缓冲区,结果才有 hello python,课堂思考题,如何做到不覆盖原来的文件内容,并且增加新的内容?你通过查找资料的方式,或者猜测的方式能否完成呢?,控制流程,回忆上次课的练习:从0-20中,剔除掉3,7,15,17后显示在屏幕上。, for i in 0,1
7、,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20:if i not in 3,7,15,17:print i,for i in range(0,21):if i not in 3,7,15,17: print i,Control in Action,For ,while,if, elif 别忘记每个关键句后面的“冒号”; Tab对齐是区分的唯一标识; 不熟悉的流程控制语句,学会查帮助,看例子,迅速的学习掌握用法。,一个例题,截获一批电子邮件,分析其中可能是黑客攻击信息的联络邮件,假设这批文件有2000个的规模,尝试编程解决?,一个简单的数学模型
8、,算法设计,1. 打开一个文件; 2. 读文件中的一行字符串,直到读完所有 行: 3. 将这一行字符串分解成单词的集合; 4. 遍历这个单词集合,发现有敏感词: 5. 敏感词计数变量+1; 单词总数变量+1; 跳回(2)继续循环,几个技术问题,打开文本文件,读一行数据; 如何针对一行字符串,分解成单词? 如何判断是否在敏感词集合中。,技术问题1, f = open(data.txt,r) s = f.readlines() s hello python hasn,技术问题2, s hello python hasn s.split( ) hello, python, hasn,f = open
9、(data.txt,r) # 打开文件 sensitiveWords = 0 # 敏感词计数变量 totalWords = 0 # 单词总数变量 lines = f.readlines() # 将文件所有行读到一个list中 for line in lines:line = line.split( ) # 每一行分解成单词for str in line:if str in attack,worms,spams: #是否在敏感sensitiveWords += 1totalWords += 1 print sensitiveWords/totalWords f.close(),执行结果,Data.txt文件内容如下: hello python has attack the whitehouse worms and spams I love china I hate Japanese = RESTART = 0,课后作业,结果为什么是0? 程序中数学模型、算法、编程中哪里存成问题? 找到问题后,如何解决? 本周实验课中检查该作业 ,计入平时成绩。,