python基础100练习题Word格式.docx

上传人:b****9 文档编号:16230100 上传时间:2022-11-21 格式:DOCX 页数:104 大小:41.16KB
下载 相关 举报
python基础100练习题Word格式.docx_第1页
第1页 / 共104页
python基础100练习题Word格式.docx_第2页
第2页 / 共104页
python基础100练习题Word格式.docx_第3页
第3页 / 共104页
python基础100练习题Word格式.docx_第4页
第4页 / 共104页
python基础100练习题Word格式.docx_第5页
第5页 / 共104页
点击查看更多>>
下载资源
资源描述

python基础100练习题Word格式.docx

《python基础100练习题Word格式.docx》由会员分享,可在线阅读,更多相关《python基础100练习题Word格式.docx(104页珍藏版)》请在冰豆网上搜索。

python基础100练习题Word格式.docx

=168:

n+=1

print(n+1)

----------

85

123456789

思路是:

最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。

至于判断是否是完全平方数,最简单的方法是:

平方根的值小数为0即可。

结合起来:

foriinrange((n+1)**2):

ifi**0.5==int(i**0.5)and(i+168)**0.5==int((i+168)**0.5):

print(i-100)

1234567

实例004:

这天第几天

输入某年某月某日,判断这一天是这一年的第几天?

特殊情况,闰年时需考虑二月多加一天:

defisLeapYear(y):

return(y%400==0or(y%4==0andy%100!

=0))

DofM=[0,31,28,31,30,31,30,31,31,30,31,30]

res=0

