版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序设计思想与方法45章,潘理 Email: ,2,课件及有关资料,ftp:/ 用户名:panli 密码:public ftp:/panli:,字符串处理,文本数据 简单的字符串处理 字符串的机内表示 字符串和密码 格式化输出 文件处理,文本数据,计算机应用从科学计算转向信息管理. 信息管理中大量的数据都是文本数据. 如姓名,地址,简历等等 计算机中用字符串来表示文本数据.,4,字符串类型,字符串:字符序列 字符串字面值:用一对引号(单或双)标明. “hello world” !#$%垂直方向5个刻度($10,000)平分300像素,即70像素为一档. 算法精化 Draw label 0.0K
2、 at (20, 320) Draw label 2.5K at (20, 250) Draw label 5.0K at (20, 180) Draw label 7.5K at (20, 110) Draw label 10.0K at (20, 40) 用Text函数实现,70,进一步细化(续),确定0号柱子的位置和高度 位置: 左下角坐标为(20,320) 高度: principal * (280 / 10000),即右上角y坐标为320 principal * (280 / 10000). 宽度: 故右上角x坐标为20 + 30 = 50 算法精化 0号柱:从(20,320)到(50
3、,320- principal*0.028)画矩形,71,进一步细化(续),其他柱子的位置和高度 位置: 左下角为(x, 320). 高度: principal*(280/10000),则右上角y坐标为320 principal*(280/10000). 宽度: 30,故右上角x坐标为(左下角x坐标+30) 算法精化 for year 从1到10: principal = principal * (1 + apr) x = 25 * year + 40 height = principal * 0.02 从(x,230)到(x + 25,230-height)画矩形,72,最后的程序(grap
4、h),from graphics import * def main(): win = GraphWin(Investment Growth Chart, 512, 384) Text(Point(20, 320), 0.0K).draw(win) Text(Point(20, 250), 2.5K).draw(win) Text(Point(20, 180), 5.0K).draw(win) Text(Point(20, 110), 7.5K).draw(win) Text(Point(20, 40), 10.0K).draw(win) principal = input(enter ini
5、tial principal:) apr = input(enter interest rate: ),bar = Rectangle(Point(70,320), Point(100, 320- principal*0.028) bar.setFill(green) bar.draw(win) x = 100 for year in range(1, 11): principal = principal * (1 + apr) bar = Rectangle(Point(x,320), Point(x+30, 320- principal*0.028) bar.setFill(green)
6、bar.draw(win) x = x + 30 raw_input(press any key to quit: ) win.close() main(),面向对象与图形编程,面向对象的思想 图形化编程 图形对象的使用 未知值的图形化处理 坐标系的选择 图形交互 图形模块介绍,自定义坐标系,默认坐标系以像素为单位,编程很麻烦. 坐标变换:实际数据需映射成窗口像素位置. Graphics模块提供自定义坐标系的功能,使坐标变换自动完成. 好处 编程简单直观 改变窗口像素尺寸对程序几乎没影响,76,自定义坐标系,setCoords(左下角的新坐标,左下角的y坐标,右上角的x坐标,右上角的y坐标)
7、Python自动进行新坐标系和像素之间的转换,例子:坐标系变换,例如 win = GraphWin(“Tic-Tac-Toe”) win.setCoords(0.0, 0.0, 3.0, 3.0) Line(Point(1,0), Point(1,3).draw(win) Line(Point(2,0), Point(2,3).draw(win) Line(Point(0,1), Point(3,1).draw(win) Line(Point(0,2), Point(3,2).draw(win) 新坐标系为:左下角(0,0),右上角(3,3) 系统自动把新坐标变换成200*200像素坐标 编程
8、实例:柱状图的改进(graph1),Lu Chaojun, SJTU,78,graph1,将x坐标分为13份,从0到13 将y坐标分成6份,从0到6 X坐标1-2是当年信息,2-3是一年后的信息,以此类推 Y坐标1是0元,2是2.5K元,3是5K元,,from graphics import * def main(): win = GraphWin(Investment Growth Chart, 512, 384) win.setCoords(0.0, 0.0, 13.0, 6.0) Text(Point(0.5,1), 0.0K).draw(win) Text(Point(0.5,2),
9、2.5K).draw(win) Text(Point(0.5,3), 5.0K).draw(win) Text(Point(0.5,4), 7.5K).draw(win) Text(Point(0.5,5), 10.0K).draw(win) principal = input(enter initial principal:) apr = input(enter interest rate: ) bar = Rectangle(Point(1,1), Point(2, 1 + principal*0.0004) bar.setFill(green) bar.draw(win) for yea
10、r in range(1, 11): principal = principal * (1 + apr) bar = Rectangle(Point(year+1, 1), Point(year + 2, 1 + principal*0.0004) bar.setFill(green) bar.draw(win) raw_input(press any key to quit: ) win.close() main(),面向对象与图形编程,面向对象的思想 图形化编程 图形对象的使用 未知值的图形化处理 坐标系的选择 图形交互 图形模块介绍,图形交互界面,GUI:图形元素用于输入输出 事件:移动
11、鼠标,点击按钮,选菜单等. 也是对象 事件发生后,有相应事件处理程序来处理. 事件驱动的编程 捕获事件 处理事件:一段程序,82,捕获鼠标点击,GraphWin类有一个方法getMouse():调用时等待用户点击,并返回点击位置(是个Point对象). 例如: win = GraphWin(Click Me!) for i in range(10): p = win.getMouse() print You clicked (%d, %d) % (p.getX(), p.getY(),83,编程实例:triangle.py,设计一个程序,用鼠标在窗口中任意点三个点,将这三个点连成一个三角形。,
12、# Program: triangle.py from graphics import * def main(): win = GraphWin(Draw a Triangle) win.setCoords(0.0, 0.0, 10.0, 10.0) message = Text(Point(5, 0.5), Click on three points) message.draw(win) p1 = win.getMouse() p1.draw(win) p2 = win.getMouse() p2.draw(win) p3 = win.getMouse() p3.draw(win) tria
13、ngle = Polygon(p1,p2,p3) triangle.draw(win) message.setText(Click anywhere to quit.) win.getMouse() main(),85,图形窗口中的文本输入,Entry对象:提供一个可编辑文本的框 Entry(,) 方法:setText()和getText()等 实例:温度转换GUI版 关键语句 input = Entry(Point(2,3), 5) input.setText(“0.0”) input.draw(win) celsius = eval(input.getText(),86,温度转换GUI版,
14、创建一个名为“华氏到摄氏转换”的窗口 显示两个文本框:“华氏温度”和“摄氏温度” 设置一个输入框,用于输入华氏温度 计算摄氏温度 显示摄氏温度 输出提示,结束程序,# coding = gbk # Program: fToC.py from graphics import * import string def main(): win = GraphWin(u华氏到摄氏的转换, 300, 300) Text(Point(50, 50), u华氏温度).draw(win) Text(Point(50, 150), u摄氏温度).draw(win) input = Entry(Point(200,
15、50), 10) input.setText(“0.0) input.draw(win) output = Text(Point(200, 150), ) output.draw(win) win.getMouse() fahrenheit = eval(input.getText() celsius = 5.0 / 9 * (fahrenheit - 32) Text(Point(200, 150), str(celsius).draw(win) Text(Point(200, 250), Click anywhere to quit.).draw(win) win.getMouse() win.close() main(),面向对象与图形编程,面向对象的思想 图形化编程 图形对象的使用 未知值的图形化处理 坐标系的选择 图形交互 图形模块介绍,图形模块介绍,g
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- COPD肺康复治疗全程系统化康复管理指南
- 院前经口插管全流程实战操作手册
- 2025《窦娥冤》民间信仰体现课件
- 班组兼职安全员职业健康安全职责培训
- 控制部信息通信班通信技术员(备员)安全责任制培训
- 2026年粉丝互动服务协议
- 2026年品牌联合营销推广合同协议
- 2026年字画捐赠协议合同协议
- 电气车间班组安全职责培训
- 控制部热控一班安全员安全责任制培训
- 2023年广东高考英语听说考试真题D录音原文与参考答案
- 《史记》上册注音版
- 新大象版四年级下册科学第二单元《自然界的水》课件(共4课)
- 彩钢板屋面拆除、更换屋面板施工方案(改)
- 污水处理厂生物除臭技术方案
- GB/T 20671.2-2006非金属垫片材料分类体系及试验方法第2部分:垫片材料压缩率回弹率试验方法
- 门诊医疗质量管理课件
- 初三数学总复习教学策略课件
- 第三讲-就业信息的收集与处理课件
- 天津大学讲义-工程成本管理概述
- 环境与可持续发展ppt课件(完整版)
评论
0/150
提交评论