Python 复习题.docx

上传人:b****2 文档编号:23064224 上传时间:2023-04-30 格式:DOCX 页数:56 大小:332.57KB
下载 相关 举报
Python 复习题.docx_第1页
第1页 / 共56页
Python 复习题.docx_第2页
第2页 / 共56页
Python 复习题.docx_第3页
第3页 / 共56页
Python 复习题.docx_第4页
第4页 / 共56页
Python 复习题.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

Python 复习题.docx

《Python 复习题.docx》由会员分享,可在线阅读,更多相关《Python 复习题.docx(56页珍藏版)》请在冰豆网上搜索。

Python 复习题.docx

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模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1