Python经典编程题40题(一)

您所在的位置:网站首页 python的例题 Python经典编程题40题(一)

Python经典编程题40题(一)

2022-05-30 15:20| 来源: 网络整理| 查看: 265

众所周知,学习一门语言的最好方式就是不断练习它,本文章记录了python经典编程题目,初学者必会。

第1题:结尾0的个数题目给你一个正整数列表 L, 输出L内所有数字的乘积末尾0的个数。(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大)。输入示例输入:L=[2,8,3,50]输出示例输出:2算法

寻找列表中所有元素中,每个元素因子中2和5的个数。因为2*5等于10,所以计算出因子2和5的对数,就得到乘积末尾0的个数

def find_2(x): tmp=x f2=0 #记录因子2的个数 f5=0 #记录因子5的个数 while x%2==0: f2+=1 x=x/2 while tmp%5==0: f5+=1 tmp/=5 return f2,f5 #进行计算 L=[2,8,3,50] a2=0 #记录列表中因子2的个数 a5=0 #记录列表中因子5的个数 for i in L: t2,t5=find_2(i) a2+=t2 a5+=t5 print(min(a2,a5)) #2第2题:结尾非零数的奇偶性题目给你一个正整数列表 L, 判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇数输出1,偶数则输出0。输入示例输入:L = [2, 8, 3, 50]输出示例输出:0算法

比较粗暴,直接累乘,然后利用算法求末尾第一个非0的数字

L=[2,8,3,50] def find_last_isodd(x): #求解末尾第一个非0的数字 if x%10!=0: return x%10 else: while x%10==0: x//=10 if x%10!=0: return x%10 break ji=1 for i in L: ji*=i if find_last_isodd(ji)%2==0: print(0) else: print(1)第3题:光棍的悲伤题目光棍们对1总是那么敏感,因此每年的11.11被戏称为光棍节。小Py光棍几十载,光棍自有光棍的快乐。让我们勇敢地面对光棍的身份吧,现在就证明自己:给你一个整数a,数出a在二进制表示下1的个数,并输出。输入示例输入:a = 7输出示例输出:3算法

7的二进制是111,所以输出答案是3。这道题考的是如何将十进制整数转化为二进制数,方法就是:除二取余,逆序读取

a=7 def erjinzhi(x): he=0 while x>0: if x%2==1: he+=1 x//=2 return he print(erjinzhi(a))第4题:大小写转换题目给定一个字符串a, 将a中的大写字母 转换成小写,其它字符不变,并输出输入示例输入:a = "KDJIskos234k,.;djfeiJ"输出示例输出:kdjiskos234k,.;djfeij算法

其实这道题有很多方法,比如可以根据判断是不是大写字母,然后对其ASCII码值加32来转换等等。不过,既然是python题,就用python的方法简简单单完成啦。

需要利用lower()函数,注意lower函数只会将A-Z有效,将对应大写转换为小写,其他字符不会转换,刚好符合本题要求。

a = "KDJIskos234k,.;djfeiJ" print(a.lower()) #输出kdjiskos234k,.;djfeij第5题:判断三角形题目给你三个整数a,b,c, 判断能否以它们为三个边长构成三角形。 若能,输出YES,否则输出NO。输入示例输入:a = 5 b = 5 c = 5输出示例输出:YES算法

三角形任意两边之和大于第三边,可以利用列表排序求出较小的两边,然后相加再和第三边比较,进行判断

a = 5 b = 5 c = 3 L=list() L.append(a) L.append(b) L.append(c) L.sort() #默认从小到大排序 if L[0]+L[1]>L[2]: print('YES') else: print('NO') #YES第6题:逆解最大公约数与最小公倍数题目我们经常遇到的问题是给你两个数,要你求最大公约数和最小公倍数。今天我们反其道而行之,给你两个数a和b,计算出它们分别是哪两个数的积的最大公约数和最小公倍数。输出这两个数,小的在前,大的在后,以空格隔开。若有多组解,输出它们之和最小的那组。输入示例输入:a=3, b = 60输出示例输出:12 15算法

最大公约数与最小公倍数的乘积就是所求的两数之积,即最大公约数*最小公倍数=a*b,然后题目要求两数和最小,在两数积不变的情况下,二者越接近,和越小。所以从积的平方根开始,求第一个能被积整除的数即可。

a=3 b=60 ji=a*b #两数之积 sq=int(pow(ji,0.5)) #积的平方根 ans_big=0 for i in range(sq,ji+1): #求解在根号附近,第一个能被整除的数(两数较大的一个) if ji%i==0: ans_big=i break print(ji//ans_big,ans_big)第7题:公约数的个数题目给你两个正整数a,b, 输出它们公约数的个数。输入示例输入:a = 24 b = 36输出示例输出:6算法

朴素的思想:从1到两数较小的数,看看是否可以同时被两数整除,若可以则结果加一

def find_yueshu(x,y): he=0 for i in range(1,min(x,y)+1): if x%i==0 and y%i==0: he+=1 return he print(find_yueshu(24,36)) #6第8题:回文子串题目给你一个字符串a和一个正整数n,判断a中是否存在长度为n的回文子串。如果存在,则输出YES,否则输出NO。 回文串的定义:记串str逆序之后的字符串是str1,若str=str1,则称str是回文串,如"abcba".输入示例输入:a = "abcba" n = 5输出示例输出:YES算法

根据正整数n进行分割字符串,然后判断字符串是不是回文串。由于python中字符串没有直接提供reverse函数(列表list有,但需要先将字符串转换为列表,较麻烦),所以采用字符串切片。若一个字符串为s,其逆序为s[::-1],前两个空表示提取全部,-1表示逆序。

a="abcbe" n=5 flag=0 for i in range(len(a)): if i+n>len(a): #索引超过最大值,直接提前退出 break str_tmp=a[i:i+n] str_tmp_reverse=str_tmp[::-1] #字符串翻转 if str_tmp==str_tmp_reverse: flag=1 break if flag==1: print('YES') else: print('NO') #输出YES第9题:单身情歌题目抓不住爱情的我 总是眼睁睁看它溜走 ...现在来练习一下发现爱的能力,给你一个字符串a,如果其中包含"LOVE"(love不区分大小写)则输出LOVE,否则输出SINGLE。输入示例输入:a = "OurWorldIsFullOfLOVE"输出示例输出:LOVE算法

先利用刚才学到的lower函数(学以致用hh),将原字符串转换为小写,然后利用str切片,得到一个子串,与目标子串(love)进行比较

a = "OurWorldIsFullOfLOVE" b=a.lower() flag=0 #判断开关 for i in range(len(a)): if i+4>len(a): #防止超出范围 break tmp=b[i:i+4] if tmp=='love': flag=1 if flag: print('LOVE') else: print('SINGLE')第10题:信息加密题目给你个小写英文字符串a和一个非负数b(0


【本文地址】


今日新闻


推荐新闻


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