《Python复习题》由会员分享,可在线阅读,更多相关《Python复习题(44页珍藏版)》请在金锄头文库上搜索。
1、Python 复习题Python 语法基础小结(2010-09-08) 1 python 的基础数据类型类型类型名例子整数int 1, -5, 0xab 实数float 2.3, 7.8E10 字符串str “ abcd” , ,你好 ?逻辑bool True False 2 运算符+加法,字符串联接,数组融合-减法*乘法, 字符串级联/实数除法/整除%求余数*求幂in判断元素是否在序列类型中forx in序列类型: 序列类型遍历and并且or或者not不是比较运算符 : = != = 赋值语句= += -= *= /= %= 3 if 语句格式一if 条件: 如果条件成立执行本段代码else
2、: 如果条件不成立执行本段代码格式二if 条件: 如果条件成立执行本段代码格式三if 条件 1 : 如果条件1 成立执行本段代码elif 条件 2: 如果条件2 成立执行本段代码elif 条件 3: 如果条件3 成立执行本段代码else: 如果以上条件都不成立执行本段代码4 for 循环for i in 序列类型 : 对于序列类型的每一个元素执行本段代码例一:求数组元素平均的程序#coding=gbk #求数组元素的平均值 x=1,2,3,4.6 , 7.1 s=0 for i in x: s = s + i a = s / len( x ) print( “x=“, x ) print( “
3、 共“, 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 for i in range(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 for i i
4、n range(1,99+1,2): s = s + i print( “1+3+5+7+.+99=“, s )1+3+5+7+.+99= 2500range(1,100,2)的意思是: 1,3,5,7,.99 从 1 开始,到 100 结束, 但不包含 100,每次增加2range(1,101 )的意思是: 1,2,3,.99,100 从 1 开始,到 101 结束,但不包含 101,每次增加1例 4 :求 10+9+8+7+ + 1 =? #coding=gbk #求 10+9+8+7+, + 1 =? s=0 for i in range(10, 0 ,-1): s = s + i pr
5、int( “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 = x0 for i in range( 0 , len(x) ): if mx =0: if mx =0 的自然数返回值: n!“f = 1 for i in range(1,n+1): f = f * i return f print( “5!=“, fact(5) )5!= 120 在 f
6、act 函数中 : n 是形式数 ,f , i 是函数fact 的局部变量 , return f 是函数的 返回值 ,5 是调用函数fact 的实际参数 。函数的文档2.3 函数的形式参数与实际参数让我们看下面的例子:#coding=gbk def test( x1, x2 ): # x1,x2 是形式参数x1 = x1*x1 x2 = x2*x2 y = x1+x2 # y是局部变量return y a1 = 2 a2 = 3 b = test( a1,a2 ) # a1 , a2 是实际参数 print( “a1,a2=“, a1,a2) print( “b=“,b) a1,a2= 2 3
7、 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。实际应用中,在不产生二义性的时候,可以省略园括号。例如:na
8、me, sex, age = “ 张三 ” , “ 男” , 58 虽然形式参数x1,x2的值在函数内部被改变 了 , 而 实 际 参 数a1,a2 没有被改变 。2.5 元组作为函数的返回值当我们需要从函数中返回多个值时,可以使用元组作为返回值。#coding=gbk #求序列类型的最大元素和最小元素#入口 : v 序列类型#返回 : ( 最大元素 , 最小元素 ) def getMaxMin( v ): big = v0 small = v0 for i in range( 0, len(v): if bigvi: small = vi return big,small #- 应用举例 -
9、 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,
10、5, 10 最大元素 = 10 最小元素 = 0 a= 张三 , 李四 , 王五 , 艰苦奋斗 最大元素 = 艰苦奋斗最小元素 = 张三a= 满清皇帝听说这双刀之中有一个能无敌於天下的大秘密 最大元素 = 这 最小元素 = 一思考题 :请推测下面代码的运行结果是什么Z = ( 8, 4, 2, 10,7 ) X,Y = getMaxMin( Z ) # getMaxMin是上面的函数print( X,Y ) 传入的是( int 类型的)数组传入的是( str 类型的)数组传入的是一个字符串第 3 章 简单应用题3.1 闰年的计算地球的公转周期是365.2422 个太阳日,按这个天数,地球围绕太
11、阳公转一周后,并不是整整 365 个昼夜。因此,如果按照每年365 天算,则每到四年,地球就和四年前的位置差了近一天。这一天的公转距离需要闰(多)一日来补足,因此一般每四年就会出现一个闰年。0.2422 * 4 = 0.9688 =1 #返回:# 1= y是闰年# 0= y不是闰年def leapYear( y ): if (y % 400)= 0: lp = 1 elif (y % 100)!= 0 and (y % 4)=0: lp =1 else: lp = 0 return lp #应用举例 : #判断下列年份是否为闰年?# 1918,1937, 1949, 1984,2000, 20
12、10 yy = 1918,1937, 1949,1984, 2000, 2010 for y in yy: z = leapYear(y) if z=1: s=“是闰年 “ else: s=“不是闰年 “ print( y,“年“, s )1918 年 不是闰年1937 年 不是闰年1949 年 不是闰年1984 年 是闰年2000 年 是闰年2010 年 不是闰年例题 2:计算 y 年 m 月共有多少天的函数getLastDay( y,m) #计算 y 年 m 月的天数def getLastDay( y,m): if y12: m=12 # 每个月的正常天数# 月份1 2 3 4 5 6 7
13、 8 9 10 11 12 monthDay=31,28,31,30,31,30,31,31,30,31,30,31 r = monthDay m-1 if m=2: r = r + leapYear(y) # 此处调用了前面的计算闰年有函数return r例题 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
14、 天(如果某年是闰年)(2) 对于第 y 年, 当 m1 时,先计算 1 m-1 月整月的天数(3) 最后加上零头(第m 月的d 天)即可这种方法,在程序设计中叫做“分而治之 ” 。#coding=gbk #判断某年是否为闰年的函数#入口:y , int 类型 , =1 #返回:# 1= y 是闰年# 0= y 不是闰年def leapYear( y ): if y12: m=12 # 每个月的正常天数# 月份1 2 3 4 5 6 7 8 9 10 11 12 monthDay=31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 r = monthD
15、ay m-1 if m=2: r = r + leapYear(y) return r #计算从公元1 年 1 月 1 日到y 年 m 月 d 日的天数 (含两端的函数def calcDays( y,m,d ): if y12: m=12 if dgetLastDay(y,m): d=getLastDay(y,m) T = 0 for i in range(1,y): T = T + 365 + leapYear( i ) for i in range(1,m): T = T + getLastDay(y,i) T = T + d return T y,m,d = 2010,9,8 T = c
16、alcDays( 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 日)第二天上帝创造空气(大气 ),或穹苍,称空气为天。按着上帝的命令,黑暗再次的取代了光明。这是当天的傍晚发生的。第三天,上帝创造了大海和高山。第四天,上帝创造太阳、月亮和星星。从此太阳为地球提供光和热。第五天,上帝创造了空中的鸟和水里的鱼。第六天,上帝创造各类的动物在地上。这事之后,上帝就在第七日安息了。因此,我们