Python程序设计 课件汇 苏琳 第1-6章 计算机和程序设计基础 - 判断结构_第1页
Python程序设计 课件汇 苏琳 第1-6章 计算机和程序设计基础 - 判断结构_第2页
Python程序设计 课件汇 苏琳 第1-6章 计算机和程序设计基础 - 判断结构_第3页
Python程序设计 课件汇 苏琳 第1-6章 计算机和程序设计基础 - 判断结构_第4页
Python程序设计 课件汇 苏琳 第1-6章 计算机和程序设计基础 - 判断结构_第5页
已阅读5页,还剩451页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机和程序设计基础第一章课程目标课程目标1了解计算机的硬件基础35246学习计算机科学家研究的领域和他们使用的技术了解现代计算机的基本设计了解计算机编程语言的形式和功能开始使用Python编程语言了解混沌模型及其对计算的影响PART1现代计算机1现代计算机现代计算机可以被定义为:在可改变的程序的控制下,存储和操纵信息的机器。A计算机是用于操纵信息的设备B计算机不是唯一能操纵信息的机器关键要素1现代计算机是一组详细的、循序渐进的指令,告诉计算机确切地做什么改变程序,计算机将执行不同的动作序列或不同的任务什么是计算机程序?机器保持不变,但程序改变了1现代计算机通过适当的编程,使得每台计算机几乎可以实现所有其它计算机的功能。一台通用机正确的编写程序前提条件PART2硬件基础2硬件基础图1.1

计算机功能视图是机器的“大脑”是计算机执行所有基本操作的地方2硬件基础图1.1

计算机功能视图存储程序和数据速度快,但不稳定2硬件基础图1.1

计算机功能视图提供永久的存储,如:磁盘、闪存、光盘2硬件基础图1.1

计算机功能视图信息一般通过键盘、鼠标等传递给计算机2硬件基础图1.1

计算机功能视图处理后的信息通过显示屏、打印机等呈现给用户2硬件基础从存储器取得第一条指令解码指令以弄清楚它代表什么执行适当的动作取得、解码和执行下一条指令循环继续,指令接着指令CPU遵循的过程称为“读取—执行循环”PART3计算机科学3计算机科学计算机科学并不只是关于计算机,就像天文学并不只是关于望远镜一样。计算机科学的根本问题就是“可以计算什么”,也就是“什么是可以计算的”。3计算机科学设计证明某个特定问题可以解决的一种方式是实际设计解决方案这是通过开发一个算法来实现的,一个逐步实现所需结果的过程如果可以设计一个算法,那么问题是可解的,未能找到算法并不意味着问题是不可解的3计算机科学分析分析是以数学方式检查算法和问题的过程有些看似简单的问题,任何算法都无法解决,这些问题是“难解的”如果花费的时间太长或者占用的内存太多,那么问题可能很难处理3计算机科学实验有些问题太复杂或定义不明确,无法分析实现一些系统,然后研究结果的行为PART4编程语言4编程语言帮我算一下2001+2002等于多少!你说啥?我听不懂!自然语言在描述复杂算法时存在模糊性和不精确性问题需要使用编程语言以明确、精确的方式表达程序精确的含义(它的“语义”)精确的形式(它的“语法”)4编程语言编程语言就像一种规则,用于编写计算机将遵循的指令。程序员对程序的叫法计算机代码computercode用编程语言来编写算法的过程编码coding4编程语言编程语言就像一种规则,用于编写计算机将遵循的指令。Python是一种编程语言C++、Java、Javascript、Ruby、Perl、Scheme、BASIC高级计算机语言4编程语言假设我们希望让计算机对两个数求和:我只理解机器语言!CPU实际执行的指令将内存位置2001的数加载到CPU中将内存位置2002的数加载到CPU中在CPU中对这两个数求和将结果存储到位置2003复杂实际上甚至比这更复杂,因为这些低级指令都是用二进制(1和0)表示的。4编程语言两个数求和可以表达为c=a+b高级计算机语言Python方法:将高级语言翻译成计算机可以执行的机器语言解释编译4编程语言编译“编译器”是将用高级语言编写的程序转换成某些计算机的机器语言。图1.2编译高级语言高级程序计算机可以直接执行的程序运行程序4编程语言解释“解释器”是一个程序,它模拟能理解高级语言的计算机。图1.3解释高级语言不是一下子全部翻译成机器语言,而是逐个分析并执行源代码指令。4编程语言解释编译VS

