python基础100练习题.docx

上传人:b****0 文档编号:10031900 上传时间:2023-05-23 格式:DOCX 页数:63 大小:33.23KB
下载 相关 举报
python基础100练习题.docx_第1页
第1页 / 共63页
python基础100练习题.docx_第2页
第2页 / 共63页
python基础100练习题.docx_第3页
第3页 / 共63页
python基础100练习题.docx_第4页
第4页 / 共63页
python基础100练习题.docx_第5页
第5页 / 共63页
python基础100练习题.docx_第6页
第6页 / 共63页
python基础100练习题.docx_第7页
第7页 / 共63页
python基础100练习题.docx_第8页
第8页 / 共63页
python基础100练习题.docx_第9页
第9页 / 共63页
python基础100练习题.docx_第10页
第10页 / 共63页
python基础100练习题.docx_第11页
第11页 / 共63页
python基础100练习题.docx_第12页
第12页 / 共63页
python基础100练习题.docx_第13页
第13页 / 共63页
python基础100练习题.docx_第14页
第14页 / 共63页
python基础100练习题.docx_第15页
第15页 / 共63页
python基础100练习题.docx_第16页
第16页 / 共63页
python基础100练习题.docx_第17页
第17页 / 共63页
python基础100练习题.docx_第18页
第18页 / 共63页
python基础100练习题.docx_第19页
第19页 / 共63页
python基础100练习题.docx_第20页
第20页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

python基础100练习题.docx

《python基础100练习题.docx》由会员分享,可在线阅读,更多相关《python基础100练习题.docx(63页珍藏版)》请在冰点文库上搜索。

python基础100练习题.docx

python基础100练习题

实例001:

数字组合

题目有四个数字:

1、2、3、4,能组成多少个互不相同且无重复数字的三位数?

各是多少?

程序分析遍历全部可能,把有重复的剃掉。

total=0

foriinrange(1,5):

forjinrange(1,5):

forkinrange(1,5):

if((i!

=j)and(j!

=k)and(k!

=i)):

print(i,j,k)

total+=1

print(total)

12345678

简便方法用itertools中的permutations即可。

importitertools

sum2=0

a=[1,2,3,4]

foriinitertools.permutations(a,3):

print(i)

sum2+=1

print(sum2)

12345678

实例002:

“个税计算”

题目企业发放的奖金根据利润提成。

利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

程序分析分区间计算即可。

