Python 复习题.docx
- 文档编号:23064224
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:56
- 大小:332.57KB
Python 复习题.docx
《Python 复习题.docx》由会员分享,可在线阅读,更多相关《Python 复习题.docx(56页珍藏版)》请在冰豆网上搜索。
Python复习题
Python复习题
Python语法基础小结(2010-09-08)
1python的基础数据类型
类型
类型名
例子
整数
int
1,-5,0xab
实数
float
2.3,7.8E10
字符串
str
“abcd”,‘你好’
逻辑
bool
TrueFalse
2运算符
+加法,字符串联接,数组融合
-减法
*乘法,字符串级联
/实数除法
//整除
%求余数
**求幂
in判断元素是否在序列类型中
forxin序列类型:
序列类型遍历
and并且
or或者
not不是
比较运算符:
<><=>=!
===
赋值语句
=
+=-=*=/=%=
3if语句
格式一
if条件:
如果条件成立执行本段代码
else:
如果条件不成立执行本段代码
格式二
if条件:
如果条件成立执行本段代码
格式三
if条件1:
如果条件1成立执行本段代码
elif条件2:
如果条件2成立执行本段代码
elif条件3:
如果条件3成立执行本段代码
else:
如果以上条件都不成立执行本段代码
4for循环
foriin序列类型:
对于序列类型的每一个元素执行本段代码
例一:
求数组元素平均的程序
#coding=gbk
#求数组元素的平均值
x=[1,2,3,4.6,7.1]
s=0
foriinx:
s=s+i
a=s/len(x)
print("x=",x)
print("共",len(x),"个元素")
print("总和=",s)
print("平均值=",a)
x=[1,2,3,4.6,7.1]
共5个元素
总和=17.7
平均值=3.54
例2:
求1+2+3+...+100=?
#coding=gbk
#求1+2+3+...+100=?
s=0
foriinrange(1,100+1):
s=s+i
print("1+2+3+...+100=",s)
1+2+3+...+100=5050
例3:
求1+3+5+7...+99=?
#coding=gbk
#求1+3+5+7+...+99=?
s=0
foriinrange(1,99+1,2):
s=s+i
print("1+3+5+7+...+99=",s)
1+3+5+7+...+99==2500
例4:
求10+9+8+7+…..+1=?
#coding=gbk
#求10+9+8+7+…+1=?
s=0
foriinrange(10,0,-1):
s=s+i
print("10+9+8+7+…..+1=",s)
10+9+8+7+…..+1=55
例5:
求数组[10,8,-1,100,200,35]的最大元素---方法一
#coding=gbk
#求数组[10,8,-1,100,200,35]的最大元素
x=[10,8,-1,100,200,35]
mx=x[0]
foriinrange(0,len(x)):
ifmx mx=x[i] print("x=",x) print("最大元素=",mx) x=[10,8,-1,100,200,35] 最大元素=200 例6: 求数组[10,8,-1,100,200,35]的最大元素---方法二 #coding=gbk #求数组[10,8,-1,100,200,35]的最大元素 x=[10,8,-1,100,200,35] mx=x[0] foryinx: ifmx mx=y print("x=",x) print("最大元素=",mx) x=[10,8,-1,100,200,35] 最大元素=200 5while循环 格式: while条件: 当条件成立时,一直执行本段 如果条件成立,一直执行后面的“语句块”, 这意味着,您需要在(循环体的)语句块中于适当的时候改变条件表达式中的某个(或某些)变量,或者使用break中止循环。 while与if的不同是: if条件: 如果条件成立,执行一次本段代码 而while则是,一直重复执行那段代码,直到,条件不满足时为止。 场景一 场景二 狄仁杰说道: 我只问你一个问题,说了就放你走。 。 。 。 。 山无陵,天地合,乃敢与君绝! if说了: 就放你走 whilenot(山无陵,天地合): 与君一直在一起 例1: 求数组[10,8,-1,100,200,35]的最大元素---方法三 #coding=gbk #求数组[10,8,-1,100,200,35]的最大值 x=[10,8,-1,100,200,35] mx=x[0] i=0 whilei ifmx mx=x[i] i=i+1 print("x=",x) print("最大元素=",mx) x=[10,8,-1,100,200,35] 最大元素=200 例2: 求数组[10,8,-1,100,200,35]的最大元素---方法四 #coding=gbk #求数组[10,8,-1,100,200,35]的最大值 x=[10,8,-1,100,200,35] mx=x[0] i=len(x)-1 whilei>=0: ifmx mx=x[i] i=i-1 print("x=",x) print("最大元素=",mx) x=[10,8,-1,100,200,35] 最大元素=200 死循环的用法 例3: 求数组[10,8,-1,100,200,35]的最大元素---方法五 #coding=gbk #求数组[10,8,-1,100,200,35]的最大值 x=[10,8,-1,100,200,35] mx=x[0] i=len(x)-1 whileTrue: ifmx mx=x[i] i=i-1 ifi<0: break#结束循环的执行 print("x=",x) print("最大元素=",mx) x=[10,8,-1,100,200,35] 最大元素=200 练习题: 将下面数组中的奇数变成它的平方,偶数保持不变. X=[1,2,3,4,8,7,22,33,88] #coding=gbk #将下面数组中的奇数变成它的平方,偶数保持不变 x=[1,2,3,4,8,7,22,33,88] print("x=",x) foriinrange(0,len(x)): if(x[i]%2)! =0: #如果第i个元素是奇数 x[i]=x[i]*x[i] print("变换后,x=",x) x=[1,2,3,4,8,7,22,33,88] 变换后,x=[1,2,9,4,8,49,22,1089,88] 第2章函数 2.1系统内建函数 系统内核提供了许多基本的常用函数, 例如: ord()求字符的编码,chr()将字符编码转化为字符。 等 (1)ord(字符)返回值: int类型 ord("A")的值是65 ord("0")的值是48 ord("a")的值是97 ord("b")的值是98 ord("你")的值是20320 一个汉字是一个字符(说明: 在pyhon2.6以前一个汉字是两个字符) (2)chr(编码)由字符编码转化为字符 chr(65)的值是"A" chr(66)的值是"B" chr(97)的值是"a" chr(48)的值是"0" chr(20320)的值是"你" (3)hex(整数)将整数转化为16进制字符串 hex(17)的值是'0x11' hex(19491001)的值是'0x12968b9' hex(-65)的值是'-0x41' 请注意: python负数的十六进制字串与C语言表示方法不同 (4)int(字符串)将字符串转化为整数 将字符串按十进制转换为整数 int(“123”)的值是123 int(“-65”,10)的值是-65 将字符串按十六制转换为整数 int(“123”,16)的值是291 int(“-65”,16)的值是-101 int(“0x11”,16)的值是17 说明: int(字符串,进制) 进制的取值范围是2,4,8,10,16,32,默认值是10 (5)求序列类型元素的个数 len([1,2,8,-6])的值是4 #这是求数组元素的个数 len("abc你12")的值是6 #这是求字符串中字符的个数 (6)求变量、常数、表达式的类型 type(表达式)返回表达式的类型 (6.1)判断一个表达式是否为整数的方法: iftype(x)==int: ….. (6.2)判断一个表达式是否为实数的方法: iftype(x)==float: (6.3)判断x是否为数: 整数或实数 if(type(x)==float)or(type(x)==int): ….. 还可以写作: if(type(x)in[float,int]): ….. (7)abs求整数或实数的绝对值 abs(x) x是整数时,返回的是整数 x是实数时,返回的是实数 更多系统函数在以后章节介绍 2.2函数的定义 到目前为止,我们用的都是Python定义的函数。 这些Python内置的函数,其定义部分对我们来说时透明的。 因此,我们只关注这些函数的用法,而不必关心函数是如何定义的。 我们也可以创建自己的函数,来执行特定的操作。 函数的定义形式如下: def函数名(arg1,arg2,...argN): 语句 函数的名字也必须以字母开头,可以包括下划线“_”,但不能把Python的关键字定义成函数的名字。 (1)函数内的语句数量是任意的(至少一条语句) (2)函数内的每个语句至少有一个空格的缩进,以表示此语句属于这个函数的。 (3)缩进结束的地方,函数自然结束。 (4)函数如果有返回值,用return表达式语句。 例: 求阶乘的函数 #coding=gbk #ex0908-09-求阶乘的函数 函数的文档 deffact(n): """求阶乘的函数fact(n) n: >=0的自然数 返回值: n! """ f=1 foriinrange(1,n+1): f=f*i returnf print("5! =",fact(5)) 5! =120 在fact函数中: n是形式数, f,i是函数fact的局部变量, returnf是函数的返回值,5是调用函数 fact的实际参数。 2.3函数的形式参数与实际参数 让我们看下面的例子: #coding=gbk deftest(x1,x2): #x1,x2是形式参数 x1=x1*x1 x2=x2*x2 y=x1+x2#y是局部变量 returny a1=2 a2=3 b=test(a1,a2) #a1,a2是实际参数 print("a1,a2=",a1,a2) print("b=",b) a1,a2=23 b=13 在这个例子中: 函数test有两个形式参数: x1和x2。 变量a1和a2是函数的实际参数。 调用test(a1,a2)时,把实际参数a1、a2的值分别传递给形式参数x1、x2,虽然形式参数x1,x2的值在函数内部被改变了,而实际参数a1,a2没有被改变。 2.4序列类型之元组(tuple) 将几个量用逗号隔开,用一对园括号括起来,就形成一个元组。 例如: (1,2,“abc”) 用途: x,y,z=(1,2,3)#这一句叫作元组的解包。 执行该语句后,x=1;y=2;z=3。 实际应用中,在不产生二义性的时候,可以省略园括号。 例如: name,sex,age=“张三”,“男”,58 2.5元组作为函数的返回值 当我们需要从函数中返回多个值时,可以使用元组作为返回值。 #coding=gbk #求序列类型的最大元素和最小元素 #入口: v序列类型 #返回: (最大元素,最小元素) defgetMaxMin(v): big=v[0] small=v[0] foriinrange(0,len(v)): ifbig big=v[i] ifsmall>v[i]: small=v[i] returnbig,small #---应用举例---- a=[1,2,0,5,10] x,y=getMaxMin(a) print("a=",a) print("最大元素=",x,"最小元素=",y) a=["张三","李四","王五","艰苦奋斗"] x,y=getMaxMin(a) print("a=",a) print("最大元素=",x,"最小元素=",y) a="满清皇帝听说这双刀之中有一个能无敌於天下的大秘密" x,y=getMaxMin(a) print("a=",a) print("最大元素=",x,"最小元素=",y) a=[1,2,0,5,10] 最大元素=10最小元素=0 a=['张三','李四','王五','艰苦奋斗'] 最大元素=艰苦奋斗最小元素=张三 a=满清皇帝听说这双刀之中有一个能无敌於天下的大秘密 最大元素=这最小元素=一 思考题: 请推测下面代码的运行结果是什么 Z=(8,4,2,10,7) X,Y=getMaxMin(Z)#getMaxMin是上面的函数 print(X,Y) 第3章简单应用题 3.1闰年的计算 地球的公转周期是365.2422个太阳日,按这个天数,地球围绕太阳公转一周后,并不是整整365个昼夜。 因此,如果按照每年365天算,则每到四年,地球就和四年前的位置差了近一天。 这一天的公转距离需要闰(多)一日来补足,因此一般每四年就会出现一个闰年。 0.2422*4=0.9688<1,因此每闰一次都会有点矫枉过正,造成了0.0312天的误差。 每100个闰年(即400年)会造成3.12天的误差,为了减掉这个误差,人们又规定,在第25个、第50个、第75个“闰年”处不闰(减掉多余的3天),而在第100个闰年处保持闰年。 为了好算,人们这么制定了规则: 1、如果年数可以整除400,则该年是闰年。 否则判断2。 2、如果年数可以整除100,则该年不是闰年。 否则判断3。 3、如果年数可以整除4,则是闰年。 否则不是闰年。 闰年的计算方法,既是程序设计语言中常用的例题,又是现实程序设计中常用而且回避不了的一个问题。 判断一个年份是否为闰年的函数 defleapYear(y): if(y%400)==0: lp=1 elif(y%100)! =0and(y%4)==0: lp=1 else: lp=0 returnlp 这个函数被无数的人写过无数次,虽然此处写的不是最简单的,但它看起来与前面的算法是一致的。 例题1: 判断下列年份是否为闰年? 1918,1937,1949,1984,2000,2010。 #coding=gbk #判断某年是否为闰年的函数 #入口: y,int类型,>=1 #返回: #1=y是闰年 #0=y不是闰年 defleapYear(y): if(y%400)==0: lp=1 elif(y%100)! =0and(y%4)==0: lp=1 else: lp=0 returnlp #应用举例: #判断下列年份是否为闰年? #1918,1937,1949,1984,2000,2010 yy=[1918,1937,1949,1984,2000,2010] foryinyy: z=leapYear(y) ifz==1: s="是闰年" else: s="不是闰年" print(y,"年",s) 1918年不是闰年 1937年不是闰年 1949年不是闰年 1984年是闰年 2000年是闰年 2010年不是闰年 例题2: 计算y年m月共有多少天的函数getLastDay(y,m) #计算y年m月的天数 defgetLastDay(y,m): ify<1: y=1 ifm<1: m=1 ifm>12: m=12 #每个月的正常天数 #月份123456789101112 monthDay=[31,28,31,30,31,30,31,31,30,31,30,31] r=monthDay[m-1] ifm==2: r=r+leapYear(y)#此处调用了前面的计算闰年有函数 returnr 例题3: 计算从公元1年1月1日到y年m月d日的天数(含两端) 例如: 从公元1年1月1日到1年2月2日的天数是31+2=33天 分析: 要计算从公元1年1月1日到y年m月d日的天数,我们分成三个部分: (1)计算从公元1年到y-1年,是整年,每年是365天或366天(如果某年是闰年) (2)对于第y年,当m>1时,先计算1~m-1月整月的天数 (3)最后加上零头(第m月的d天)即可 这种方法,在程序设计中叫做“分而治之”。 #coding=gbk #判断某年是否为闰年的函数 #入口: y,int类型,>=1 #返回: #1=y是闰年 #0=y不是闰年 defleapYear(y): ify<1: y=1 if(y%400)==0: lp=1 elif(y%100)==0: lp=0 elif(y%4)==0: lp=1 else: lp=0 returnlp #计算y年m月的天数 defgetLastDay(y,m): ify<1: y=1 ifm<1: m=1 ifm>12: m=12 #每个月的正常天数 #月份123456789101112 monthDay=[31,28,31,30,31,30,31,31,30,31,30,31] r=monthDay[m-1] ifm==2: r=r+leapYear(y) returnr #计算从公元1年1月1日到y年m月d日的天数(含两端的函数 defcalcDays(y,m,d): ify<1: y=1 ifm<1: m=1 ifm>12: m=12 ifd<1: d=1 ifd>getLastDay(y,m): d=getLastDay(y,m) T=0 foriinrange(1,y): T=T+365+leapYear(i) foriinrange(1,m): T=T+getLastDay(y,i) T=T+d returnT y,m,d=2010,9,8 T=calcDays(y,m,d) print("从1年1月1日到",y,"年",m,"月",d,"日共",T,"天") 从1年1月1日到2010年9月8日共734023天 例题4求某年某月某日是星期几? 分析: 公元1年1月1日是星期一。 很久很久以前,上帝创造了天和地。 (这一天定为公元1年1月1日) 第二天上帝创造空气(大气),或穹苍,称空气为天。 按着上帝的命令,黑暗再次的取代了光明。 这是当天的傍晚发生的。 第三天,上帝创造了大海和高山。 第四天,上帝创造太阳、月亮和星星。 从此太阳为地球提供光和热。 第五天,上帝创造了空中的鸟和水里的鱼。 第六天,上帝创造各类的动物在地上。 这事之后,上帝就在第七日安息了。 因此,我们也当工作六日,礼拜天休息。 根据这个故事,我们知道,要求出某年某月某日是星期几,只需调用calcDays(y,m,d),然后除以7余几就是星期几,余0就是星期日(礼拜天)。 3.2计算级数的前n项和 例1求Sn=1+2+3+4+5+……+n #coding=gbk #求Sn=1+2+3+4+5+……+n #方法一: 用累加法 defcalcSn1(n): ifn<1: return0 s=0 foriinrange(1,n+1): s=s+i returns #方法二: 用等差级数的求和公式 #入口: a0=第一项 #n=项数 #d=公差 #返回: Sn #Sn=n*a0+n*(n-1)*d/2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 复习题