Python基础课件_第1页
Python基础课件_第2页
Python基础课件_第3页
Python基础课件_第4页
Python基础课件_第5页
已阅读5页,还剩275页未读 继续免费阅读

下载本文档

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

文档简介

1、Python,第一章 进入python3.5的精彩世界, ,前言,Python 简介,Python 安装,2,本节内容,进入Python编程世界,Python的官网网站: Unix衍生系统可能已经安装了Python,在命令行对话框中键入“python”即可显示版本信息。 Windows下安装Python和安装其他软件一样,很easy!,编码方面:Python3.x默认utf-8。 语法方面有改动,数据类型方面有调整。 面向对象、异常处理和模块等方面也有改动。 本教学使用Python3.5。,Python 下载与安装,Python2.x vs Python 3.x,Python安装,python

2、官网有几个下载文件,有什么区别?,Python 3.6.0a1 - 2016-05-17Download Windows x86 web-based installerDownload Windows x86 executable installerDownload Windows x86 embeddable zip Windows x86-64 web-based installerDownload Windows x86-64 executable installerDownload Windows x86-64 embeddable zip file x86是32位,x86-64是64

3、位。 可以通过下面3种途径获取python: web-based installer 是需要通过联网完成安装的executable installer 是可执行文件(*.exe)方式安装embeddable zip file 嵌入式版本,可以集成到其它应用中,安装好python后,在开始菜单栏中会自动添加一个名为python3.5的文件夹,点击该文件夹会有如图下图所示的一些子目录。 IDLE是Python集成开发环境,也称交互模式。 Python3.5是Python的命令控制台,里面只能执行Python命令。 第三个是帮助文档,点击后会弹出帮助文档。 最后一个是Python的模块文档。本书若无

4、特别指出,示例都是在IDLE中执行的。,进入Python编程世界,打开交互模式,如下图所示: 若看到,则表示是在Python交互式环境下,在Python交互式环境下,只能输入Python代码并立刻执行。,在交互式环境下输入print (Hello,world!),按回车,可以看到输出了Hello,world!。如下图,红色箭头指向为输入部分,红色框为输出。 此处print后面带了括号,表示print是一个函数,单引号里面的叫字符串。如果要让Python打印出指定的文字,可以用print()函数,然后把希望打印的文字用单引号或者双引号括起来,但不能混用单引号和双引号。,我们该怎么去刻意犯呢? 我

5、们以前面的“Hello,world!”为示例,如果将print (Hello,world!)修改为print (Hello,world!),去掉后面的单引号,在交互模式下测试一下。 输入语句: print (Hello,world!) 可以看到屏幕打印结果如下图所示,这里打印意为在屏幕上输出文本,并非通过打印机打印出来: 通过这个错误提示,就能很快就知道问题的原因。,温故知新,学以致用,(1)回顾一下Python的发展历程,起源和应用场景。 (2)在本地安装Python最新版本,安装好后卸载,卸载后再安装,尽量关注一下各个步骤的细节。 (3)尝试在不同操作系统上安装Python。 (4)在“H

6、ell world!”示例中,尝试将print函数拼写错误,查看输出结果。 (5)不要用电脑测试,自己想想print (1+2)的输出结果。,Windows下运行Python程序,HelloWorld.py # -*- coding: cp936 -*- 支持汉字注释 print Hello, world! # 我的第一个Python程序 raw_input() # 使cmd框不立刻退出 三种运行方式 打开源文件,用Python Shell运行。 双击源文件,用CMD运行。 在Python Shell中直接写程序运行。,进入Python编程世界,其他的Python集成开发环境,1)开源 Pyt

7、hon Win+Win32 Extensions IPython(增强的交互式Python) IDE Studio(IDLE以及更多) Eclipse 2)商业 WingIDE(WinWare公司) Komodo(ActiveState公司),进入Python编程世界,Python学习资源,简明Python教程,啄木鸟社区,CSDN下载,其他,htp:/,Python快速入门,输入输出,注释,本 章 主 题,操作符,赋值,数据类型,缩进,循环语句,条件语句,文件操作,错误处理,函数,类,模块,print输出,注释, print (“Hello world!“) # Python Shell提示