profit=int(input('Showmethemoney:

'))

bonus=0

thresholds=[100000,100000,200000,200000,400000]

rates=[0.1,0.075,0.05,0.03,0.015,0.01]

foriinrange(len(thresholds)):

ifprofit<=thresholds[i]:

bonus+=profit*rates[i]

profit=0

break

else:

bonus+=thresholds[i]*rates[i]

profit-=thresholds[i]

bonus+=profit*rates[-1]

print(bonus)

1234567891011121314

实例003:

完全平方数

题目一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:

n=0

while(n+1)**2-n*n<=168:

n+=1

print(n+1)

----------

85

123456789

思路是:

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

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

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

结合起来:

n=0

while(n+1)**2-n*n<=168:

n+=1

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=[]

foriinrange(3):

x=int(input('int%d:

'%(i)))

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())

res=0

a,b=1,1

foriinrange(target-1):

a,b=b,a+b

print(a)

12345678910111213

实例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)

print('b=',b)

print('c=',c)

print('d=',d)

print('e=',e)

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

F:

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

a=[1,2,3,4,['a','b','c'],5]

b=[1,2,3,4,['a','b','c'],5]

c=[1,2,3,4,['a','b','c']]

d=[1,2,3,4,['a','b','c']]

e=[1,2,3,4,['a','b']]

1234567891011121314151617181920212223

实例008:

九九乘法表

题目输出9*9乘法口诀表。

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

foriinrange(1,10):

forjinrange(1,i+1):

print('%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)

1234

实例010:

给人看的时间

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

程序分析同009.

importtime

foriinrange(4):

print(time.strftime('%Y-%m-%d%H:

%M:

%S',time.localtime(time.time())))

time.sleep

(1)

12345

实例011:

养兔子

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

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

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

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

month=int(input('繁殖几个月?

'))

month_1=1

month_2=0

month_3=0

month_elder=0

foriinrange(month):

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

print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子')

print('其中1月兔:

',month_1)

print('其中2月兔:

',month_2)

print('其中3月兔:

',month_3)

print('其中成年兔:

',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

break

ifflag:

continue

print(i)

print('\nSimplifythecodewith"else"\n')

foriinrange(100,200):

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

ifi%j==0:

break

else:

print(i)

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:

print(i)

1234567

实例014:

分解质因数

题目将一个整数分解质因数。

例如:

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

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

target=int(input('输入一个整数:

'))

print(target,'=',end='')

iftarget<0:

target=abs(target)

print('-1*',end='')

flag=0

iftarget<=1:

print(target)

flag=1

whileTrue:

ifflag:

break

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

iftarget%i==0:

print("%d"%i,end='')

iftarget==i:

flag=1

break

print('*',end='')

target/=i

break

1234567891011121314151617181920212223242526

实例015:

分数归档

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

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

程序分析用条件判断即可。

points=int(input('输入分数:

'))

ifpoints>=90:

grade='A'

elifpoints<60:

grade='C'

else:

grade='B'

print(grade)

12345678

实例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)

1234567

实例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

else:

oth+=1

print('space:

',spa)

print('digit:

',num)

print('alpha:

',alp)

print('other:

',oth)

12345678910111213141516171819

实例018:

复读机相加

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

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

程序分析用字符串解决。

a=input('被加数字:

')

n=int(input('加几次?

'))

res=0

foriinrange(n):

res+=int(a)

a+=a[0]

print('结果是:

',res)

1234567

实例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:

print(i)

123456789101112

实例020:

高空抛物

题目一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?

第10次反弹多高?

程序分析无

high=200.

total=100

foriinrange(10):

high/=2

total+=high

print(high/2)

print('总长:

',total)

1234567

实例021:

猴子偷桃

题目猴子吃桃问题:

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

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

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

求第一天共摘了多少。

程序分析按规则反向推断:

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

peach=1

foriinrange(9):

peach=(peach+1)*2

print(peach)

1234

实例022:

比赛对手

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

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

已抽签决定比赛名单。

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

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

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

a=set(['x','y','z'])

b=set(['x','y','z'])

c=set(['x','y','z'])

c-=set(('x','z'))

a-=set('x')

foriina:

forjinb:

forkinc:

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

print('a:

%s,b:

%s,c:

%s'%(i,j,k))

12345678910

实例023:

画菱形

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

*

***

*****

*******

*****

***

*

程序分析递归调用即可。

defdraw(num):

a="*"*(2*(4-num)+1)

print(a.center(9,''))

ifnum!

=1:

draw(num-1)

print(a.center(9,''))

draw(4)

1234567

实例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)

12345678

实例025:

阶乘求和

题目求1+2!

+3!

+…+20!

的和。

程序分析1+2!

+3!

+…+20!

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

(1))))

res=1

foriinrange(20,1,-1):

res=i*res+1

print(res)

1234

实例026:

递归求阶乘

题目利用递归方法求5!

程序分析递归调用即可。

deffactorial(n):

returnn*factorial(n-1)ifn>1else1

print(factorial(5))

123

实例027:

递归输出

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

程序分析递归真是蠢方法。

defrec(string):

iflen(string)!

=1:

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))

12345

实例029:

反向输出

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

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

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

n=int(input('输入一个正整数:

'))

n=str(n)

print('%d位数'%len(n))

print(n[:

:

-1])

1234

实例030:

回文数

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

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

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

n=input("随便你输入啥啦:

")

a=0

b=len(n)-1

flag=True

whilea

ifn[a]!

=n[b]:

print('不是回文串')

flag=False

break

a,b=a+1,b-1

ifflag:

print('是回文串')

123456789101112

实例031:

字母识词

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

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

weekT={'h':

'thursday',

'u':

'tuesday'}

weekS={'a':

'saturday',

'u':

'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()])

else:

print(a)

123456789101112131415

实例032:

反向输出II

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

程序分析无。

a=['one','two','three']

print(a[:

:

-1])

12

实例033:

列表转字符串

题目按逗号分隔列表。

程序分析无。

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

print(','.join(str(n)forninL))

12

实例034:

调用函数

题目练习函数调用。

程序分析无。

defhello():

print('HelloWorld!

')

defhelloAgain():

foriinrange

(2):

hello()

if__name__=='__main__':

helloAgain()

12345678

实例035:

设置输出颜色

题目文本颜色设置。

程序分析无。

classbcolors:

HEADER

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2