Python 100道基础入门练习题(附答案)【这期完结】

您所在的位置:网站首页 猴子吃桃子编程题答案python递归 Python 100道基础入门练习题(附答案)【这期完结】

Python 100道基础入门练习题(附答案)【这期完结】

2024-01-09 20:34| 来源: 网络整理| 查看: 265

嗨害大家好鸭!我是小熊猫❤

一直忘记给大家整完剩下的python基础100题…

还好有小伙伴提醒了我嘿嘿

这就给大家更新上!

在这里插入图片描述

实例021:猴子偷桃

题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

程序分析 按规则反向推断:猴子有一个桃子,他偷来一个桃子,觉得不够又偷来了与手上等量的桃子,一共偷了9天。

peach=1 for i in range(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(['x','y','z']) c=set(['x','y','z']) c-=set(('x','z')) a-=set('x') for i in a: for j in b: for k in c: if len(set((i,j,k)))==3: print('a:%s,b:%s,c:%s'%(i,j,k)) 实例023:画菱形

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

​ *

​ *

程序分析 递归调用即可。

def draw(num): a="*"*(2*(4-num)+1) print(a.center(9,' ')) if num!=1: draw(num-1) print(a.center(9,' ')) 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 for n in range(1,21): s += a / b a,b = a + b,a print (s) 实例025: 阶乘求和

题目 求1+2!+3!+…+20!的和。

程序分析 1+2!+3!+…+20!=1+2(1+3(1+4(…20(1))))

res=1 for i in range(20,1,-1): res=i*res+1 print(res) 实例026:递归求阶乘

题目 利用递归方法求5!。

程序分析 递归调用即可。

def factorial(n): return n*factorial(n-1) if n>1 else 1 print(factorial(5)) 实例027:递归输出

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

程序分析 递归真是蠢方法(个人意见勿喷)

def rec(string): if len(string)!=1: rec(string[1:]) print(string[0],end='') rec(input('string here:')) 实例028:递归求等差数列

题目 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析 就一等差数列。

def age(n): if n==1: return 10 return 2+age(n-1) print(age(5)) 实例029:反向输出

题目 给一个不多于5位的正整数, 要求:一、求它是几位数, 二、逆序打印出各位数字。

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

n=int(input('输入一个正整数:')) n=str(n) print('%d位数'%len(n)) print(n[::-1]) 实例030:回文数

题目 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

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

n=input("随便你输入啥啦:") a=0 b=len(n)-1 flag=True while a'a':'saturday', 'u':'sunday'} week={'t':weekT, 's':weekS, 'm':'monday', 'w':'wensday', 'f':'friday'} a=week[str(input('请输入第一位字母:')).lower()] if a==weekT or a==weekS: print(a[str(input('请输入第二位字母:')).lower()]) else: print(a) 实例032:反向输出II

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

程序分析 无。

a = ['one', 'two', 'three'] print(a[::-1]) 实例033:列表转字符串

题目 按逗号分隔列表。

程序分析 无。

L = [1,2,3,4,5] print(','.join(str(n) for n in L)) 实例034:调用函数

题目 练习函数调用。

程序分析 无。

def hello(): print('Hello World!') def helloAgain(): for i in range(2): hello() if __name__=='__main__': helloAgain() 实例035:设置输出颜色

题目 文本颜色设置。

程序分析 无。

class bcolors: 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 + "警告的颜色字体?" + bcolors.ENDC) 实例036:算素数

题目 求100之内的素数。

程序分析 用else执行for循环的奖励代码(如果for是正常完结,非break)。

lo=int(input('下限:')) hi=int(input('上限:')) for i in range(lo,hi+1): if i > 1: for j in range(2,i): if (i % j) == 0: break else: print(i) 实例037:排序

题目 对10个数进行排序。

程序分析 同实例005。

''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:660193417 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' raw=[] for i in range(10): x=int(input('int%d: '%(i))) raw.append(x) for i in range(len(raw)): for j in range(i,len(raw)): if raw[i]>raw[j]: raw[i],raw[j]=raw[j],raw[i] print(raw) 实例038:矩阵对角线之和

题目 求一个3*3矩阵主对角线元素之和。

程序分析 无。

mat=[[1,2,3], [3,4,5], [4,5,6] ] res=0 for i in range(len(mat)): res+=mat[i][i] print(res) 实例039:有序列表插入元素

题目 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析 首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

lis=[1,10,100,1000,10000,100000] n=int(input('insert a number: ')) lis.append(n) for i in range(len(lis)-1): if lis[i]>=n: for j in range(i,len(lis)): lis[j],lis[-1]=lis[-1],lis[j] break print(lis) 实例040:逆序列表

题目 将一个数组逆序输出。

程序分析 依次交换位置,或者直接调用reverse方法。

lis=[1,10,100,1000,10000,100000] for i in range(int(len(lis)/2)): lis[i],lis[len(lis)-1-i]=lis[len(lis)-1-i],lis[i] print('第一种实现:') print(lis) lis=[1,10,100,1000,10000,100000] print('第二种实现:') lis.reverse() print(lis) 实例041:类的方法与变量

题目 模仿静态变量的用法。

程序分析 构造类,了解类的方法与变量。

def dummy(): i=0 print(i) i+=1 class cls: i=0 def dummy(self): print(self.i) self.i+=1 a=cls() for i in range(50): dummy() a.dummy() 实例042:变量作用域

题目 学习使用auto定义变量的用法。

程序分析 python中的变量作用域。

i=0 n=0 def dummy(): i=0 print(i) i+=1 def dummy2(): global n print(n) n+=1 print('函数内部的同名变量') for j in range(20): print(i) dummy() i+=1 print('global声明同名变量') for k in range(20): print(n) dummy2() n+=10 实例043:作用域、类的方法与变量

题目 模仿静态变量(static)另一案例。

程序分析 综合实例041和实例042。

class dummy: num=1 def Num(self): print('class dummy num:',self.num) print('global num: ',num) self.num+=1 n=dummy() num=1 for i in range(5): num*=10 n.Num() 实例044:矩阵相加

题目 计算两个矩阵相加。

程序分析 创建一个新的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。

''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:660193417 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' X = [[12,7,3], [4 ,5,6], [7 ,8,9]] Y = [[5,8,1], [6,7,3], [4,5,9]] res=[[0,0,0], [0,0,0], [0,0,0]] for i in range(len(res)): for j in range(len(res[0])): res[i][j]=X[i][j]+Y[i][j] print(res) 实例045:求和

题目 统计 1 到 100 之和。

程序分析 无

res=0 for i in range(1,101): res+=i print(res) 实例046:打破循环

题目 求输入数字的平方,如果平方运算后小于 50 则退出。

程序分析 无

while True: try: n=float(input('输入一个数字:')) except: print('输入错误') continue dn=n**2 print('其平方为:',dn) if dn=y)+y*(y>x) Min=lambda x,y:x*(x


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3