8、符 Hello world! abs(-4) # abs(): 内建函数,取绝对值 4 myString = Hello world! # 单引号、双引号成对使用 print myString Hello world! myString Hello world! # 显示结果带引号 _ # 下划线含义:表示最后一个表达式 Hello world!,Python快速入门,print输出,注释, print (“%s is %d years old.” % (“李书豪”, 26)) 李书豪 is 26 years old. # %s 字符串;%d 整型;%f 浮点型 # Python非常灵活,即使

9、将数字传递给%s,也不会引发严重后果 logFile = open(myLog, a) # 打开文件 print logFile, Python让程序员的工作更轻松。 # 重定向输出符号 log() # 关闭文件,Python快速入门,raw_input()输入, userName = raw_input(输入登录名:) 输入登录名:李书豪 print 你的登录名为, userName 你的登录名为 李书豪 # 自动加空格 # raw_input():从用户那里得到数据输入; myNumber = raw_input(输入一个数字:) 输入一个数字:1024 print 你输入数字的2倍是:%

10、d % (int(myNumber) * 2) 你输入数字的2倍是:2048 # int() 字符串转换为整型,Python快速入门,操作符,标准算术操作符:+ - * / /取整 %取余 *乘方 print -2 * 3 + 2010 / 4 * 2 print (-2 * 3) + (2010 / (4 * 2) # 括号增加可读性 标准比较操作符: = = != 3.14 3.14 != 3.14 # 渐渐被淘汰 False 逻辑操作符:and or not (2 4) and (2 = 4) or (not (3 4 5) False # 3 4 5 等价于 3 4 and 4 5,简

11、洁!,Python快速入门,赋值,数据类型,Python变量名规则与其他编程语言一样,并且大小写敏感 pptname = “Introction to Python” pptName = “Python入门” height = 1.71 age = 26 n = height n *= 100 # 等价于 n = n * 100 五种基本数字类型:int long bool float complex复数 0102 -128 0 x80 -0XA9; 12345678902010L -0 xABCDEF123456L; True False; 3.1415926 -1.2E-14 10. 32

12、.1e10; 6.54+3.21j -1.23+45.6J 0+1j 99-88j -0.142857+0j,Python快速入门,数据类型字符串,字符串:索引操作符 :切片操作符 +连接运算 *重复运算 strPython = Python strIsCool = is cool! strPython0 # 第一个字符 strPython2:5: tho P strIsCool-1 # 最后一个字符 strIsCool:2: is ! strPython + + strIsCool # n:回车 Python is cool! - * 30 -,Python快速入门,数据类型列表、元组、字典

13、,列表(list)和元组(tuple):可以看成普通的“数组” numberList = 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 mixList = Li Shuhao, 26, 1.71 mixTuple = (Python, is, cool) # 元组可以看成只读的列表,如:mixTuple0 = C+, 出错! print mixTuple0, mixTuple1, mixTuple-1 Python is cool 字典(dictionary):由键值对(Key-Value)构成 myDict = name:LiShuhao, height:171, age:26

14、for mKey in myDict: print mKey, myDictmKey # 缩进: Tab,空格,Python快速入门,缩进,while循环语句,if条件语句,缩进:简洁、可读性好 循环语句:while while expression: # expression 条件表达式 while_suite # 根据条件循环执行的语句 条件语句:if elif else if expression1: # 蓝色部分可以单独用 if_suite elif expression2: # 绿色部分可以省略,也可以重复多个 elif_suite else expression3: # 用elif

15、,最后必须有else else_suite # Python没有switch-case,Python快速入门,for循环语句,循环语句:for range()内建函数 Python中的for循环与传统的for循环不太一样,不是计数循环,更像迭代循环,如: for nItem in 123, email, homework: print nItem for nItem in range(5): # range(5)等价于1, 2, 3, 4, 5 print nItem, # print不自动换行方法:加逗号 for nChar in myString: # myString = abc pri

