#判断用户输入数字的奇偶性
#判断用户输入数字的特定 print("这是个数既能被3整除,又能被5整除")
#判断用户输入数字的某个属性 print("这个数字不能够同时被3和5整除")
#判断用户输入数字的某个属性
1 #将百分制成绩转换为五分制成绩
输入80分会显示显然D,显然百分制80分不应该是等级D,上述代码运行正确但逻辑存在错误,弄错了多个逻辑条件的先后关系
1 #将百分制成绩转换为五分制成绩
当执行正常程序语句块1发生异常时,则执行excpet保留字后面的语句块2
实例4.2——增加异常处理,增加程序鲁棒性。
输入一个年份,输出是否为闰年。#闰年条件:能被4整除但不能被100整除,或者 能被400整除的年份都是闰年。
最大公约数计算。获得两个整数,求出这两个整数的最大公约数和最小公倍数。最大公约数的计算一般使用辗转相除法,最小公倍数则使用两个数的乘积除以最大公约数。
统计不同字符个数。用户从键盘键入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数。
猜数游戏续。当用户输入的不是整数(如字母、浮点数等),时,程序会终止执行退出。改编题目1中的程序,当用户输入出错时给出“输入内容必须为整数!”的提示,并让用户重新输入。
羊车门问题。有三扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:参赛者更换选择后能否增加猜中汽车的机会?——这是一个经典问题。请使用random库对这个随机事件进行预测,分别输出参赛者改变选择和坚持选择获胜的概率。
定义一个对整数n求阶乘的函数
#定义一个对整数n求阶乘的函数
调用函数的基本方法正如下:
1 #定义一个对整数n求阶乘的函数 7 #调用整数阶乘的函数
当函数存在多种结束条件时,将使用多个return语句,例如。
局部变量仅在函数内部,且作用域也在函数内部。全局变量的作用域跨越多个函数。
局部变量指在函数内部定义的变量,仅在函数内部有效。
变量z是函数multiple()内部使用的变量,当函数调用后,变量z将不存在。
全局变量在函数内部使用时,需要提前使用保留字global声明。
使用函数对程序合理划分为功能模块,并基于模块设计程序是一种常用方法,被称谓“模块化设计”。从系统观点来看,松耦合是总体设计原则。
修改函数linePrint(),当一个短句字数超过限制时,分行居中显示。
实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回Ture,否则返回False。
实现isPrime()函数,参数为整数,要有异常处理。如果整数是质数,返回Ture,否则返回False。
编写一个函数计算传入字符串中数字、字母、空格以及其他字符的个数。
1 #编写一个函数计算传入字符串中数字、字母、空格以及其它字符的个数
编写一个函数,打印200以内的所有素数,以空格分割。
#编写一个函数,打印200以内的所有素数,以空格分隔
编写一个函数,参数为一个整数n。利用递归获取斐波那契数列中的第n个数并返回。
因此,无论词是否在字典中,加入字典counts中的处理逻辑可以统一表示为:
或者,这个处理逻辑可以更简洁地表示为如下代码:
该实例的第三步是对单词的统计值从高到低进行排序,输出前10个高频词语,并格式化打印输出。由于字典类型没有顺序,需要将其转换为有顺序的列表类型,再使用sort()方法和lambds函数配合实现根据单词次数对元素进行排序。最后输出排序结果前10位的单词。
lambda用于定义一种匿名函数,住sort()用来根据第二列进行排序。
英文字符频率统计。编写一个程序,对给定字符串中出现的a~z字母频率进行分析,忽略大小写,采用降序方式输出。
中文字符频率统计。编写一个程序,对给定字符串中出现的全部字符(含中文字符)频率进行分析,采用降序方式输出。
随机密码生成。编写程序在26个字母大小写和9个数字组成的列表中随机生成10个8位密码。
重复元素判定。编写一个函数,接收列表作为参数,如果一个元素在列表中出现了不止一次,则返回True,但不要改变原来列表的值。同时编写调用这个函数和输出测试结果的程序。(这个得用Ctrl+C结束运行)
重复元素判定续。利用集合的无重复性改编上一个程序,获得一个更快更简洁的版本。
①一个文本文件a.txt,采用文本方式打开。需要将文本文件与Python程序文件放在同一个目录中。
②文本文件a.txt采用二进制方式打开。
‘r’ 只读模式,如果文件不存在,返回异常FileNotFoundError,默认值
‘w’ 覆盖写模式,文件不存在则创建,存在则完全覆盖原文件
‘x’ 创建写模式,文件不存在则创建,存在则返回异常FileExisisError
‘a’ 追加写模式,文件不存在则创建,存在则在原文件最后追加内容
‘b’ 二进制文件模式
‘t’ 文本文件模式,默认值
‘+’ 与r/w/x/a一同使用,在原功能基础上增加同时读写功能
f.read(size=-1) 从文件中读入整个文件内容。参数可选,如果给出,读入前size长度的字符串或字节流
f.readline(size=-1) 从文件中读入一行内容。参数可先,如果给出,读入该行前size长度的字符串或字节流
f.readlines(hint=-1) 从文件中读入所有行,以每行为元素形成一个列表。参数可先,如果给出,读入hint行
f.seek(offset) 改变当前文件操作指针的位置,offset的值:0为文件开头;2为文件结尾
f.write(s) 向文件写入一个字符串或字节流
f.writelines(lines) 将一个元素为字符串的列表整体写入文件
一维数据采用线性方式组织,对应于数学中数组的概念。
二维数据,采用二维表格方式组织,对应于数学中的矩阵。
高维数据由键值对类型的数据构成,采用对象方式组织,可以多层嵌套。
一维数据是最简单的线性结构的数据组织类型,在Python语言中主要采用列表形式表示。
⑴空格分隔;⑵逗号分隔;⑶换行分隔;⑷其他特殊符号分隔。
CSV格式是一种通用的、相对简单的文件格式,大部分编辑器都支持直接读入或保存文件为CSV格式。
一维数据保存成CSV格式后,各元素采用逗号分隔,形成一行。
列表对象输出为CSV格式文件方法如下,采用字符串的join()方法最为方便。
程序执行后生成的city.csv文件内容如下:
从CSV格式文件读入一维数据,并将其表示为列表对象。
从CSV文件中获得内容时,最后一个元素后面包含了一个换行符(”\n”),需要采用字符串的strip()方法去掉数据尾部的换行符,进一步使用split()方法以逗号进行分割。
程序执行后列表对象ls的内容如下。
二维数据由多个一维数据构成,可以采用二维列表来表示。
二维数据一般采用相同的数据类型存储数据。
本例中数值所在行或列不都是数字,存在字符文本,因此,将数值统一表示为字符串形式。
二维数据由一维数据组成,用CSV格式文件存储。CSV文件的每一行是一维数据,整个CSV文件是一个二维数据。cpi.csv:
二维列表对象输出为CSV格式文件:
对二维数据进行处理首先需要从CSV格式文件读入二维数据,并将其表示为二维列表对象。
程序执行后二维列表对象ls的内容如下。
对二维数据进行格式化输出,打印成表格形式:
经过再次循环遍历,二维数据的所有元素都将被处理,输出效果如下:
parseCSV()用来解析CSV文件,从中读取数据,并把数据表示为列表类型。其中需要关注的代码如下:
这是for循环的一种紧凑形式,它指的是从splitedLine[1:]中逐一取出元素x,并对该元素执行表达式int(x[:-1])。这种紧凑形式对简化代码整体逻辑十分有益。
means()用来计算所有数据的均值。
linearRegression()用来根据xlist和ylist列表计算线性回归值。其中需要关注的是zip()函数的使用,代码如下。使用zip()可以同时对xlist和ylist进行同步遍历,每次取出各自一个元素x和y,并进行关联操作。
showResults()集中展示运行结果,重点在于格式化输出。
main()代表该程序的主逻辑部分,包括预分配列表变量、调用各步骤或流程函数等。
⒈输入一个文件和一个字符,统计该字符在文件出现的次数。
(提前准备好一个文本文件,放在此代码文件相同目录(文件夹)内)
⒉假设有一个英文文本文件,编写一个程序读取其内容并将里面的大写字母变成小写字母,小写字母变成大写字母。
⒊编写一个程序,生成一个10×10的随机矩阵并保存为文件(空格分隔行向量、换行分隔列向量),再写程序将刚才保存的矩阵文件另存为CSV格式,用Excel或文本编辑器打开看看结果对不对。
⒋编写一个程序,读取一个Python源代码文件,将文件中所有除保留字外的小写字母换成大写字母,生成后的文件要能够被Python解释器正确执行。
⒌编写一个程序,要求能够将元素为任意Python支持的类型(包括含有半角逗号的字符串)的列表转储为CSV,并能够重新正确解析为列表。
“体育竞技分析”的实例
步骤1:打印程序的介绍性信息;
步骤2:获得程序运行需要的参数:probA,probB,n;
步骤3:利用球员A和B的能力值probA和probB,模拟n次比赛;
步骤4:输出球员A和B获胜比赛的场次及概率。
①顶层设计一般不写出具体代码,仅给出函数定义
②获得用户输入,假设程序调用了getInputs()函数,获取变量probA、probB、和n的值,这个函数必须为主程序返回这些值。
getInputs()函数根据提示得到3个需要返回主程序的值
simNGames()函数是整个程序的核心,其基本思路是模拟n场比赛
gameOver()函数,当任意一个球员分数达到15分时比赛结束。
将上述所有代码放在一起,形成了实例全部代码
整体设计逐渐向下进行。每一层以大体算法描述开始,然后逐步细化成代码,细节被函数封装,整个过程可以概括为4个步骤:
步骤1:将算法表达为一系列小问题;
步骤2:为每个小问题设计接口;
步骤3:通过将算法表达为接口关联的多个小问题来细化算法;
步骤4:为每个小问题重复上述过程。
可以对gameOver()函数进行单元测试