一旦程序被编译,它可以在没有源代码或编译器的情况下反复执行编译的程序更快每次程序运行时都需要解释器和源代码解释语言是更灵活的编程环境的一部分解释程序的可移植性更强PART5初识Python5初识Python第一次使用Python时,将看到如下内容:C:\Users\Administrator>pythonPython3.8.0(tags/v3.8.0:fa919fd,Oct142019,19:21:23)[MSCv.191632bit(Intel)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>是一个Python提示符,命令可以在后面输入。5初识Python>>>print("Hello,world")

Hello,world

>>>print(2+3)

5

>>>print("2+3=",2+3)

2+3=5

>>>在编程语言中,一个完整的命令称为语句:打印语句使用print命令。5初识Python>>>defhello():print("Hello")print("Computersarefun!")>>>使用函数来同时执行几个语句来解决一个常见的问题。注意,键入定义并不会导致Python打印任何东西。5初识Python>>>hello()HelloComputersarefun!>>>使用函数来同时执行几个语句来解决一个常见的问题。5初识Python>>>defgreet(person):print("Hello",person)

print("Howareyou?")

>>>命令可以具有可更改的部分,称为参数。5初识Python>>>greet("John")HelloJohnHowareyou?>>>greet("Emily")HelloEmilyHowareyou?>>>命令可以具有可更改的部分,称为参数。5初识Python当我们退出Python提示符时,定义会丢失。>>>defgreet(person):print("Hello",person)

print("Howareyou?")

>>>下次使用需重新输入解决方法:创建程序将定义写入独立的文件,称为“模块”或“脚本”。此文件保存在辅助存储器中,可以反复使用。5初识PythonA模块文件是一个文本文件,可以用任何应用程序来编辑文本。将程序保存为“纯文本”文件即可5初识PythonB集成开发环境(IDE)使编写程序更方便、更准确,有助于程序员编写代码。自动缩进颜色高亮显示交互式开发5初识Python#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()打开IDLE,选择File/NewFile菜单选项。表示这是一个Python模块。5初识Python>>>ThisprogramillustratesachaoticfunctionEnteranumberbetween0and1:.50.9750.09506250.3354999222660.8694649252590.4426331091130.9621652553370.1419727793620.47508438620.9725789275370.104009713267>>>PART6Python解释器6Python解释器#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()以#开头的行称为注释为程序的人类读者编写的,被Python忽略Python将跳过从#到行尾的所有文本6Python解释器#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()定义一个名为main的函数6Python解释器#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()打印6Python解释器#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()x是变量的示例变量为值提供名称显示引号内的信息,并将响应中输入的数字存储在x中6Python解释器#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()循环告诉Python一遍又一遍地重复相同的事情6Python解释器#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()是每次通过循环重复的内容通过缩进来标识循环的效果和重复这两行10次是一样的6Python解释器foriinrange(10):x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)x=3.9*x*(1-x)print(x)等价6Python解释器#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()赋值语句,一旦计算出右侧的值,它就被赋值到x中6Python解释器#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()告诉Python执行main函数中的代码PART7混沌和计算机7混沌和计算机随着公式被重复应用,初始值的非常小的差异可以导致结果的巨大差异!混沌函数7混沌和计算机#File:chaos.py#Asimpleprogramillustratingchaoticbehaviordefmain():print("Thisprogramillustratesachaoticfunction")x=eval(input("Enteranumberbetween0and1:"))foriinrange(10):x=3.9*x*(1-x)print(x)main()7混沌和计算机input 0.25 0.26--------------------------------0.7312500.7503600.7664410.7305470.6981350.7677070.8218960.6954990.5708940.8259420.9553990.5606710.1661870.9606440.5404180.1474470.9686290.4902550.1185090.974630课程目标小结希望大家能够初步掌握Python编程语言,深刻理解混沌模型及其对计算的影响。课程目标实践任务设计一个说明混沌行为的简单程序!课程目标课后习题选择题1.计算机科学的根本问题是_______。a.计算机的计算速度有多快 b.可以计算什么c.什么是最有效的编程语言 d.程序员可以赚多少钱

2.算法类似于_______。a.报纸 b.捕蝇草c.鼓 d.菜谱

3.设计来让人类使用和理解的计算机语言是_______。a.自然语言 b.高级计算机语言c.机器语言 d.提取—执行语言

4.按照惯例,程序的语句通常放在一个函数中,该函数名为_______。a.import b.mainc.program d.IDLE

5.函数定义的括号中列出的项被称为_______。a.括号 b.参数c.变元 d.b和c项都是正确的课程目标课后习题操作题生成一个你的名字.py的文件(如:张三.py),里面的代码内容分别是:打印你的名字(你的真实姓名哦)打印一朵花(如:---<--<@)打印一个笑脸(如:==^_^==)请使用Python自带的IDLE,打开改文件,把运行结果截图上交。

THANKSFORYOURATTENTION谢谢聆听Python程序设计Python编写简单程序第二章课程目标课程目标1理解数据类型的概念35246熟悉Python中的基本数值数据类型能够使用Python的math库了解软件开发的过程掌握Python标识符和表达式的规则能够理解和编写Python语句,将信息输出到屏幕,为变量赋值。PART1软件开发过程分析问题确定规格说明创建设计实现设计测试维护1软件开发过程软件开发过程分析问题确定规格说明创建设计实现设计测试维护1软件开发过程软件开发过程对用户的需求进行去粗取精、去伪存真、正确理解用软件工程开发语言表达出来分析问题确定规格说明创建设计实现设计测试维护1软件开发过程软件开发过程准确描述程序的输入和输出是什么准确描述输入和输出的相互关系分析问题确定规格说明创建设计实现设计测试维护1软件开发过程软件开发过程规划程序的总体结构描述程序怎么做设计算法来满足规格说明分析问题确定规格说明创建设计实现设计测试维护1软件开发过程软件开发过程将设计翻译成计算机语言并放入计算机Python分析问题确定规格说明创建设计实现设计测试维护1软件开发过程软件开发过程以较小的代价发现尽可能多的错误常用的测试方法是黑盒法和白盒法分析问题确定规格说明创建设计实现设计测试维护1软件开发过程软件开发过程对软件进行适当修改纠正运行中发现的错误PART2示例程序:温度转换器2示例程序:温度转换器我想要一个能将摄氏温度转换为华氏温度的程序。好的,没问题。2示例程序:温度转换器分析问题确定规格说明创建设计实现设计测试维护摄氏温度华氏温度2示例程序:温度转换器分析问题确定规格说明创建设计实现设计测试维护0摄氏度=32华氏度100摄氏度=212华氏度

华氏度与摄氏度的比率为:(212−32)/(100−0)=(180/100)=9/5F表示华氏温度,C表示摄氏温度,转换公式:F=(9/5)C+k得到k=32,最后的关系公式是:F=(9/5)C+32代入0和32分别作为C和F2示例程序:温度转换器分析问题确定规格说明创建设计实现设计测试维护处理输入输出程序将提示用户输入一些信息:摄氏温度使用F=(9/5)C+32将其转换为:华氏温度在计算机屏幕上显示结果2示例程序:温度转换器分析问题确定规格说明创建设计实现设计测试维护使用伪代码,我们可以专注于算法而不是编程语言。使用“伪代码”来编写算法输入摄氏度温度(称为celsius)计算华氏度为(9/5)celsius+32输出华氏度2示例程序:温度转换器分析问题确定规格说明创建设计实现设计测试维护#convert.py#AprogramtoconvertCelsiustempstoFahrenheit#by:SusanComputewelldefmain():celsius=eval(input("WhatistheCelsiustemperature?"))fahrenheit=(9/5)*celsius+32print("Thetemperatureis",fahrenheit,"degreesFahrenheit.")main()2示例程序:温度转换器分析问题确定规格说明创建设计实现设计测试维护>>>WhatistheCelsiustemperature?0Thetemperatureis32.0degreesFahrenheit.>>>main()WhatistheCelsiustemperature?100Thetemperatureis212.0degreesFahrenheit.>>>main()WhatistheCelsiustemperature?-40Thetemperatureis-40.0degreesFahrenheit.>>>PART3程序要素3程序要素Python中包括模块名、函数名、变量名、类名和常量名,这些统称为标识。类型命名规则举例模块名/包名全小写字母,简单有意义,如果需要可以使用下划线math、sys函数名全小写字母,可以使用下划线增加可阅读性foo(),my_func()变量名全小写字母,可以使用下划线增强可读性age、my_var类名采用PascalCase命名规则,由多个单词组成名称,其每个单词的首字母大写MyClass常量名全部大写字母,可以使用下划线增加可阅读性LEFT、TAX_RATE表2-1各名称命名规则名称3程序要素名称DolphdolphdolPhPython语言是区分大小写的。我们不一样~3程序要素名称有一些标识符是Python内置的,称为“保留字”或“关键字”,具有特定意义。FalseclassfinallyisreturnNonecontinueforlambdatryTruedeffromnonlocalwhileanddelglobalnotwithaselififoryieldassertelseimportpass

asyncbreakexceptinraise

await表2-2Python关键字(35个)3程序要素表达式产生或计算新数据值的代码片段称为表达式。字面量、变量、常量的区别?字面量对字面值求值将返回一个该值所对应类型的对象字符串字节串整数浮点数复数如:数字3.9和1如java语言中intx;变量finalintX=10;

常量1,56,12.4‘张三’字面量

一般为字符串、数字本身3程序要素表达式产生或计算新数据值的代码片段称为表达式。字符串Python

中通过将字符括在引号("")中来表示字符串字面量"Hello""Enteranumberbetween0and1:"引号本身不是字符串的一部分3程序要素表达式>>>5858>>>"Helloworld"'Helloworld'>>>"58"'58'显示字符串的值时,将字符序列放在单引号中该值实际上是文本而不是数字3程序要素表达式产生或计算新数据值的代码片段称为表达式。标识符使用标识符作为变量来给名字赋值。当标识符作为表达式出现时,它的值会被取出,作为表达式的结果。3程序要素表达式>>>a=5>>>a5>>>b=6>>>b6>>>a+b11>>>print(a+b)11>>>print(c)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>NameError:name'c'isnotdefined注意:变量总是必须赋一个值,然后才能在表达式中使用3程序要素表达式复杂表达式都是通过简单表达式组合而成的。加法减法乘法除法乘方+-*/**整除//取余%3程序要素表达式>>>a=5>>>b=6>>>a+b11>>>a-b-1>>>a*b30>>>a/b0.8333333333333334>>>a**b156253程序要素表达式Python的数学运算符也遵循我们常见的四则运算的优先级以及交换律、结合律等。>>>a=5>>>b=6>>>((a+b)*(a-b/a))**(b-a)41.8注意,只有圆括号在数字表达式中是允许的。3程序要素表达式Python还提供了字符串的运算符。例如,可以“加”字符串:>>>"I"+""+"love"+""+"python"'Ilovepython'效果是创建一个新的字符串,把两个字符串“粘”在一起。被称为“连接”PART4输出语句4输出语句对每个语句的语法和语义有一套精确的规则PythonPython中有两种输出方式:表达式语句print()函数4输出语句Python中print为内置语句,使用print()函数时与其它函数的使用方法一样。键入print,后面的()列出我们需要打印的参数print(<expr>,<expr>,...,<expr>)print()包含函数名print带上带括号的表达式序列,用逗号分隔(<>)用于表示由Python代码的其他片段填充的“槽”括号内的名称表示缺少什么expr表示一个表达式不打印任何表达式的print也是合法的4输出语句Python中print为内置语句,使用print()函数时与其它函数的使用方法一样。键入print,后面的()列出我们需要打印的参数>>>print(3)3>>>print(3,2+4)36>>>print("helloworld")helloworld>>>print("thesumis",3+4)thesumis74输出语句当需要将多个print()函数的打印结果输出为一行时,可以用”end”关键字参数。print("Theansweris",end="")print(3+4)产生单行输出:Theansweris74输出语句当需要将输出转换成字符串时,此时我们可以使用repr()或str()函数来实现。str()函数返回一个函数易读的表达形式repr()函数返回一个解释器易读的表达形式4输出语句当需要将输出转换成字符串时,此时我们可以使用repr()或str()函数来实现。>>>s='helloworld'>>>str(s)'helloworld'>>>repr(s)"'helloworld'"输出的字符不带引号输出的字符带有引号PART5赋值语句5赋值语句简单赋值基本赋值语句具有以下形式:<variable>=<expr>variable是一个标识符expr是一个表达式赋值的语义是:右侧的表达式被求值,然后产生的值与左侧命名的变量相关联。5赋值语句简单赋值变量可以多次赋值,它总是保留最新赋的值。>>>x=6>>>x6>>>x=7>>>x7>>>x=x+1>>>x85赋值语句简单赋值变量就像一个可以输入值的方框。当一个变量改变时,旧的值被删除,新的值被写入。5赋值语句赋值输入输入是用一个赋值语句结合一个内置函数input实现的。<variable>=input(<prompt>)是一个字符串表达式,用于提示用户输入。当Python遇到对input调用时,此时就会提示用户输入一些文本,键入完成后按<Enter>键。用户输入的任何东西都会存储为字符串。文本输入5赋值语句赋值输入>>>str=input("请输入:")请输入:哈哈>>>print("你输入的内容是:",str)你输入的内容是:哈哈5赋值语句赋值输入<variable>=eval(input(<prompt>))eval是“evaluate(求值)”的缩写在这种形式中,用户键入的文本被求值为一个表达式,以产生存储到变量中的值。如:字符串“32”就变成数字32数字输入如果希望得到一个数字,而不是一些原始文本(字符串),需要对input进行eval。5赋值语句赋值输入>>>str=input("请输入数字:")请输入数字:4+5>>>str'4+5'>>>str=eval(input("请输入数字:"))请输入数字:4+5>>>str95赋值语句赋值输入eval函数功能非常强大,也有“潜在的危险”。当我们对用户输入求值时,本质上是允许用户输入一部分程序。Python将对他们输入的任何内容求值。输入恶意指令“代码注入”攻击5赋值语句同时赋值

有一个赋值语句的替代形式,允许我们同时计算几个值,我们把这称为“同时赋值”。形式如下:<var1>,<var2>,...,<varn>=<expr1>,<expr2>,...,<exprn>告诉Python对右侧所有表达式求值,然后将这些值赋给左侧命名的相应变量。5赋值语句同时赋值一个很常见的问题:将x和y的值交换。通常我们的做法是定义一个temp,将x与y相互交换,就像下面这样:temp=xx=yy=temp5赋值语句同时赋值当用Python的“同时赋值”时,这个问题就变得很简单了。>>>x=5>>>y=7>>>x,y=y,x>>>x7>>>y5只需要一行就可以解决两数互相交换的问题赋值是同时的,避免了擦除一个原始值5赋值语句同时赋值结合前面所学的的输入input语句进行同时赋值操作。defmain():print("求3个数的平均值")

score1,score2,score3=eval(input("请输入3个值:"))

average=(score1+score2+score3)/3print("平均值为:",average)main()输出结果如下:求3各数的平均值请输入3个值:34,45,56平均值为:45.0PART6数值数据类型6数值数据类型计算机刚开发出来时,它们主要被视为数字处理器。计算机程序存储和操作的信息通常称为“数据”不同种类的数据以不同的方式存储和操作6数值数据类型#Aprogramtocalculatethevalueofsomechangeindollarsdefmain():print("ChangeCounter")print()print("请输入您的各种硬币个数.")yuan=eval(input("有多少1元的硬币:"))fifty_cents=eval(input("有多少5角的硬币:"))twenty_cents=eval(input("有多少2角的硬币:"))ten_cents=eval(input("有多少1角的硬币:"))total=fifty_cents*.50+twenty_cents*.20+ten_cents*.10+yuan*1.0print()print("您拥有的硬币总额是",total)main()一个计算零钱的程序:6数值数据类型ChangeCounter请输入您的各种硬币个数.有多少1元的硬币:5有多少5角的硬币:4有多少2角的硬币:8有多少1角的硬币:6您拥有的硬币总额是9.2一个计算零钱的程序:输出结果示例6数值数据类型有多少1元的硬币:5有多少5角的硬币:4有多少2角的硬币:8有多少1角的硬币:6用户输入的值是整数total=fifty_cents*.50+twenty_cents*.20+ten_cents*.10+yuan*1.0硬币的值是分数的十进制表示不同的“数据类型”在计算机内部,整数和具有小数部分的数字以不同的方式存储。6数值数据类型对象的数据类型决定了它可以具有的值以及可以对它执行的操作。整数int值可以是正数和负数小数float当需要判断数字是什么数据类型时,可以使用Python内置的type函数>>>type(5)<class'int'>>>>type(5.0)<class'float'>>>>a=5>>>type(a)<class'int'>>>>a=5.0>>>type(a)<class'float'>6数值数据类型为什么需要两种数字类型?表示计数的值不能是小数(如不能有3.8只小动物)涉及各种数据类型的操作效率的问题float类型只能表示对实数的近似因为浮点数不精确,所以尽可能使用int6数值数据类型Python除了支持整型和浮点型,还支持长整型(long)和复数(complex)。表2-3一些数字类型的实例intlongfloatcomplex1051924361L0.03.14j-10-0x19323L3.213j0x100xDEFABCECBDAECBFBAEL-56.259.322e-32j-0x10-47218852996548-32.54e1003e+23j6数值数据类型值的数据类型决定了可以使用的操作,Python支持对数值的一般数学运算。表2-4Python内置的数值操作操作符操作+加-减*乘/浮点除**指数abs()绝对值//整数除%余6数值数据类型>>>3+47>>>3.0+4.07.0>>>3*412>>>3.0*4.012.0>>>4**364>>>4.0**364.0>>>4.0**3.064.0>>>abs(5)5>>>abs(-3.5)3.5整形数据加法和浮点型数据加法所得结果相同6数值数据类型>>>100/333.333333333333336>>>100//333>>>100.0/3.033.333333333333336>>>100.0//3.033.0>>>100.00//3.0033.0>>>100%31>>>100.0%3.01.0/用于常规除法,总是返回一个浮点数。//用于整型除法,总是产生一个整数。虽然整数除法的结果总是一个整数,但结果的数据类型取决于操作数的数据类型,分数分量为0。结果的数据类型取决于操作数的数据类型。PART7类型转换和舍入7类型转换和舍入整数int+整数int整数int小数float+小数float小数float当在表达式中混合int和float时,Python会如何处理?7类型转换和舍入x=5.0+2将浮点型5.0变为整型5,然后再与2相加将整型2变为浮点型2.0,再与5.0相加将浮点型转换为整型是很危险的,当浮点型小数点后不为0时,当将浮点型转换为整型时,则会导致结果错误。整型转换为浮点型,只需要在整型后加上小数点即可。Python会自动将int转换为浮点数,并执行浮点运算以产生浮点数结果。7类型转换和舍入>>>int(3.94)3>>>float(3)3.0>>>float(int(3.14))3.0>>>int(float(3))3我们也可以执行类型转换,这称为显式类型。(也称为强制转换)float转换为int就是丢弃浮点值的小数部分,该值将被截断,而不是舍入。7类型转换和舍入>>>round(3.14)3>>>round(3.5)4对数字进行四舍五入的更一般方法是使用内置的round函数,它将数字四舍五入到最接近的整数值。7类型转换和舍入>>>pi=3.141592653589793>>>round(pi,2)3.14>>>round(pi,3)3.142调用round会产生一个int值,因此,对round的简单调用是将float转换为int的另一种方法。提供第二个参数,指定小数点后的数字位数。7类型转换和舍入>>>int("1234")1234>>>float("1234")1234.0>>>float("1234.5")1234.5类型转换函数int和float还可以将数字字符串转换为数字类型,作为替代eval从用户获取数字数据的另一种方法。可以有效的解决注入攻击的安全隐患。7类型转换和舍入#Aprogramtocalculatethevalueofsomechangeindollarsdefmain():print("ChangeCounter")print()print("请输入您的各种硬币个数.")yuan=int(input("有多少1元的硬币:"))fifty_cents=int(input("有多少5角的硬币:"))twenty_cents=int(input("有多少2角的硬币:"))ten_cents=int(input("有多少1角的硬币:"))total=yuan*1.0+fifty_cents*.50+twenty_cents*.20+ten_cents*.10print()print("您拥有的硬币总额是",total)main()一个计算零钱的程序(改进版本):优点避免代码注入攻击的风险确保用户只能输入有效的整数7类型转换和舍入>>>#simultaneousinputusingeval>>>x,y=eval(input("Enter(x,y):"))Enter(x,y):3,4>>>x3>>>y4>>>#doesnotworkwithfloat>>>x,y=float(input("Enter(x,y):"))Enter(x,y):3,4Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>ValueError:couldnotconvertstringtofloat:'3,4'缺点不支持同时输入PART8使用math库是一个模块,包含了很多封装好的函数表达式。8使用math库Python我有math库!利用math库可以使用浮点值完成复杂的数学运算三角函数运算对数运算……库8使用math库二次方程的标准式为

,要求该方程的解,则可以利用二次方程求解公式求解:

利用math库来完成该方程的求解8使用math库importmathdefmain():print("求解二次方程")print()a=float(input("输入系数a:"))b=float(input("输入系数b:"))c=float(input("输入系数c:"))discRoot=math.sqrt(b*b-4*a*c)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)print()print("方程的解为:",root1,root2)main()输入方程的参数a,b,c的值,输出方程的两个解:问题

8使用math库importmathdefmain():print("求解二次方程")print()a=float(input("输入系数a:"))b=float(input("输入系数b:"))c=float(input("输入系数c:"))

if(b*b-4*a*c>=0):discRoot=math.sqrt(b*b-4*a*c)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)print("\n方程的解为:",root1,root2)else:discRoot=math.sqrt(4*a*c-b*b)s=-b/(2*a)root1=(discRoot)/(2*a)root2=(discRoot)/(2*a)print("\n方程的虚解1为:",s,"+",root1,"j")print("\n方程的虚解2为:",s,"+",root2,"j")main()输入方程的参数a,b,c的值,输出方程的两个解:

8使用math库熟练利用各种库可以将复杂代码简单化,简化编写步骤,增强可读性。表2-5math库的一些函数Python数学描述piππ的近似值eee的近似值sqrt(x)x的平方根sin(x)sin(x)x的正弦值cos(x)cos(x)x的余弦值tan(x)tan(x)x的正切值arcsin(x)arcsin(x)x的反正弦arccos(x)arccos(x)x的反余弦arctan(x)arctan(x)x的反正切ln(x)ln(x)x的自然对数lng10(x)x的常用对数exp(x)e的x次方ceil(x)[x]3.15的结果是4最小的>=x的值floor(x)[x]3.95的结果是3最大的<=x的值课程目标小结希望大家能够熟练规则,掌握各种数据类型的转换方法,能够将数学中的一些运算、函数等展示在计算机程序上。课程目标实践任务1、设计一个计算零钱价值的程序,使用eval函数转换用户输入的值。2、设计一个计算零钱价值的程序,使用int函数转换用户输入的有效整数。课程目标课后习题选择题1.下列_______项不是内置的Python数据类型。a.int b.floatc.rational d.String2.为了使用math库中的函数,程序必须包括_______。a.注释 b.循环c.操作符 d.import语句3.用于存储π的值,最合适的数据类型是_______。a.int b.floatc.irrational d.String4.用于计算阶乘的模式是_______。a.累积器 b.输入、处理、输出c.计数循环 d.格子5.在现代Python中,int值大于底层硬件int时,会_______。a.导致溢出 b.转换为floatc.打破计算机 d.使用更多的内存课程目标课后习题判断题1.由计算机存储和操作的信息称为数据。

2.像加法和减法这样的操作在math库中定义。

3.sqrt函数计算数字的喷射(squirt)。

4.计算机使用二进制表示数字。5.在Python中,4+5产生与4.0+5.0相同的结果类型。 THANKSFORYOURATTENTION谢谢聆听Python程序设计第三章面向对象和图形课程目标课程目标1理解对象的概念以及如何用它们来简化编程3524熟悉graphics库中可用的各种对象能够在程序中创建对象并调用适当的方法来进行图形计算能够使用turtle函数库,编写简单图形程序能具有基本的程序设计能力,具有一定的语句编写能力PART1概述1概述每个数据类型可以表示一组特定的值每个数据类型都有一组相关的操作使用Python内置的数字和字符串数据类型来编写程序。传统编程观点数据是被动的——它是被操纵的,通过主动操作来控制和组合它们。1概述

大多数现代计算机程序是用“面向对象”(OO)方法构建的。大多数应用程序都有图形用户界面(GUI),提供窗口、图标、按钮和菜单等可视元素。Python自带的标准GUI模块名为Tkinter使用Tkinter中的图形库(graphics.py)来给大家介绍对象和计算机图形学的基本原则。PART2对象的目标2对象的目标面向对象开发的基本思想:将一个复杂的系统视为一些较简单“对象”的交互。面向对象将面向对象视为一种结合数据和操作的主动数据类型对象“知道一些事情”(它们包含数据),并且可以“做一些事情”(它们有操作)对象通过彼此发送消息来交互2对象的目标假设我们希望为学院或大学开发数据处理系统,我们需要记录相当多的信息。举个例子每个学生都可以在程序中表示为一个对象,包含一些特定数据,如:姓名ID号所选课程家庭地址2对象的目标每个学生对象也能够响应某些请求。举个例子为每个学生打印一个地址由printCampusAddress操作处理如果向一个特定的学生对象发送printCampusAddress消息,它就打印出自己的地址。2对象的目标对象可以引用其他对象。学院中的每门课程也可能由一个对象表示,课程对象将知道一些信息,如:教师是谁?课程中有哪些学生?先决条件是什么?课程的时间地点?教师房间时间对象对象对象PART3简单图形编程3简单图形编程在使用graphics库进行图形编程时,首先要保证graphics已经被正确的安装配置。>>>importgraphics>>>导入graphics库如果导入没问题,则说明graphics库安装正确,可以被正确使用如果无法正确导入,则说明graphics.py没有被正确复制到库安装目录下将graphics.py复制到图形实例的同一文件夹下将graphics.py复制到Python的库安装目录下3简单图形编程在屏幕上创建一个地方来显示图形,即“图形窗口”。

对象(实例)=类名.函数名()>>>win=graphics.GraphWin()>>>使用点符号来调用位于graphics库中的GraphWin函数图3.1GraphWin屏幕截图3简单图形编程GraphWin是一个对象,我们将它赋给变量win,可以通过这个变量来操作窗口对象。

对象.方法()#调用方法>>>win.close()>>>键入此命令将导致窗口从屏幕中消失3简单图形编程>>>importgraphics>>>win=graphics.GraphWin()每次使用graphics库的函数时都需要在前面加上繁琐>>>fromgraphicsimport*>>>win=GraphWin()允许从库模块加载特定函数加载所有函数,或者所列的特定的函数使用函数时,直接用import导入库使用另一种导入方式3简单图形编程图形窗口实际上是一些小点的集合,这些小点称为“像素”默认情况下,GraphWin的高度为200像素,宽度为200像素通过为每个单独的像素分配颜色来绘制图像将是一个艰巨的挑战。作为替代,我们将依赖一个图形对象库。像素(图像元素)3简单图形编程Point(点)点位置用坐标系(x,y)表示。点的水平位置值从左到右增加点的垂直位置值从上到下增加点(0,0)定位在窗口的左上角右下角坐标为(199,199)默认颜色为黑色默认状态下3简单图形编程graphics库还包含了一些命令,用于绘制线段、圆、矩形、椭圆、多边形和文本。fromgraphicsimport*#设置画布窗口名和尺寸win=GraphWin('CSSA',700,700)#画点pt=Point(100,100)pt.draw(win)#画圆cir=Circle(Point(200,200),75)cir.setOutline('red')#外围轮廓颜色cir.setFill('yellow')#填充颜色cir.draw(win)3简单图形编程graphics库还包含了一些命令,用于绘制线段、圆、矩形、椭圆、多边形和文本。#画线line=Line(Point(650,100),Point(250,100))line.draw(win)#画矩形rect=Rectangle(Point(300,300),Point(400,400))rect.setFill('red')#填充颜色rect.draw(win)#画椭圆oval=Oval(Point(450,450),Point(600,600))oval.setFill('red')#填充颜色oval.draw(win)3简单图形编程graphics库还包含了一些命令,用于绘制线段、圆、矩形、椭圆、多边形和文本。#显示文字message=Text(Point(win.getWidth()/2,20),'点击界面任意地方可退出.')message.draw(win)#关闭画布窗口win.getMouse()win.close()图3.2GraphWin生成的各种形状PART4使用图形对象4使用图形对象对象让数据与操作相结合,要求对象执行它的一个操作,就执行了计算。GraphWin、Point、Circle、Oval、Line、Text、Rectangle都是“类”的示例每个对象都是某个类的“实例”,类描述了实例将具有的属性。4使用图形对象举个例子小白是所有狗组成的类的一个特定个体。实例“类”和“实例”的联系4使用图形对象要创建一个类的新实例,我们使用一个特殊操作,称为“构造函数”。<class-name>(<param1>,<param2>,...)是创建一个新实例的类的名称,例如Circle或Point。是初始化对象所需的任何参数参数的数量和类型取决于该类Point需要两个数字值,而GraphWin可以不使用任何参数。4使用图形对象举个例子p=point(50,60)Point类的构造函数需要两个参数,给出新点的x和y坐标。这些值作为“实例变量”存储在对象内。4使用图形对象<object>.<method-name>(<param1>,<param2>,...).pt.draw(win)对象.方法(参数)方法为了让对象执行操作,我们需向对象发送一条消息。对象响应的消息集称为对象的“方法”方法就像存在于对象内部的函数使用点表示法来调用方法。4使用图形对象有一些方法根本不需要参数p.getX()p.getY()返回点的x值返回点的y值取值方法允许我们从对象的实例变量访问信息4使用图形对象有一些方法需要参数move(dx,dy)让对象在x方向上移动dx单位,在y方向上移动dy单位。将点向右移动10个单位长度move(10,0)改变了p的x实例变量,添加了10个单位。设值方法如果该点当前在GraphWin中绘制,则move将负责擦除旧图像并在新位置绘制4使用图形对象一些方法需要的参数本身也是复杂对象例如,将Circle绘制到GraphWin中涉及两个对象:circ=Circle(Point(50,50),20)win=GraphWin()circ.draw(win)创建一个圆,设定圆心为(50,50),半径为20创建了GraphWin将所生成的圆在GraphWin中显示出来draw方法存在于circ对象内部。4使用图形对象图3.3绘制圆的对象交互概念图4使用图形对象在使用对象时,通过一个变量对对象所做的更改也会对另一个变量可见。假设我们试图写一段绘制笑脸的代码,希望创建两个相距20个单位的眼睛。leftEye=Circle(Point(80,50),5)leftEye.setFill('yellow')leftEye.setOutline('red')rightEye=leftEye#引用地址复制rightEye.move(20,0)基本思想是创建左眼,然后将其复制到右眼,再移动20个单位4使用图形对象图3.4变量leftEye和rightEye是别名无法达到目的,因为只创建了一个Circle对象。4使用图形对象可以为每一个眼睛都创建一个对象!麻烦graphics库提供了更好的解决方案,所有图形对象都支持复制对象的clone方法4使用图形对象fromgraphicsimport*win=GraphWin('眼睛',300,300)leftEye=Circle(Point(100,150),25)leftEye.setFill('yellow')leftEye.setOutline('red')rightEye=leftEye.clone()rightEye.move(100,0)leftEye.draw(win)rightEye.draw(win)win.getMouse()win.close()图3.5得到的眼睛结果图利用clone,我们改进后的完整代码如下:4使用图形对象在对如何使用graphics的对象有了一些了解之后,就可以尝试一些真正的图形编程。比如有这么一个示例,将钱存入银行,求10年后账户有多少钱?针对这个问题,可以创建一个条形图来汇总收入情况。首先分析问题,将钱存入银行,根据年利率,每年可以得到本金,公式为principal=principal×(1+apr),计算逐年的本金变化。假设以10%的利率投资2000元。表4-1展示了10年期间投资的增长情况。程序将在条形图中显示此信息。图4.6以图形方式显示了相同的数据。该图形包含11个条形,第一个条形显示本金的原始值。为了引用方便,可以根据累计利息的年数对这些条形进行编号,从0到10。

0200012000+2000*10%=2000*(1+10%)2(2000+2000*10%)+(2000+2000*10%)*10%=(2000+2000*10%)*(1+10%)3principal=principal×(1+apr)4使用图形对象表3-1以10%利率计算2000元增长的情况年值/元02000.0012200.0022420.0032662.0042928.2053221.0263542.1273897.4384287.1894715.904使用图形对象※------伪代码------※打印简介※从用户处获取principal和apr※创建一个GraphWin※在窗口的左侧绘制刻度标签※在位置0处绘制柱形,高度对应principal※对接下来的1到10年※计算principal=principal*(1+apr)※绘制该年的柱形,高度对应principal※等待用户按下回车键。图4.6柱状图显示在10%利率时2000元的增长4使用图形对象※------伪代码------※在(20,230)绘制标签"0.0K"※在(20,180)绘制标签"2.5K"※在(20,130)绘制标签"5.0K"※在(20,80)绘制标签"7.5K"※在(20,30)绘制标签"10.0K"4使用图形对象※------伪代码------※对于year从1增长10:※计算principal=principal*(1+apr)※计算xll=25*year+40※计算height=principal*0.02※从左下角坐标(xll,230)至右上角坐标(xll+25,230-height)绘制一个矩形※变量

xll表示x左下角:柱形左下角的x值。4使用图形对象※------伪代码------※打印简介※从用户处获取principal和apr※创建一个

320x240的

GraphWin,标题为“投资增长图表”※在(20,230)绘制标签"0.0K"※在(20,180)绘制标签"2.5K"※在(20,130)绘制标签"5.0K"※在(20,80)绘制标签"7.5K"※在(20,30)绘制标签"10.0K"※从(40,230)至(65,230-principal*0.02)绘制一个矩形※对于

year从

1增长

10:※计算

principal=principal*(1+apr)※计算

xll=25*year+40※计算

height=principal*0.02※从左下角坐标(xll,230)至右上角坐标(xll+25,230-height)绘制一个矩形※等待用户按下回车键4使用图形对象fromgraphicsimport*defmain():

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论