year=int(input('

Year:

'

month=int(input('

Month:

day=int(input('

day:

ifisLeapYear(year):

DofM[2]+=1

foriinrange(month):

res+=DofM[i]

print(res+day)

12345678910111213

实例005:

三数排序

输入三个整数x,y,z,请把这三个数由小到大输出。

练练手就随便找个排序算法实现一下,偷懒就直接调函数。

raw=[]

foriinrange(3):

x=int(input('

int%d:

%(i)))

raw.append(x)

foriinrange(len(raw)):

forjinrange(i,len(raw)):

ifraw[i]>

raw[j]:

raw[i],raw[j]=raw[j],raw[i]

print(raw)

raw2=[]

raw2.append(x)

print(sorted(raw2))

123456789101112131415161718

实例006:

斐波那契数列

斐波那契数列。

斐波那契数列(Fibonaccisequence),从1,1开始,后面每一项等于前面两项之和。

图方便就递归实现,图性能就用循环。

递归实现

defFib(n):

return1ifn<

=2elseFib(n-1)+Fib(n-2)

print(Fib(int(input())))

朴素实现

target=int(input())

a,b=1,1

foriinrange(target-1):

a,b=b,a+b

print(a)

实例007:

copy

将一个列表的数据复制到另一个列表中。

使用列表[:

],拿不准可以调用copy模块。

importcopy

a=[1,2,3,4,['

a'

'

b'

]]

b=a 

赋值

c=a[:

浅拷贝

d=copy.copy(a) 

e=copy.deepcopy(a) 

深拷贝

a.append(5)

a[4].append('

c'

print('

a='

a)

b='

b)

c='

c)

d='

d)

e='

e)

============RESTART:

F:

\PyWorkspace\Python100\100examples\007.py============

a=[1,2,3,4,['

'

],5]

b=[1,2,3,4,['

c=[1,2,3,4,['

d=[1,2,3,4,['

e=[1,2,3,4,['

1234567891011121314151617181920212223

实例008:

九九乘法表

输出 

9*9 

乘法口诀表。

分行与列考虑,共9行9列,i控制行,j控制列。

foriinrange(1,10):

forjinrange(1,i+1):

%d*%d=%2ld'

%(i,j,i*j),end='

print()

1234

实例009:

暂停一秒输出

暂停一秒输出。

使用 

time 

模块的 

sleep() 

函数。

importtime

foriinrange(4):

print(str(int(time.time()))[-2:

])

time.sleep

(1)

实例010:

给人看的时间

暂停一秒输出,并格式化当前时间。

同009.

print(time.strftime('

%Y-%m-%d%H:

%M:

%S'

time.localtime(time.time())))

12345

实例011:

养兔子

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?

考虑到三个月成熟,可以构建四个数据,其中:

一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。

繁殖几个月?

 

month_1=1

month_2=0

month_3=0

month_elder=0

month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3

第%d个月共'

%(i+1),month_1+month_2+month_3+month_elder,'

对兔子'

其中1月兔:

month_1)

其中2月兔:

month_2)

其中3月兔:

month_3)

其中成年兔:

month_elder)

123456789101112

实例012:

100到200的素数

判断101-200之间有多少个素数,并输出所有素数。

判断素数的方法:

用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

用else可以进一步简化代码.

importmath

foriinrange(100,200):

flag=0

forjinrange(2,round(math.sqrt(i))+1):

ifi%j==0:

flag=1

ifflag:

continue

\nSimplifythecodewith"

else"

\n'

123456789101112131415161718192021

实例013:

所有水仙花数

打印出所有的"

水仙花数"

,所谓"

是指一个三位数,其各位数字立方和等于该数本身。

例如:

153是一个"

,因为153=1的三次方+5的三次方+3的三次方。

利用for循环控制100-999个数,每个数分解出个位,十位,百位。

foriinrange(100,1000):

s=str(i)

one=int(s[-1])

ten=int(s[-2])

hun=int(s[-3])

ifi==one**3+ten**3+hun**3:

实例014:

分解质因数

将一个整数分解质因数。

输入90,打印出90=233*5。

根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。

target=int(input('

输入一个整数:

print(target,'

='

end='

iftarget<

0:

target=abs(target)

-1*'

=1:

print(target)

whileTrue:

foriinrange(2,int(target+1)):

iftarget%i==0:

print("

%d"

%i,end='

iftarget==i:

*'

target/=i

1234567891011121314151617181920212223242526

实例015:

分数归档

利用条件运算符的嵌套来完成此题:

学习成绩>

=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

用条件判断即可。

points=int(input('

输入分数:

ifpoints>

=90:

grade='

A'

elifpoints<

60:

C'

B'

print(grade)

实例016:

输出日期

输出指定格式的日期。

datetime 

模块。

importdatetime

print(datetime.date.today())

print(datetime.date(2333,2,3))

print(datetime.date.today().strftime('

%d/%m/%Y'

day=datetime.date(1111,2,3)

day=day.replace(year=day.year+22)

print(day)

实例017:

字符串构成

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

利用 

while 

或 

for 

语句,条件为输入的字符不为 

‘\n’。

string=input("

输入字符串:

"

alp=0

num=0

spa=0

oth=0

foriinrange(len(string)):

ifstring[i].isspace():

spa+=1

elifstring[i].isdigit():

num+=1

elifstring[i].isalpha():

alp+=1

oth+=1

space:

spa)

digit:

num)

alpha:

alp)

other:

oth)

12345678910111213141516171819

实例018:

复读机相加

求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。

例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

用字符串解决。

a=input('

被加数字:

n=int(input('

加几次?

foriinrange(n):

res+=int(a)

a+=a[0]

结果是:

res)

实例019:

完数

一个数如果恰好等于它的因子之和,这个数就称为"

完数"

例如6=1+2+3.编程找出1000以内的所有完数。

将每一对因子加进集合,在这个过程中已经自动去重。

最后的结果要求不计算其本身。

deffactor(num):

target=int(num)

res=set()

foriinrange(1,num):

ifnum%i==0:

res.add(i)

res.add(num/i)

returnres

foriinrange(2,1001):

ifi==sum(factor(i))-i:

实例020:

高空抛物

一球从100米高度自由落下,每次落地后反跳回原高度的一半;

再落下,求它在第10次落地时,共经过多少米?

第10次反弹多高?

high=200.

total=100

foriinrange(10):

high/=2

total+=high

print(high/2)

总长:

total)

实例021:

猴子偷桃

猴子吃桃问题:

猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少。

按规则反向推断:

猴子有一个桃子,他偷来一个桃子,觉得不够又偷来了与手上等量的桃子,一共偷了9天。

peach=1

foriinrange(9):

peach=(peach+1)*2

print(peach)

实例022:

比赛对手

两个乒乓球队进行比赛,各出三人。

甲队为a,b,c三人,乙队为x,y,z三人。

已抽签决定比赛名单。

有人向队员打听比赛的名单。

a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

找到条件下不重复的三个对手即可。

a=set(['

x'

y'

z'

b=set(['

c=set(['

c-=set(('

a-=set('

foriina:

forjinb:

forkinc:

iflen(set((i,j,k)))==3:

a:

%s,b:

%s,c:

%s'

%(i,j,k))

12345678910

实例023:

画菱形

打印出如下图案(菱形):

*

***

*****

*******

递归调用即可。

defdraw(num):

a="

*"

*(2*(4-num)+1)

print(a.center(9,'

ifnum!

draw(num-1)

draw(4)

实例024:

斐波那契数列II

有一分数序列:

2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

就是斐波那契数列的后一项除以前一项。

a=2.0

b=1.0

s=0

forninrange(1,21):

s+=a/b

a,b=a+b,a

print(s)

实例025:

阶乘求和

求1+2!

+3!

+…+20!

的和。

1+2!

=1+2(1+3(1+4(…20

(1))))

res=1

foriinrange(20,1,-1):

res=i*res+1

print(res)

实例026:

递归求阶乘

利用递归方法求5!

deffactorial(n):

returnn*factorial(n-1)ifn>

1else1

print(factorial(5))

123

实例027:

递归输出

利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

递归真是蠢方法。

defrec(string):

iflen(string)!

rec(string[1:

print(string[0],end='

rec(input('

stringhere:

123456

实例028:

递归求等差数列

有5个人坐在一起,问第五个人多少岁?

他说比第4个人大2岁。

问第4个人岁数,他说比第3个人大2岁。

问第三个人,又说比第2人大两岁。

问第2个人,说比第一个人大两岁。

最后问第一个人,他说是10岁。

请问第五个人多大?

就一等差数列。

defage(n):

ifn==1:

return10

return2+age(n-1)

print(age(5))

实例029:

反向输出

给一个不多于5位的正整数,要求:

一、求它是几位数,二、逆序打印出各位数字。

学会分解出每一位数,用字符串的方法总是比较省事。

输入一个正整数:

n=str(n)

%d位数'

%len(n))

print(n[:

:

-1])

实例030:

回文数

一个5位数,判断它是不是回文数。

即12321是回文数,个位与万位相同,十位与千位相同。

用字符串比较方便,就算输入的不是数字都ok。

n=input("

随便你输入啥啦:

a=0

b=len(n)-1

flag=True

whilea<

b:

ifn[a]!

=n[b]:

不是回文串'

flag=False

a,b=a+1,b-1

是回文串'

实例031:

字母识词

请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

这里用字典的形式直接将对照关系存好。

weekT={'

h'

thursday'

u'

tuesday'

}

weekS={'

saturday'

sunday'

week={'

t'

weekT,

s'

weekS,

m'

monday'

w'

wensday'

f'

friday'

a=week[str(input('

请输入第一位字母:

)).lower()]

ifa==weekTora==weekS:

print(a[str(input('

请输入第二位字母:

)).lower()])

123456789101112131415

实例032:

反向输出II

按相反的顺序输出列表的值。

无。

a=['

one'

two'

three'

]

print(a[:

12

实例033:

列表转字符串

按逗号分隔列表。

L=[1,2,3,4,5]

.join(str(n)forninL))

实例034:

调用函数

练习函数调用。

defhello():

HelloWorld!

defhelloAgain():

foriinrange

(2):

hello()

if__name__=='

__main__'

helloAgain()

实例035:

设置输出颜色

文本颜色设置。

classbcolors:

HEADER='

\033[95m'

OKBLUE='

\033[94m'

OKGREEN='

\033[92m'

WARNING='

\033[93m'

FAIL='

\033[91m'

ENDC='

\033[0m'

BOLD='

\033[1m'

UNDERLINE='

\033[4m'

print(bcolors.WARNING+

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

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

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