16、nt nChar for i in range(len(myString): # len() 字符串长度 print (%d) % (i), myStringi # 输出:(0) a ,Python快速入门,for循环语句,循环语句:for enumerate()内建函数 # enumerate()突破约束:索引、元素双循环 for i, nChar in enumerate(myString): print (%d) % (i), myStringi 列表解析:for语句 squared = item * 2 for item in range(5) # 0 1 4 9 16 complex

17、Tuple = (item * 2 for item in range(10) if item % 2) # 1 9 25 49 81,Python快速入门,文件操作,文件操作:open() file() readlines() close() handle = open(, access_mode = r) # 默认 r # r:读取;w:写入;a:添加;+:读写;b:二进制访问。 = raw_input(请输入文件名:) hFile = , r) for nLine in hFile: print nLine, h() # close()是文件对象hfile的一个属性 # 属性可以是数据值

18、,也可以是函数和方法,类、模块、文件和复数等都有属性。 # 本示例适用于较小的文件,否则占用内存太大。,Python快速入门,错误处理,错误和异常:try - except # Python编译时会检查语法错误,运行时检测其他错误。 # 当遇到错误,Python解释器就引发异常,并显示详细信息。 try: # 你打算管理的代码段 except IOError, e: print 出错原因, e # 程序员也可以用raise有意引发一个异常,Python快速入门,函数,函数: def function_name(arguments): # 参数可为空,可有默认值 “optional docume

19、ntation string” # 可选的函数说明语句 function_suite # 函数代码段 return fun_obj # 可以没有,自动返回None对象 def addMeToMe(me): # 函数示例:神奇的 + 操作 return (me + me) # 小括号不能省略 print addMeToMe(3.14) # 6.28 print addMeToMe(100) # 200 print addMeToMe(Python) # PythonPython print addMeToMe(-1, abc) # -1, abc, -1, abc,Python快速入门,类,模块

20、,类:相关数据及逻辑的容器,构建创建真实对象的蓝图。 class className(baseClasses): “optional documentation string” # 说明性文字(可选) static_member_declarations # 静态成员定义 method_declarations # 方法定义 模块:一种组织形式,将有联系的代码组织到独立文件中 # 模块可以包含可执行代码、函数和类。 import sys # 导入方法,sys为模块名称 sys.stdout.write(Hello world!) sys.platform # win32 sys.version

21、 # 2.6.5 (r265:79096,Python快速入门,第二章 开启Python之旅,本章主要介绍一些Python的基本知识和一些基本概念的介绍,为后续章节学习相关内容做铺垫。,2.1 “旅行”第一步认识程序,旅行前,我们要先熟悉地名,知道要去哪里,将会经过哪里。学习编程也一样,在学习之前要先了解程序、调试、语法错误、运行错误、语义错误等。,2.1.1 程序,程序是用语言写成的。语言分高级语言和低级语言。 高级语言翻译成机器代码有两种方法:解释和编译。,编译型语言则是将源代码完整的编译成目标代码后才能执行。以后在执行时就不需要编译了。下图显示了一个编译器的结构。这个有点类似我们乘坐的直

22、达车,所有要乘车的人从起点上车,中途不搭载其他乘客。,2.2 数 据 类 型,Python3 中有六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。本节将讲解Number(数字)数据类型,其它五种数据类型由后续相关章节进行介绍。 Python3支持三种不同的数值类型: 整型(int)、浮点型(float)、复数(complex)。,2.2.1 整型,整型(int),通常被称为是整型或整数,是正或负整数,不带小数点。 例如交互模式下输入如下: 51 51 这里使用的就是整型。 整型加法如下: 2

23、5+25 50,整型减法: 51-50 1 整型乘法: 51*2 102 整型除法: 153/51 3.0 155/51 3.03927 此处出现除不尽的情况了。,在整数除法中,除法(/)计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用地板除(/),整数的地板除(/)永远是整数,即使除不尽。 改成如下写法: 153/51 3 155/51 3,地板除(/)只取结果的整数部分,Python还提供一个余数运算,可以得到两个整数相除的余数。如下: 153%51 0 155%51 2,2.2.2 浮点型,浮点型(float),浮点型由整数部

24、分与小数部分组成,浮点型也可以使用科学计数法表示。 先看示例: 3.3*102 336.59999999999997 按预计应该一位小数,但输出结果却有这么多位小数。是因为整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。,如下输入: 3.3*102+15.5 352.997 浮点除法: 153/51.0 3.0 155/51.0 3.03927 浮点地板除: 155/51.0 3.0 155%51.0 2.0,2.2.3 复数,复数( (complex),复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,

25、 复数的实部a和虚部b都是浮点型。 Python支持复数,Python的复数我们当前阶段使用或接触的比较少,此处就不做具体的讲解,读者有一个概念即可,有兴趣可以自行查阅相关资料。,2.2.4 数据类型转换,有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。 关于数据的类型转换,有如下几个函数可以使用: int(x) 将x转换为一个整数。 float(x) 将x转换到一个浮点数。 complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。 complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和

26、y 是数字表达式。,int(x)示例: int(352.1) 352 float(x)示例: float(352.1) 352.1 float(int(352.1) 352.0 这里先把352.1取整得到整数352,再用float将352转换成浮点数352.0,这样就得到我们需要的结果。,2.2.5 常量,所谓常量就是不能变的变量,比如常用的数学常数就是一个常量。在Python中,通常用全部大写的变量名表示常量。 Python中有两个比较常见的常量,分别为:PI和E。 PI:数学常量 pi(圆周率,一般以来表示)。 E:数学常量 e,e即自然常数(自然常数)。 这两个常量将会在后续章节中被使用

27、,具体的用法在使用中进行体现。,2.3 变量和关键字,编程语言最强大的功能之一是操纵变量的能力。变量(variable)是一个需要熟知的概念。如果你觉得数学是让你抓狂的话,别担心,Python中的变量很好理解。变量基本上就是代表某值的名字。,2.3.1 变量,在Python中,变量的使用环境非常宽松。没有 在Python中,等号( = )是赋值语句,可以把任意数据类型赋值给变量。 如下为定义一个名为xiaohong的变量: xiaohong=XiaoHong 此操作解释:xiaohong是我们创建的变量,=是赋值语句,XiaoHong是变量值,需要用引号标记。整句话的意思为:创建变量xiaoh

28、ong并赋值为XiaoHong。(注意:字符串必须以引号标记开始,并以引号标记结束。),打印变量结果: print(xiaohong) XiaoHong 在使用变量前,需要对其赋值,没有值的变量是没有意义的,编译器也不会编译通过。例如我定义一个变量为abc,不赋任何值,输入及结果如下: abc Traceback (most recent call last): File , line 1, in abc NameError: name abc is not defined,同一个变量可以反复赋值,而且可以是不同类型的变量,输入如下: a = 123 123 a=ABC print(a) AB

29、C 这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。和静态语言相比,动态语言更灵活,就是这个原因。,当不能确定变量或数据的类型时,可以借助解释器内置的函数type进行确认。在交互模式下可以如下输入: type(Hello,world!) type(100) type(3.0) a=test type type(a) ,请不要把赋值语句的等号等同于数学的等号。比如下面的代码: a = 100 a = a + 200 在编程语言中,赋值语句先计算右侧的表达式a + 200,得到结果300,再赋给变量a。由于

30、a之前的值是100,重新赋值后,a的值变成300。我们通过交互模式验证,输入如下: a=100 a=a+200 print(a) 300,理解变量在计算机内存中的表示也非常重要。当我们写: a=ABC 时,Python解释器干了两件事情: (1)在内存中创建了一个ABC的字符串; (2)在内存中创建了一个名为a的变量,并把它指向ABC。 也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码: a=ABC b=a a=XYZ print(b) 最后一行打印出变量b的内容到底是ABC呢还是XYZ?如果从数学意义上理解,就会错误地得出b和a相同,也应该

31、是XYZ,但实际上b的值是ABC,让我们一行一行地执行代码,就可以看到到底发生了什么事。,执行a = ABC,解释器创建了字符串ABC和变量a,并把a指向ABC,如下图所示: 执行b = a,解释器创建了变量b,并把b指向a指向的字符串ABC,如图2-4所示: 执行a = XYZ,解释器创建了字符串XYZ,并把a的指向改为XYZ,但b并没有更改,如图2-5所示: 所以,最后打印变量b的结果自然是ABC了。,2.3.2 变量名称,变量名可以是由数字或字符组成的任意长度的字符串,但必须以字母开头。使用大写字母是合法的,但变量名使用小写字母开头是个好主意。python是区分大小写的。举个例子来说,N

32、ame和name是两个不同的变量名。交互模式中输入如下: name=study python is happy Name=I aggree with you print(name) study python is happy print(Name) I aggree with you,下划线“_”可以出现在变量名中。它经常用于连接多个词组。比如happy_study, do_it_with_more_practice。交互模式输入如下: happy_study=stay hungry stay foolish print(happy_study) stay hungry stay foolis

33、h 如果给变量取非法的名称,解释器显示语法错误。请看下面的示例: 2wrongtest=just for test SyntaxError: invalid syntax 该示例提示语法错误,错误信息为无效的语法,原因是它不是以字母开头。 xiaomingme=surprised SyntaxError: cant assign to operator 该示例提示语法错误,错误信息为不能做指定操作,原因为它包含了一个非法字符。, from=from SyntaxError: invalid syntax from是Python的一个关键字。解释器通过关键字来识别程序的结构,并且它们不能用来作为

34、变量名称。 Python3中共有33个关键字: False None True and as assert break class continue def del elif else except finally for from global if import in nonlocal lambda is not or pass raise return try while with yield,2.4 语 句,语句是Python解释器可以运行的一个代码单元,也可以理解为可以执行的命令。我们目前已经使用过了两种语句:print打印语句和赋值语句。 赋值语句有两个作用:一是建立新的变量,二是

35、将值赋予变量。任何变量在使用时,都必须赋值。否则,被视为不存在的变量。 advice=boss,we want have a lunch type(advice) 这个语句中的advice的类型是字符串(str)类型的。,一般的情况下,我们用状态图表示变量的状态。左边是变量的名称,右边是变量值,中间的箭头指向值。状态图显示了赋值语句的最终操作结果。 advice=boss,we want have a lunch money=99999999 spend=1.11111111 如上面几条语句对应的状态图如下图所示:,2.5 表 达 式,表达式是值、变量和操作符的组合。单独一个值也被看作一个表达

36、式。单独的变量也可以看作一个表达式。 表达式和语句一般不容易区分,很多人会将两者混在一起。那么语句和表达式之间有什么区别? 表达式是某事,而语句是做某事,说的通俗点就是告诉计算机做什么。比如3*3是9,而print(3*3)打印出来是9。那么区别在哪里? 比如我们在交互模式下输入如下: 3*3 9 print(3*3) 9,在交互模式下,其结果都是一样的。但这只是因为解释器总是把所有表达式的值打印出来而已(其内部都使用了相同的函数对结果进行呈现,后面会有细致的介绍)。一般情况下,Python不会这么做,毕竟3*3这样的表达式并不能做什么有趣的事情,而编写print(3*3)会有一个显示的。 语

37、句和表达式之间的区别在赋值时会表现的更加明显一些。因为语句不是表达式,所以没有值可供交互式解释器打印出来。比如在交互模式下输入如下: a=100 10*10 100打印出9的结果。 赋值语句输入完成后,下面立刻出现了新的提示输入符。而表达式输入完成后,下面立刻得到了结果。不过对于赋值语句,有些东西已经变了,变量a现在绑定了一个值100。,这个是语句特性的一般定义:它们改变了事物。比如,赋值语句改变了变量,print语句改变了屏幕显示的内容。 赋值语句可能是任何计算机程序设计语言中最重要的语句类型,尽管现在还难以说清它们的重要性。,2.6 运算符和操作对象,运算符和操作对象是计算机中比较常见的,

38、任何的计算,都涉及到运算符和操作对象。本节将介绍Python中的运算符和操作对象。,2.6.1 什么是运算符和操作对象,运算符我知道,我们前面学习的加(+)、减(-)、乘(*)、除(/)、地板除(/)、取余(%)等都是运算符,是一些特殊符号的集合。操作对象就是由运算符连接起来的对象。 Python支持以下8种运算符: (1)算术运算符。(2)比较(关系)运算符。 (3)赋值运算符。(4)逻辑运算符。 (5)位运算符。 (6)成员运算符。 (7)身份运算符。(8)运算符优先级。,2.6.2 算术运算符,以下变量a为10,变量b为5:,交互模式下输入: 2*32/1024/1024/1024 4.

39、0 2*64/1024/1024/10240 2*32是2的32次方,这个就是32位操作系统最大支持的内存的字节数,除以第一个1024是转换为KB,1KB=1024B,除以第二个1024是转换为MB,1MB=1024KB,除以第三个1024是转换为GB,1GB=1024MB。这个结果也就意味着32位的操作系统最大只能支持4GB的内存。现在大家都趋向于选择64位的了,64位的系统能支持多大内存,自己可以算一下。,2.6.3 比较运算符,以下变量a为10,变量b为20:,在一些地方,会看到用1代表True,0代表False,这种是正确也是合理的表示方式,这个大家更多会理解

40、为开和关的意思,就像我们物理中所学习的电流的打开和关闭一样。后面会有更多的地方用到用1和0代表True、False的示例。 另外,在Python2中,有时可能会看到这个符号,其和!=一样,也表示不等于,在Python3中已去除,若以后有看到运算符,那应当使用的是Python2。,2.6.4 赋值运算符,以下变量a为10,变量b为20:,2.6.5 位运算符,按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下。以下变量a为60,变量b为13:,2.6.6 逻辑运算符,Python语言支持逻辑运算符,以下变量a为10,变量b为20:,a=10 b=3 list=1,2,3,

41、4 print(a in list) print (b in list),2.6.7 成员运算符,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。,a=10 b=3 print(a is b) print(a is not b),2.6.8 身份运算符,身份运算符用于比较两个对象的存储单元,2.6.9 运算符优先级,以下表格列出了从最高到最低优先级的所有运算符:,2.7 字符串操作,字符串是 Python 中最常用的数据类型。我们可以使用引号(或)来创建字符串。 字符串可以使用操作符+,但其功能和数学中的不一样,它会进行拼接(concatenation)操作

42、,即将前后两个字符首尾连接起来。 如: string1=hello string2=world print(string1+string2) helloworld,如果想让字符串之间有空格,可以建一个空字符变量,插在相应的字符串之间让它们隔开,或是在字符串中加入相应的空格。交互模式下输入如下: string1=hello string2=world space= print(string1+space+string2) hello world 或者 string1=hello string2= world print(string1+string2) hello world,计算机是美国人发明

43、的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。 在最新的Python 3版本中,字符串是以UTF-8编码的,也就是说,Python3的字符串支持多语言。 Python2中默认的编码格式是ASCII格式,在没修改编码格式时无法正确打印汉字,在读取中文时会报错。Python2使用中文的语法是在字符串前面加上前缀 u。,2.8 注 释,当程序变的更大更复杂时,读起来也更困难。程序的各部分之间紧密衔接,想依靠部分的代码来了解整个程序要做的,是困难的。在现实中,经常会遇到一段代码

44、,很难弄清楚它在做什么、为什么那么做。 因此,在程序中加入自然语言的笔记来解释程序在做什么,是个不错的主意。这种笔记称为注释(comments),注释必须以符号“#”开始。 注释可以单独占一行,也可以放在语句行的末尾。交互模式下输入如下: # 打印1+1的结果 print(1+1) 2 print(1+1) # 打印1+1的结果 2,比如如下的代码中注释与代码重复,毫无用处: r=10 #将10赋值给r 而下面这段代码注释则包含了代码中隐藏的信息,如果不加注释,很难让人看懂这个是什么意思(虽然在实际中可能可以根据上下文判定,但需要浪费不必要的思考时间)。 r=10 #半径,单位是米 选择好的变

45、量名,可以减少注释的需要,但长名字也会让复杂表达式更难阅读,所以这两者之间需要衡量舍取。,2.9 调 试,错误是好的,错误能帮助我们长进。 (1)还记得数字类型转换吗,若用int()转换一个字符,会得到怎样的结果,尝试一下,交互模式下输入如下: int(hello) Traceback (most recent call last): File , line 1, in int(hello) ValueError: invalid literal for int() with base 10: hello 这个是什么意思呢,开动你的大脑,思考一下。,(2)在变量和关键字中,若变量被命名为关键字

46、会怎样,输入如下: class=你好 SyntaxError: invalid syntax (3)在算术运算符中,若被除数为0,结果会怎样,输入如下: 9/0 Traceback (most recent call last): File , line 1, in 9/0 ZeroDivisionError: division by zero 跟我们学习过的数学中的一样,被除数不能为0。,2.10 问题解答,(1)关键字那么多,我都记住吗? 这个可以不用去刻意记忆,随着你逐步的学习,会碰到一些常用关键字,碰多了自然就熟悉了。对于一些不常用的,碰到了再回头看是否是属于关键字。总之,关键字可以在

47、学习和使用中慢慢记忆。 (2)这么多运算符,都需要熟练使用吗? 能熟练使用当然最好了,若不能都熟练使用,也要有所了解,知道怎么使用,在实际解决问题时能知道应该使用什么运算符,该怎么用。当然,也可以碰到具体问题时再详细研究,这也是一个不错的办法。 (3)字符串的操作就只有这么一些吗? 字符串还有很多的操作,这里只是一些简单的入门操作,具体在后面的章节会有详细介绍。,2.11 温故知新,学以致用,1. 回顾数据类型相关概念,整型、浮点型、数据类型转换。 2. 回顾变量和关键字相关概念,并尝试记住这些关键字。 3. 回顾运算符和操作对象,并通过不断调试熟悉各种运算符。 4. 回顾字符串的操作及注释,

48、了解编码方式,尝试写注释。 5. 小萌和小智约定,明天小智送一颗糖给小萌,并从后天起,小智每天送比前一天多一倍的糖给小萌,到第16天(包含这天),小萌一共可以收到多少颗糖? 6. 小萌,运算符都学完了,我来考考你,看看你学的怎样,用4个2以及各种运算符,你能得到最大的数是多少? 7. 结合本章所学,并查阅相关资料,看看下面的代码的输出结果是怎样的,并尝试解释其结果。 habit=Python是一门很有用的编程语言n我想学好它 print(habit) #你认为的结果是 len(habit) #你认为的结果是,练习题,1.#输入a,b,c,d4个整数,计算a+b-c*d的结果 2.#计算一个12

49、.5m*16.7m的矩形房间的面积和周长 3.#怎么得到9/2的小数结果 4.#python计算中7*7*7*7.可以有多少种写法,1.#输入a,b,c,d4个整数,计算a+b-c*d的结果 a=input(please input a nimber:) b=input(please input a number:) c=input(please input a number:) d=input(please input a number:) print (a+b-c*d) ?注意类型转换 int() 输出结果: please input a nimber:3 please input a n

50、umber:3 please input a number:3 please input a number:3 -3,2.#计算一个12.5m*16.7m的矩形房间的面积和周长 a=12.5 b=16.7 s=a*b c=a+a+b+b print 面积是%f,周长是%f%(s,c) 输出结果是 面积是208.750000,周长是58.400000 3.#怎么得到9/2的小数结果 float(9/2) 4.0,第一种: 7*7*7*7 2401 第二种: pow(7,4) 2401 第三种: 7*4 24401 第四种: eval(%s*%s*%s*%s%(7,7,7,7) 2401 eval

51、参数是一个字符串, 可以把这个字符串当成表达式来求值,第三章 列表和元组,本章将引入一个新的概念:数据结构。数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或者字符。在Python中,最基本的数据结构是序列(sequence)。Python包含6种内建的序列,即列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。本章重点讨论最常用的两种:列表和元组。,3.1 通用序列操作,在讲解列表和元组之前,本节先介绍Python中序列的通用操作,这些操作在列表和元组中都会用到。 Python中所有序列都可以进行某些特定的操作,这些操作包括

52、:索引(indexing)、分片(sliceing)、序列相加(adding)、乘法(multiplying)、成员资格、长度、最小值和最大值。本节首先讲解对所有序列(包括元组和列表)都通用的操作。,3.1.1 索引,序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字,代表它在序列中的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 序列中所有的元素都是有编号的从0开始递增。可以通过编号分别对序列的元素进行访问。,通过编号来取元素: greeting=Hello #定义变量greeting,并赋值Hello greeting0 #根据编号取元素,使用格式为在中括号中输

53、入所取元素编号值 H greeting1 e greeting2 l 序列中的元素是从0开始从左向右依自然顺序编号的,对元素的访问可以通过编号访问。获取元素的方式为变量后面跟上中括号,中括号中输入所取元素的编号值,这个格式需要记住。 这里的所指的编号就是索引,可以通过索引获取元素。所有序列都可以通过这种方式进行索引。,交互模式下输入如下: greeting-1 o greeting-2 l greeting-3 l greeting-4 e Python的序列也可以从右边开始索引,最右边的一个元素的索引为-1,向左开始递减。 在Python中,从左向右索引称为正数索引,从右向左称为负数索引。使

54、用负数索引时,Python会从最后1个元素开始计数。最后一个元素的位置编号是-1。 最后一个元素的编号不是-0,这个跟数学中的概念一样的,-0=0,-0和0都是指向第一个元素。,3.1.2 分片,索引用来对单个元素进行访问,使用分片可以对一定范围内的元素进行访问,分片通过冒号相隔的两个索引来实现。在交互模式输入如下: number=1,2,3,4,5,6,7,8,9,10 number1:3 #取索引为第一和第二的元素 2, 3 number-3:-1 #负数表明是从右开始计数,取得倒数第三和倒数第二的元素 8, 9 分片操作既支持正数索引,也支持负数索引,并且分片操作对于提取序列的一部分是很

55、方便的。,分片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在分片内的,第二个则不包含在分片内。 number=1,2,3,4,5,6,7,8,9,10 number-3,-1 8, 9 试试使用索引0作为最后一个元素的下一个元素,输入如下: number-3:0 -3代表的是倒数第三个元素,0则代表的是第一个元素,倒数第3个比第一个晚出现,既比第一个排在更后面,所以得到的结果是空序列。, number0: #从第一个元素开始输出,输出全部结果 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 number:0 #最后一个元素为第一个,输出为空 number:3 #取得前

56、3个元素 1, 2, 3 若需要输出整个序列,可以将两个索引都设置为空。输入如下: number: #取得整个数组 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,进行分片的时候,分片的开始和结束点都需要指定(不管是直接还是间接),用这种方式取连续的元素是没有问题的,但是若要取序列中不连续的元素就会比较麻烦了或是不能操作。比如要取序列number中的所有奇数,以一个序列展示出来,用前面的方法就不能实现了。 对于这种情况,Python为我们提供了另外一个参数步长(step length),该参数通常是隐式设置的。在普通的分片中,步长是1分片操作就是按照这个步长逐个遍历序列的元素,遍历

57、后返回开始和结束点之间的所有元素,也可以理解为默认步长是1,既没有设置步长时,步长隐式设置值为1。,输入如下: number0:10:1 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 分片包含了另外一个数字。这种方式就是步长的显式设置。这个看起来和隐式设置步长没有什么区别,得到结果和之前也是一样的。但是若将步长设置为比1大的数,那结果会怎样呢?输入如下: number0:10:2 1, 3, 5, 7, 9 由上面输出结果我们看到,对于number序列,设置步长为2时,得到的结果就是我们前面想要的奇数序列。 步长设置为大于1的数,那会得到一个跳过某些元素的序列。例如我们上面设置的

58、步长为2,得到的序列是从开始到结束每隔1个的元素序列。,比如还可以如下进行使用: number0:10:3 1, 4, 7, 10 number2:6:3 3, 6 number2:5:3 3 number1:5:3 2, 5 对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素;而对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素。正数步长,必须让开始点小于结束点;而负数步长,则必须让开始点大于结束点。,3.1.3 序列相加,通过使用加号可以进行序列的连接操作,输入如下: 1,2,3+4,5,6 1, 2, 3, 4, 5, 6 a=1,2 b=5,6

59、a+b 1, 2, 5, 6 s=hello, w=world s+w hello,world,数字序列可以和数字序列通过加号连接,连接后的结果还是数字序列,字符串序列也可以通过加号连接,连接后的结果还是字符串序列。那数字序列是否可以和字符序列相加呢?结果是怎样的,是数字序列还是字符串序列?,输入如下: 1,2+hello Traceback (most recent call last): File , line 1, in 1,2+hello TypeError: can only concatenate list (not str) to list type(1,2)# 取得1,2的类型为list type(hello)# 取得hello的类型为字符串 数字序列和字符串序列是不能通过加号连接的。 只有类型相同的序

温馨提示

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

评论

0/150

提交评论