注意:教程中给出的所有示例代码请勿直接拷贝使用!会引起不必要的错误! Python基础教程 信息管理学院 李季 注意:教程中给出的所有示例代码请勿直接拷贝使用!会引起不必要的错误!
主要内容 Python简介与安装 第一个Python程序 运算表达式构造 函数概念与公用函数 标准输入与输出 流程控制语句 通过命令行交互方式 通过集成开发环境 运算表达式构造 数据、运算符、变量与运算次序 函数概念与公用函数 标准输入与输出 流程控制语句 用户自定义函数和基本数据结构-列表
流程控制语句 分支选择结构 循环结构 二重分支选择结构 多重分支选择结构 while循环 for循环 一般情况下,程序语句是从上到下依序执行。 流程控制语句的作用:是让机器有选择地执行一些代码或重复执行某些代码
流程控制语句 单分支选择结构的实现 用if语句可实现 例如若用户年龄(age)达到 18岁,打印”adult”的程序: P A 单分支选择结构的实现 用if语句可实现 如果判断条件P结果为True,则执行 语句块A,否则什么也不做 例如若用户年龄(age)达到 18岁,打印”adult”的程序: 根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做 条件表达式P age = 20 if age >= 18: print ('your age is', age) print ('adult‘) #if语句之后的冒号不可缺少 语句块A
流程控制语句 二分支选择结构的实现 如右图表示 用if…else…语句实现 F T 条件 A B 如果判断条件P是True,执行语句块A; 否则执行语句块B 用if…else…语句实现 若用户年龄达到18,打印’adult’;否则打印’teenager’ age = 3 if age >= 18: print('your age is', age) print('adult' ) else: print('teenager' ) 根据Python的缩进规则,如果if语句判断是True,就把if语句下缩进的两行print语句执行了,否则,执行else语句下的缩进语句块 语句块A 语句块B 注意:缩进语句之前的冒号不可缺少
练习 编写Python程序,由用户输入两个整数a,b;打印输出a,b中较大的数 画流程图 编写Python程序实现
流程控制语句 多重分支选择结构的实现 用if…elif…<elif>…else…语句实现 if <条件P1>: 执行A1 elif <条件P2>: 执行A2 elif <P3>: 执行A3 #其他elif分支… else: 执行An 多重分支选择结构的实现 用if…elif…<elif>…else…语句实现 lif是else if的缩写,完全可以有多个 elif,所以if语句的完整形式如右图 条件P1满足时执行A1 条件P1不满足而条件P2满足时执行A2 条件P1不满足、P2不满足而条件P3满足时执行A3 … 所有条件都不满足时,执行An F T P1 A1 A2 P2 An … A3 P3
流程控制语句 可以这样写吗? 多重分支选择结构示例 若年龄(age)达到18,打印’adult’;年龄在[6,18)之间的打印’teenager’;年龄小于6的则打印’kid’,程序如下: age = 20 if age >= 18: print(‘your age is’, age) print 'adult' elif age >= 6: print(‘your are a teenager’) else: print (‘you are a kid') age = 20 if age >= 6: print(‘your are a teenager’) elif age >= 18: print(‘your age is’, age) print 'adult' else: print (‘you are a kid') 可以这样写吗? 注意:缩进语句之前的冒号不可缺少
练习 编写Python程序,对用户输入的成绩m,打印输出相应评语 m>=90的给“优秀” 80<=m<90的给“良好”
流程控制语句 循环结构——while循环 while语句在条件为真的时重复执行循环体中的语句块,直到条件为假,其一般形式如下: 例如,打印数字1到9的代码如下: while <条件>: 循环体语句块 F T 条件 循环体 当型循环结构 a = 1 while a < 10: print (a) a += 1
流程控制语句 循环结构——for循环 for语句通过循环变量遍历某一序列中每个元素来实现对循环体的重复执行 一般形式: x为循环变量 元素序列一般通过range产生,也可以存放在列表中 for x in 元素序列: 循环体
流程控制语句 循环结构——for循环 元素序列如果是等差序列可通过函数range() 产生 range()的一般形式 range(stop) –表示从0开始直到stop-1的公差为1的自然数序列 range(5) 产生0,1,2,3,4的等差序列(缺省的起始值为0) range(start, stop[, step]) —表示从start开始,公差为step(缺省时为1)的,最大不超过stop-1的自然数序列 range(6,14,2)产生序列6,8,10,12
流程控制语句 循环结构——for循环示例: 用for循环求解1到100的自然数累加和并打印结果 s=0 for k in range(1,101): s=s+k print("sum is:",s) 循环是让计算机做重复任务的有效的方法,有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程。
练习 连续打印输出a~z共26个英文字母 求和S=1+1/2+1/3+ … +1/30 提示:可令c=‘a’,那么 函数ord(c)返回c中字符的ASCII码, 函数chr(k)返回ASC码为整数k的字符 a~z的ASCII码有连续增长规律 画流程图 编写Python程序实现
流程控制语句 循环结构——break和continue语句 while True: #循环条件永远为真 s = input('Enter something : ') if s == 'quit': #输入quit时终止程序执行 break print('Length of the string is', len(s)) print ('Done')
流程控制语句 循环结构——break和continue语句 continue语句用来直接跳过当前循环体中的剩余语句,继续执行下一轮循环。 while True: s = input('Enter something : ') if len(s) < =3: #当输入长度不超过3时,提示重新输入 print('Input is of sufficient length') continue if s == 'quit': break
流程控制语句 分支结构与循环结构的嵌套使用 情况1:分支结构的语句块包含分支结构 情况2:分支结构的语句块包含循环结构 多分支结构 情况2:分支结构的语句块包含循环结构 情况3:循环体中包含分支结构 情况4:循环体中包含循环结构
流程控制语句 分支结构与循环结构的嵌套使用 例1:打印1000之内能被7整除的正整数 x=1 F T x能被7整除? 结束 开始 打印x 循环体中包含单分支结构
流程控制语句 分支结构与循环结构的嵌套使用 例1:打印1000之内能被7整除的正整数 print(“1000之内能被7整除的正整数:”) for k in range(1,1001): if(k%7==0): print(k) print(“Done!”);
流程控制语句 分支结构与循环结构的嵌套使用 练习 输出100~200之间所有能被5整除又能被3整除的数值 画流程图 编写Python程序实现
流程控制语句 循环结构与循环结构的嵌套使用 例2:打印输出以下数字三角形 m=9 结束 开始 n=1 不换行打印n n=n+1 换行 n<=m 不换行打印n n=n+1 换行 m=m-1 F T 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1
流程控制语句 或 循环结构与循环结构的嵌套使用 例2:打印输出以下数字三角形 m=9 while(m>=1): n=1 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1 m=9 while(m>=1): n=1 while(n<=m): print(n, end=“”) #不换行打印 n=n+1 print(‘\n’) #打印换行 m=m-1 或 for m in range(9,0,-1): for n in range(1,m+1,1): print(n, end=“”) print(‘\n’)
基本数据结构—列表 列表(list)是Python内置的数据结构之一:list。 列表中元素的索引编号(从0开始编号) 1 2 3 4 5 6 … People Mike 36 True 列表名称 列表中元素个数可以增加减少,当前长度(元素个数)可用函数len()返回 列表中元素类型可以不同:字符串、数、布尔值或另一个列表等
基本数据结构—列表 使用列表示例 创建姓名列表classmates,用 […]给出初始元素 创建空列表 用len()函数可以获得list中元素的个数 用索引标记符[]来访问list中指定位置的元素,注意索引是从0开始的 索引超出了范围时,Python会报一个IndexError错误,注意最后位置上的元素其索引为len(…)-1
基本数据结构—列表 使用列表示例 更改列表classmates中的元素 添加元素到列表末尾(用append方法) 直接通过赋值更改指定元素值
基本数据结构—列表 使用列表示例 在列表中任意位置插入新元素(用insert方法) 形式为: 列表名.insert (位置索引,新元素) 在列表位置1处插入”bob” 列表中原来在位置1上的元素以及之后的元素全部后移一位
基本数据结构—列表 使用列表示例 删除列表末尾元素(用pop()方法) 删除列表中指定位置元素(用pop(i)方法) 列表名.pop (i) #删除位置i上的元素并返回元素值 删除末尾元素’john’ 删除索引位置1上的元素’bob’ 其后的元素都向前移动1个位置
练习A 通过列表接收用户在命令行上输入的10个整数,然后找出列表中最大数,并将最大数的位置调整到列表末尾。 画流程图 编写Python程序实现
用户自定义函数 Python还允许用户自己定义函数来实现代码的重用 其格式如下 说明: def 函数名([参数列表]): 语句1 #注意缩进 最后缩进结束时,表示函数定义结束。 参数列表和return 语句不是必须的,return后面的表达式用于给出函数返回值。可以是多个参数 函数内部使用的变量,不影响外部的变量,即使变量同名。 def 函数名([参数列表]): 语句1 #注意缩进 语句2 #注意缩进 …… 语句n #注意缩进 [retrun [表达式]] #注意缩进
用户自定义函数 示例:根据学生成绩返回相应等级的函数 函数必须先定义 后才能使用 # Return the grade for the score def getGrade(score): if score>100 or score<0: return ‘成绩错误' elif score >= 90.0: return ‘优秀' elif score >= 80.0: return ‘良好' elif score >= 70.0: return ‘中等' elif score >= 60.0: return ‘及格' else: return ‘不及格‘ print(getGrade(55)) print(getGrade(66)) print(getGrade(96)) 示例:根据学生成绩返回相应等级的函数 函数必须先定义 后才能使用 定义函数时,要明确参数数量和位置。调用者调用函数时,只需要知道如何正确传递参数和函数将返回什么样的值就够了,无需了解内部实现的细节。
练习B 设计一个用户自定义函数mymax,用于求出一个整数列表中最大整数的位置。 应用自定义的函数mymax完成练习A中的计算任务