上海交通大学 python程序设计课程 Ch8-1
ch8数据库系统概念(第6版)第八章关系数据库设计
11
目标
决定特定的关系 R 是否有一个 “良好” 形式. 如果 R 不具有 “良好” 形式, 将其分解为关系集 {R1, R2, ..., Rn}, 满足 每个关系都有良好形式 该分解是无损连接分解 理论基于数据依赖: 函数依赖 多值依赖 连接依赖
数据依赖
属性之间的联系是属性间的相互依赖又相互制约的 关系, 这种关系称为数据依赖。 数据依赖:
中:
R = R1 R2
无损连接分解 对模式R上的所有可能的关系r r = R1 (r) R2 (r)
10
关系数据库设计中易犯的错误
关系数据库设计要求找到一个合理关系模式集合 . 一个不合理模式可能导致
信息的重复 某些信息不能表示
设计目标:
避免冗余数据 确保属性间联系得以表示 方便检查更新是否破坏了数据库完整性约束
building, room_number)
不会产生重复
有损分解
分解R = (A, B) R1 = (A)
A B A
R2 = (B)
B 1 2 B(r)
r
1 2 1
A(r) A B 1 2 1 2
A (r)
B (r)
7
有损分解 例
假设我们从 inst_dept 着手. 如何将它分开 (分解) 成为 instructor 和 department? 定一个规则 “如果存在模式 (dept_name, building, budget), 则 dept_name 会成为候选码” 表示为 函数依赖: dept_name building, budget 在 inst_dept 中, 由于 dept_name 不是候选码, 故一个部 门的大楼和预算可能会出现重复. 由此说明需要分解 inst_dept 不是怎样分解都合适. 假设我们把 employee(ID, name, street, city, salary) 分解为 employee1 (ID, name) employee2 (name, street, city, salary) 下个幻灯片会说明这将丢失信息 -- 无法重构原始的 employee 关系 -- 故这是一个 有损分解.
上海交通大学 python程序设计课程PPT Ch2
字符串操作:连接
• 两字符串的连接
<string1> + <string2> – 例如:"Hello" + "Bob"得到"HelloBob"
• 一个字符串的重复
– 例如:3*"Hi"和"Hi"*3都得到"HiHiHi"
• 子串检测
– 例如:"ok" in "cook"返回True(见后)
• 串长度函数len()
列表操作(3)
• 索引和子列表操作都和字符串相似 • 列表也有+和*操作,意义和字符串类似
>>> [1,3,5]+[2,4] [1,3,5,2,4] >>> 4*[0] [0,0,0,0]
>>> 1.2 – 1.0 0.19999999999999996 >>> 2.2 – 1.2 1.0000000000000002 >>> 2.0 – 1.0 1.0
• 科学记数法:Python自动用来表示很大或很小 的浮点数. • 如何进行精确的财务计算?
类型转换
• 在混合类型表达式中,Python自动转换: int long float • 人工转换:利用int(), long(), float()
• 国际化:希望程序中显示中文信息 • 中文Windows的缺省编码是GBK
>>>'汉' \xba\xba 输入'汉'即输入其GBK编码 >>>print '\xba\xba' 或用'汉' 汉 print语句能正确解码GBK >>>print '\xba\xba\xc4' 不能解码!
上海交大面向对象程序设计C课件第7、8章
类对象作为成员实例
#include <iostream.h>
#include <string.h>
class girl { char name[10]; int age;
public:girl(char *n, int d) {strcpy(name,n); age=d;}
void disp() {cout<<name<<" "<<age<<" \n";} };
class A { int x;
public: A(int i) {x=i;} int getx() const { x =7; //错误,修改了数据成员x return x;}
};
const的其他用法
• 如果以“指针传递〞方式的函数返回值加 const修饰,那么函数返回值的内容不能被修 改,该返回值只能被赋值给加const修饰的同 类型指针。
void main()
{ A a1, a2(12), a3(1,3); //或者:A a1,a2=12,a3(1,3);
B b1, b2(789, 111, 333);}
执行结果
A... x=0 y=0 A... x=12 y=0 A... x=1 y=3 A... x=0 y=0 B... x=0 A:x=0 y=0 A... x=111 y=333 B... x=789 A:x=111 y=333
• A a(100); //对象a的SIZE的值为100
• A b(200); //对象b的SIZE的值为200
const对象与const成员
• 常量定义 • 常量对象 • 常量成员 • 整个类的常量 • const的其他用法
上海交通大学数据结构与C语言程序设计习题及答案
专业课复习资料(最新版)封面数据结构与C语言程序设计一. 是非题(2’⨯10)( )1、 队列逻辑上是一个表头和表尾既能插入又能删除的线性表。
( )2、 任何一个递归过程都可以转换成非递归过程。
( )3、 与n个键值的集合{k1,k2,…,kn}相对应的堆是唯一的。
( )4、 在索引顺序表上实现分块查找,在等概率查找情况下,其查找长度只与表中元素个数有关,而与每块中元素个数无关。
( )5、 所谓加权无向图G的最小生成树T就是将G中各结点间的最短路径作为边所构造出来的G的子图。
( )6、 在10万个随机排列的数据中,要选出5个最小的数,采用快速排序比采用Shell排序、堆排序及各种直接排序法都快。
( )7、 B树查找算法的时间复杂性为O(n)。
( )8、 哈希表查找无需进行关键字的比较。
( )9、 在执行某个排序过程中,出现排序码朝着最终位置相反方向移动,则该算法是不稳定的。
( )10、任何有向图的顶点都可以按拓扑序排序。
二.填空题(2’⨯6)1.假设用于通信的电文由8个字母组成,其频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10, 为这8个字母设计哈夫曼编码,其中编码长度最大的字母的编码是 位。
2.已知二叉树按中序遍历所得到的结点序列为DCBGEAHFIJK, 按后序遍历所得到的结点序列为DCEGBFHKJIA, 按先序遍历所得到的结点序列为 。
3. 设哈希表长度为11,散列函数H(k)=k MOD 11, 若输入顺序为(18,10,21,9,6,3,16,25,7),处理冲突方法为线性探测再散列,请构造哈希表 。
果 。
5.已知模式匹配的KMP算法中模式串t=’adabbadada’,其next函数的值为 。
6.在置换-选择排序中,假设工作区的容量为w,若不计输入、输出的时间,则对n个记录的文件而言,生成所有初始归并段所需时间为 。
三.简答题(6’⨯5)1.有n个不同的英文单词,它们的长度相等,均为m,若n>>50,m<5,试问采用什么排序方法时间复杂度最佳?为什么?2.对于一个栈,给出输入序列A,B,C,试给出全部可能的输出序列。
python课件Chapter01-ch
控制器中的信息存储
• 控制器中有两个寄存器:
–指令寄存器( IR ):保存当前正 在执行的指令
–程序计数器 ( PC ):保存下一
条要执行的指令地址
控制器的工作
• 取下一条指令:按PC指定的地址到 内存中取出下一条指令,存入IR。 • 解码指令:将指令解码成一系列的 控制信号
• 执行指令:将控制信号发送给相关 部件,执行相应的运算
何为计算思维?
• 人们在解决不同问题时有不同的思 考方式
– 数学思维:解数学问题 – 工程思维:工程设计 – 形象思维:创作诗词 – ......
• 计算思维建立在由计算机执行的计 算过程的能力和局限之上. • 由于计算机的广泛应用,计算思维 应当成为人们的基本能力.
– 与阅读,书写,算术能力一样!
39
程序的控制流
• 程序的诸语句通常是 顺序执行的,但循环语 句改变了控制流,表示 一种控制结构. • 控制流可以用流程图 直观表达
<var>取<seq> 的下一个值
无
有 <body>
40
模块的执行
• 在IDLE中执行程序
–打开文件:在file菜单下选open或直接用右键 点击文件,并选择用IDLE打开 –执行:在run菜单下选run module或直接按f5
32
初识Python
• >>> 提示符,提示你可以输入命令
• 语句:一条命令,如print “hello”
• 串:“hello world” • 数:3、10、0.5
• 表达式:3 + 5
• 赋值:x = 5
33
函数
• 函数:将完成某一功能的语句组合起来
上海交通大学python期末考试样题加解析
一、选择题: 将唯一正确的选项写在题前括号中.每题2分.【】(1) 本课程的目标定位是什么?[A] 学习Python语言[B] 学习计算机的工作原理[C] 学习各种算法[D] 学习用计算机解决问题【】(2) 下列哪个标识符是合法的?[A] var-name [B] !@#$% [C] _100 [D] elif 【】(3) 执行下列语句后的显示结果是什么?>>> s = ”hi”>>> print “hi”, 2*s[A] hihihi [B] ”hi”hihi[C] hi hihi [D] hi hi hi 【】(4) 如何解释下面的执行结果?>>> print 1.2 - 1.0 == 0.2False[A] Python的实现有错误[B] 浮点数无法精确表示[C] 布尔运算不能用于浮点数比较[D] Python将非0数视为False【】(5) 想用一个变量来表示出生年份,下列命名中哪个最可取?[A] b_y [B] birth_year [C] __birthYear__ [D] birthyear【】(6) 执行下列语句后的显示结果是什么?>>> a = 1>>> b = 2 * a / 4>>> a = “one”>>> print a,b[A] one 0 [B] 1 0 [C] one 0.5 [D] one,0.5【】(7) 执行下列语句后的显示结果是什么?>>> s = ”GOOD MORNING”>>> print s[3:-4][A] D MOR [B] D MORN [C] OD MOR [D] OD MORN【】(8) 表达式1+2L*3.14>0的结果类型是:[A] int [B] long [C] float [D] bool【】(9) 程序设计的原型(Prototyping)方法是指:[A] 先设计程序框架结构,再逐步精化细节[B] 先设计类,再实例化为对象[C] 先设计简单版本,再逐步增加功能[D] 以上都不是【】(10) 对n个数做归并排序(merge sort),这个算法是:[A] log n时间的[B] 线性时间的[C] n log n时间的[D] n2时间的二、判断题:在题目前面的括号中打勾或叉.每题2分.【】(1) 高级语言程序要被机器执行,只有用解释器来解释执行.【】(2) 不同类型的数据不能相互运算.【】(3) 由于引号表示字符串的开始和结束,所以字符串本身不能包含引号. 【】(4) 计算机科学并非研究计算机的科学,正如天文学并非研究望远镜. 【】(5) 算法和程序是不同的概念.【】(6) 下面的程序段是错的:temp = 42print "The temperature is" + temp【】(7) 同一Python变量可以先后赋予不同类型的值.【】(8) 计算机的计算是确定的,因此并不能真正产生随机数.【】(9) 对象就是类的实例.【】(10) Hanoi塔问题属于不可解问题.三、填空题:每题2分.A 卷总 5 页第 2 页(1) 表达式2**3*4%5的值为: .(2) 函数range(1,1,1)的值是: .(3) 格式化输出浮点数: 宽度10,2位小数,左对齐,则格式串为: .(4) 表达式chr(ord(‘a’))的值为: .(5) 表达式((2>=2) or (2<2)) and 2的值为: .(6) 无穷循环while True:的循环体中可用语句退出循环.(7) 不用math模块中的sqrt(), 如何计算4的平方根: .(8) 给出一个计算机本质上不可解问题的例子: .(9) 表达式‘%d%%%d’%(1%2,3%4)的值为: .(10) Python的标准随机数生成器模块是: .四、读程序并回答问题:每题5分.(1) 下面的程序根据用户输入的三个边长a,b,c来计算三角形面积.请找出程序中的错误并改正之.(设用户输入合法,面积公式无误)import matha, b, c = raw_input(“Enter a,b,c: ”)s = a + b + cs = s / 2.0area = sqrt(s*(s-a)*(s-b)*(s-c))print “The area is:”, area将raw_input 改成input将sqrt改成math.sqrt(2) 下面的程序要求用户输入二进制数字0/1并显示之.找出程序中的错误并改正之. bit = input(“Enter a binary digit: “)if bit = 0 or 1:print “Your input is:”, bitelseprint “Your input is invalid.”将bit = 0 or 1 改成bit == 0 or bit== 1将else改成else:(3) 下面程序的输出是什么?A 卷总 5 页第 3 页def f(a, b, c):x = y = 0for i in range(c):x = x + a + yy = y + breturn xprint f(-5, 2, 10)注意return x 在for 的缩进里面,所以最后只有一个数据输出range(10)其实是从0开始计数到9再不断迭代即可40(4) 下面程序的输出是什么?def f(a,b):a = 4print a, bdef main():a = 5b = 6print a, bf(a,b)print a, bmain()564656(5) 下面程序的功能是什么?def f(a, b):if b == 0:print aelse:f(b, a%b)a, b = input(“Enter two natural numbers: ”)print f(a, b)求最大公因式A 卷总 5 页第 4 页五、程序设计:15分.(1) 用分而治之(divide and conquer)和递归方法设计程序:产生并打印一个序列的全排列.例如,序列[1,2,3]的全排列123,132,213,231,312,321可以这样获得:1为前缀, 后接[2,3]的全排列2为前缀, 后接[1,3]的全排列3为前缀, 后接[1,2]的全排列而[2,3]等序列的全排列依此类推.下面给出了这个程序的部分代码,在理解上述算法的基础上补足所缺的代码.# 函数perm(list,k,m):产生前缀为list[0:k]后接list[k:m+1]的全排列def perm(list,k,m):if k == m:print list[i],printelse:list[k],list[i] = list[i],list[k]list[k],list[i] = list[i],list[k]myList = input(“Input a list([1,2,3,...]): “)(2) 编写程序: 输入一个文件A, A中每行包含若干数值.生成文件B, B中每行是A中对应行的数值的平均值.Import stringfileA = raw_input(“Enter a data file: ”)infile = open(fileA,’r’)outfile = open (‘B.dat’,’w’)line = infile.readline()while line != “”:sum = 0.0count = 0for xStr in string.split(line):sum = sum + eval(xStr)count = count + 1.avg = sum/countoutfile.write(str(avg)+’n’)line = infile.readline()infile.close()outfile.close()。
上交大《Python程序设计实用教程》教学资源 教学课件 模块1
交互式有两种启动和运行方法。 (1)启动Windows操作系统命令行工具(<Windows系统安装目录>\system32 \cmd.exe),在控制台中输入“python”并按Enter键,在命令提示符>>>后输入 如下程序代码: print("Hello World") 按Enter键后显示输出结果“Hello World”,如图1-6所示。在>>>提示符后输入 exit()或者quit()并按Enter键可以退出Python运行环境。
境
1.3 使用IDLE编写第一个
Python程序
1.4 实训
Part one
1.1 初识Python
1.1.1 Python简介
Python是一种面向对象的解释型计算机程序设计语言 ,由荷兰人Guido van Rossum于1989年发明,第一 个公开发行版发行于1991年。Python是纯粹的自由软 件,源代码和解释器CPython遵循GPL(GNU General Public License)协议。Python语法简洁清 晰,特色之一是强制用空白符(white space)作为语 句缩进。Python具有丰富和强大的库。它常被称为“ 胶水语言”,能够把用其他语言(尤其是C/C++)制 作的各种模块很轻松地连接在一起。
1.2.1 安装Python
(5)安装完 成,弹出 “Setup was successful” 界面(见图15),单击 Close按钮完 成安装。
Python安装包将 在系统中安装一 批与Python开发 和运行相关的程 序,其中最重要 的两个是Python 命令行和Python 集成开发环境 IDLE。
Python 教程 chapter1
模块(脚本)文件 注释 变量与赋值 程序模拟物理现象: chaos程序
28
End
29
9
计算思维的例子
问题抽象, 表示, 建模 问题难度与机器的能力 问题解决的效率, 近似解, 失误率… 变难为易: 分解, 约简, 嵌入, 转换, 模拟 递归地思考 并行处理 类型检查 程序美学, 系统设计的简洁与优雅
10
计算思维的例子(续)
模块化 预取和缓存
– 图像缓存
14
计算机与程序
问题的提出
当今时代,计算机几乎无处不在:
– 企业管理 – 产品设计 – 气象预报 – 电影制作 – 工业控制 – 游戏, 写文章, 上网, ……
问题:计算机究竟是什么?怎么能做这么 多不同的事情?
16
通用计算机
计算机是具有如下特征的机器:
– 能够存储和处理信息
输入处理输出
– 既要具备大视野 – 又要关注细枝末节
为何学程序设计?
– 做计算机的主人 – 乐趣 – 培养问题求解能力
18
什么是计算机科学?
并非研究计算机!
– 正如天文学不是研究望远镜的. – EWD
CS要回答的基本问题: 什么是可计算的? 对此问题的回答有三种方式:
– 实际设计一个解决问题的算法 – 理论分析问题的可解性
程序设计思想与方法
董笑菊
电子信息与电气工程学院 计算机科学与工程系
教师信息
办公地点:电院楼群3号楼327室 电话:34205060转602 E-mail dong-xj@ xjdong@ 网址
上海交通大学python程序设计课程PPT教案
22
实例创建(2)
创建时对实例进行初始化
用构造器创建实例时,系统会自动调用__init__ 方法
通常在此方法中执行一些初始化操作 __init__所需的参数由构造器提供.
例如:
>>> from person import Person >>> p1 = Person("Lucy",2005)
假设一个问题涉及数据X和Y,对X要进行的 操作为f(),g(),对Y的操作为h()
面向过程设计和面向对象得到的程序分别形如
X = ... Y = ... f(X) g(X) h(Y)
XY f() h() g()
请求X执行f() 请求X执行g() 请求Y执行h()
11
第10页/共68页
复杂数据的表示
第6页/共68页
7Leabharlann 数据与操作:面向对象观点数据与操作不可分离
数据类型概念已经提示我们:特定数据值和特定 操作是不可分割的两件事情
Q:请问x+y是什么意思? A:+对不同类型的x,y值有不同意义.
既然如此,何不将特定数据值
与特定操作捆绑在一起,形成一
种新型"数据"?
由此产生了对象概第念7页/共68页
这个版本是"流水帐式的",没有"章法结构". 程序不长,倒有10个变量,为理解程序需要跟踪这10个数据的变化.
上海交通大学python程序设计课程PPTCh课件
• 参考书
–Python Programming: An Introduction to Computer Science. (电子版)
–How to Think Like a Computer Scientist— Learning with Python.(电子版)
celsius = input("What is the Celsius temperature? ") fahrenheit = (9.0/5.0) * celsius + 32 print "The temperature is ",fahrenheit," degrees Fahrenheit." main()
# Author: John # Version: 1.0 def main():
....
• 注释是给人看的,对程序执行没有作用, 被编译器/解释器忽略.
• 良好的编程风格:多用注释!
43
程序实例
#convert.py # A program to convert Celsius temps to Fahrenheit # by: Susan Computewell def main():
41
程序构件:函数
• 多条语句构成一个整体,并命名
>>> def greet(): print "Hello!" print "Goodbye!"
>>> greet() Hello! Goodbye!
• 习惯上为程序定义一个主函数main
42
上海交大程序设计python期末测验题
上海交大程序设计python期末测验题————————————————————————————————作者:————————————————————————————————日期:一.选择题: 将唯一正确的选项写在题前括号中(每题1分,共15分)【】1.表达式'%d%%%d' %(3 / 4, 3 % 4)的值是:A.'0%3' B.'0%%3' C.'3/4%3%4' D.'3/4%%3%4'【】2.下面标识符中不是python语言的保留字的是:A.continue B.except C.init D.pass【】3.以下程序的输出结果是(提示:ord(' a ')==97):lista = [1,2,3,4,5,'a','b','c','d','e']print lista[2] + lista[5]A.100 B.'d' C.d D.TypeEror【】4.下面的循环体执行的次数与其它不同的是:A.i = 0while( i <= 100):print i,i = i + 1B.for i in range(100):print i,C.for i in range(100, 0, -1):print i,D.i = 100while(i > 0):print i,i = i – 1【】5.自顶向下逐步求精的程序设计方法是指:A.将一个大问题简化为同样形式的较小问题。
B.先设计类,再实例化为对象。
C.解决方案用若干个较小问题来表达,直至小问题很容易求解。
D.先设计简单版本,再逐步增加功能。
【】6.简单变量作为实参时,它和对应的形参之间数据传递方式是:A.由形参传给实参B.由实参传给形参C.由实参传给形参,再由形参传给实参D.由用户指定传递方向【】7.以下说法不正确的是:A.在不同函数中可以使用相同名字的变量。
《Python程序设计教程》习题答案
《Python程序设计教程》习题答案说明:以下习题答案是机械工业出版社出版的《Python程序设计教程》(作者:程细柱和程心怡)一书中各章节习题的答案,希望对读者有用。
第1章Python的开发平台(进入Python城堡)一、判断题1.(╳)2.(√)3.(╳)4.(√)5.(√)6.(╳)7.(√)二、单选题1.B 2.C 3.D 4.B 5.D 6.C7.C8.B9.C10.B11.B12.B13.C14.A15.B、D16.D三、填空题1.引用计数和垃圾收集器2.交互和脚本文件3.>>>4.help(“命令”)5..py四、简答题1.答:具体过程如下:1)用户选择“开始”菜单的“所有程序”,选择打开Python的IDLE窗口;2)在IDLE窗口选择“File/New File”菜单打开程序编辑窗口;3)在编辑窗口中输入程序源代码;4)输入完源代码后,选择编辑窗口的“File/Save”菜单保存Python程序文件;5)选择编辑窗口的“Run/Module”菜单或者按快捷键F5执行该程序。
2.答:Python语言具有简单易学、规范代码、能交互运行、免费开源、面向对象、可移植性好、可嵌入性强、丰富的标准库、高层的解释型语言等优点;它常常应用于人工智能、大数据、科学计算、云计算、云服务、网络爬虫、Web开发、桌面软件、游戏开发等领域。
第2章Python的基础知识(初遇城堡语言)一、判断题1.(√)2.(╳)3.(√)4.(╳)5.(√)6.(╳)7.(╳)8.(╳)9.(╳)二、单选题1.D2.B 3.D 4.A 5.A 6.D7.C8.A9.B10.D11.D12.B13.D14.B15.B16.D17.C18.A19.A20.C21.D22.A23.B24.C25.D26.C27.D28.C29.A30.B31.B32.D33.B34.C35.D36.C37.B38.C39.A40.B41.A42.D43.C44.B45.C46.B47.C48.A49.C50.B51.D52.D53.C54.B55.D56.B57.D三、填空题1.True和False2.83.74.浮点型(float)、布尔型(bool)和复数类型(complex)5.关系运算、逻辑运算、位运算四、名词解释1.是指在运行期间才去做数据类型检查的语言。
第8章PythonPytho程序设计基础教程面向对象编程ppt课件
8.2. 类的继承
面向对象的编程带来的主要好处之一是代 码的重用,实现这种重用的方法之一是通 过继承机制。一个类继承另一个类时,它 将自动获得另一个类的所有属性和方法; 原有的类称为父类,而新类称为子类。子 类继承了其父类的所有属性和方法,同时 还可以定义自己的属性和方法。继承完全 可以理解成类之间的类型和子类型关系。
2. 定义了eat()方法,该方法的参数是self和food:self表示当前 调用eat()的对象,food是一个数字类型参数,表示吃进去的食 物重量,通过self.weight=self.weight+food使得调用eat() 方法的Person对象体重增加,如p1.eat(2)表示Person对象p1 的体重增加2,同时显示信息。
5. 代Байду номын сангаас块4创建了两个不同的Person对象,分别是p1 和p2,分别调用他们的eat()、run()、say()方法。
10
对象属性的默认值设置
可以为属性在__init__()方法中设置默认值,代 码如下:
# 例 8 3在类的定义中加入初始化代码 def __init__(self, name, gender='男', weight=70):
9
3. 定义了run()方法,该方法只有一个参数self,通过s elf.weight=self.weight-1使得调用run()的对象体 重减1,如p1.run(),表示Person对象p1通过跑步 锻炼体重降低了1,同时显示信息。
4. 定义了say()方法,该方法只有一个参数self,通过p rint('My name is %s' % ())语句自我 介绍,如p2.say(),输出“王昭君”,自我介绍。
上交大《Python程序设计实用教程》教学资源 《Python程序设计基础》试卷1
《Python程序设计基础》测试题一、单项选择题(每个2分,共20分)1.下列哪个语句在Python中是非法的?()A、x = y = z =1B、x = (y = z + 1)C、x, y = y, xD、x += y2.关于Python内存管理,下列说法错误的是()A、变量不必事先声明B、变量无须先创建和赋值而直接使用C、变量无须指定类型D、可以使用del释放资源3、下面哪个不是Python合法的标识符()A、int32B、40XLC、selfD、name4、下列哪种说法是错误的()A、除字典类型外,所有标准对象均可以用于布尔测试B、空字符串的布尔值是FalseC、空列表对象的布尔值是FalseD、值为0的任何数字对象的布尔值是False5、下列表达式的值为True的是()A、5+4j >2-3jB、3>2>2C、(3,2)<('a','b')D、’abc’> ‘xyz’6、Python不支持的数据类型有()A、charB、intC、floatD、list7、关于Python中的复数,下列说法错误的是()A、表示复数的语法是real + imagejB、实部和虚部都是浮点数C、虚部必须后缀j,且必须是小写D、方法conjugate返回复数的共轭复数8、关于字符串下列说法错误的是()A、字符应该视为长度为1的字符串B、字符串以\0标志字符串的结束C、既可以用单引号,也可以用双引号创建字符串D、在三引号字符串中可以包含换行回车等特殊字符9、以下不能创建一个字典的语句是()A、dict1 = {}B、dict2 = { 3 : 5 }C、dict3 ={[1,2,3]: “uestc”}D、dict4 = {(1,2,3): “uestc”}10、下列Python语句正确的是:()A、min = x if x< y = yB、max = x > y ?x:yC、if (x >y) print xD、while True :pass二、填空题(每个空1.5分,共15分)1.Python源代码程序编译后的文件扩展名为_______。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Pack布局管理器
• Pack以紧凑方式将构件在窗口中“打包”
– 设想窗口由弹性材料制成,放入构件时先把窗 口空间撑大到足够容纳该构件,然后将构件紧 贴内部的某条边(缺省是顶边)放入.
– 缺省情形下放入同一个窗口的所有构件是沿 垂直方向自顶向下一个紧贴一个进行布置的
可以通过pack方法的side选项设置成沿水平方向 打包.
24
布局
• 布局:界面元素在界面中的位置安排. • 布局管理器:程序员不需要了解底层显示
系统的细节, 在较高层次上考虑界面布局 • 构件都是先创建,再布局:
w = Constructor(parent,...) w.GeometryManager(...)
• Tkinter提供三种布局管理器:Pack,Grid 和Place
19
常用构件:文本编辑区
• 类Entry:单行文本编辑
e = Entry(窗口,选项设置) – textvariable:控制变量,是StringVar类的实例
• 例如
>>> v = StringVar() >>> e = Entry(root,textvariable = v) >>> e.pack() >>> print v.get() hello >>> v.set('new text')
4
事件驱动
• GUI程序的执行流程取决于与用户的实 时交互
– 例如:Word程序的执行
• 事件驱动编程
– 普通程序的执行:启动——做事——终止 – 事件驱动程序的执行:启动——事件循环
等待事件发生,然后处理 程序的终止也是由特定事件(如关闭窗口事件)引
起的
5
基本概念
• 事件:例如点击鼠标,按下键盘等. • 事件处理程序:对事件进行处理的代码. • 事件驱动编程:一种编程范型
• 标签Label • 按钮Button • 菜单Menu • 框架Frame
窗口W
框架F1 勾选钮C1
勾选钮C2
框架F2 OK Cancel
– 也是容器
3
构件之间的关系
• 父子关系
– 在一个构件内创建另一个构件 – 界面上全体构件形成一个层次结构 – 顶层是根窗口
• 父构件内安排子构件:使用布局管理器
一组单选钮共用一个控制变量
>>> v = IntVar() >>> v.set(1) >>> Radiobutton(root,text="One",variable=v,value=1).pack() >>> Radiobutton(root,text="Two",variable=v,value=2).pack() >>> Radiobutton(root,text="Three",variable=v,value=3).pack()
–程序有一个事件循环
事件监测
OS功能,由工具包提供支持
事件处理
应用程序员只需编写自己的事件处理程序
6
GUI编程
• 需要GUI工具包
– 将低层细节对程序员隐藏 – 跨平台 – Python标准库:Tkinter
• GUI编程
– 设计界面外观 – 为每个构件定义事件处理代码 – 建立启动初始化和总控部分
程序中可以通过v.get()和v.set()来查询或设置勾 选钮的状态
>>> v = IntVar() >>> Checkbutton(root,text="Check",variable=v).pack()
18
常用构件:单选钮
• 类:Radiobutton
rb = Radiobutton(窗口,选项设置) – value:每个单选钮对应一个值,用于控制变量 – variable:控制变量,值为IntVar类的实例
22
菜单编程例:eg8_4.py
def callback(): print "hello from menu"
root = Tk() m = Menu(root) root.config(menu = m) filemenu = Menu(m) m.add_cascade(label="File", menu=filemenu) filemenu.add_command(label="New", command=callback) filemenu.add_command(label="Open...", command=callback) filemenu.add_separator() filemenu.add_command(label="Exit", command=callback) helpmenu = Menu(m) m.add_cascade(label="Help", menu=helpmenu) helpmenu.add_command(label="About...", command=callback)
from Tkinter import * root = Tk() root.mainloop()
9
在窗口中添加构件
• 两步:
– 创建 – 布局
• 例:eg8_2.py
from Tkinter import * root = Tk() aLabel = Label(root,text="Hello World") aLabel.pack() root.mainloop()
14
常用构件:标签
• 类:Label
lb = Label(窗口,选项设置) – text:标签文本内容 – width:标签宽度 – fg:前景色(文本颜色)
• 例如
>>> aLabel = Label(root,text="Hello World") >>> aLabel.pack() >>> Label(root,text='red color',fg='red').pack()
>>> def hiButton():
...
print 'hi there'
...
>>> Button(root,text='print',command=hiButton).pack()
17
常用构件:勾选钮
• 类:Checkbutton
cb = Checkbutton(窗口,选项设置) – text
21
常用构件:菜单
• 类Menu
– 创建菜单构件 – 与窗口关联 – 添加菜单项
菜单项:简单命令,级联式菜单,勾选钮,一组单选钮
• 例如
>>> m = Menu(root) >>> root.config(menu = m) >>> m.add_command(label="File") >>> m.add_command(label="Help")
10
在窗口中添加构件
• 构件对象有很多属性(实例变量):
– 创建时设置属性的值
属性一般都有缺省值 用"命名参数"方式设置较方便:属性=属性值
– 创建时不设置,将来再设置或修改
利用构件类的config方法: 对象.config(属性=属性值) 对象视为字典: 对象[属性]=属性值
11
根窗口
• 根窗口的标题设置
图形用户界面
程序的用户界面
• 程序中与用户进行交互的部分
– 用户通过UI向程序输入数据或者请求程序执 行特定任务
– 程序通过UI向用户显示各种信息
• UI应该是用户友好的 • 两类UI
– 命令行界面 – 图形界面(GU– 是容器:可以容纳其他构件的构件
– 程序有一个根窗口
23
常用构件:顶层窗口
• 类Toplevel
– 顶层窗口是根窗口的子构件,但有一定的独 立性:可以移动,改变大小.
– 根窗口只有一个,顶层窗口可有多个.
• 例如
>>> root = Tk() >>> Label(root,text="hello").pack() >>> top = Toplevel() >>> Label(top,text="world").pack() >>> top.title('hello toplevel') >>> top.geometry('400x300')
>>> Checkbutton(root,text="Math").pack() >>> Checkbutton(root,text="Python").pack() >>> Checkbutton(root,text="English").pack()
– variable:控制变量,值为IntVar类的实例
– 注意写法:对象创建与方法调用合二为一
15
常用构件:按钮
• 类:Button
btn = Button(窗口,选项设置) – text:按钮上的文本 – command:点击按钮时要执行的命令