前言
学习python的时候在pythontrip做了不少的题目,如今想想把我所做的题目解法分享出来和大家交流一下,若有不足请多多指教,谢谢!
一篇博客是不太可能把所用做的题目写出来的,所有我这个系列的博客上,每一篇就记载十道题目,就是pythontrip之挑战python的一页所具有的题目。
个人认为挑战python里面的题还是比较简单的。
题目:
01 a+b
给你两个数a、b,请你计算它们的和,并输出。
例如: a = 3, b = 2
则输出:5
提示:挑战python栏目的所有题目,题目中所给变量使用前不用声明,也不用赋值,系统自动赋值。
如本题,只需一行代码即可: print a + b
系统会自动为a和b赋值,并检查代码执行结果和标准答案是否相同。
这一题就是智障,没有解释。
print(a+b)
02 列表排序
给你一个列表 L, 对L进行升序排序并输出排序后的列表。
例如:L = [8,2,50,3]
则输出:[2,3,8,50]
这一题的排序主要用的是sorted()函数,有两种写法,当成语句使用还是函数使用都没有问题。
print sorted(L)
03 字符串逆序
给你一个字符串 a, 请你输出逆序之后的a。
例如:a=‘xydz’
则输出:zdyx
这一题使用切片操作就好了,具体怎么使用可以自行百度,如果还是不懂的可以发评论我来解答也可.
print a[::-1]
04 输出字典key
给你一字典a,如a={1:1,2:2,3:3},输出字典a的key,以’,’连接,如‘1,2,3’。要求key按照字典序升序排列(注意key可能是字符串)。
例如:a={1:1,2:2,3:3}, 则输出:1,2,3
ok,这一题的手法就比较巧妙了,讲一下思路,首先是把a中的所有keys取出,然后将其转化为字符串,再进行排序。
简单讲一下几个函数:
map()函数,逗号右边的东西进行逗号左边东西的操作,比如这一题就是把a的所有keys转化为字符。
join()函数和split()函数进行的操作的相逆的,join()进行字符串的拼接,split()进行字符串的分割。
print(",".join(sorted(map(str,a.keys()))))
05 输出字符奇数位置的字符串
给你一个字符串 a, 输出a中奇数位置字符构成的字符串(位置编号从1开始)。
例如:a=‘xyzwd’
则输出:xzd
这一题也是一个语句的事情同样是利用切片操作。
print a[::2]
06 求解100以内的所有素数
输出100以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后不能有空格)。
这一题的我的做法就比较蠢了,一个个遍历。(刚刚再写这一题的时候。。。懵了一会儿。。才反应过来1不是素数。。)
for i in range(2,101):
t = 1
for j in range(2,i):
if(i % j == 0):
t = 0
break
if(t):
print i,
07 求矩形面积
已知矩形长a,宽b,输出其面积和周长,面积和周长以一个空格隔开。
例如:a = 3, b = 8
则输出:24 22
这一题。。。我就不解释了。。。
print a*b,2*a+2*b
08 求中位数
给你一个整数列表L, 输出L的中位数(若结果为小数,则保留一位小数)。
例如: L=[0,1,2,3,4]
则输出:2
这一题也是简单到不知道怎么解释的。。。主要就是保留一位小数那里有些坑而已,除2的时候加个点零就好了.
L.sort()
if len(L) % 2 ==0:
print (L[len(L)/2]+L[len(L)/2-1])/2.0
else:
print(L[len(L)/2])
09 最大公约数
给你两个正整数a和b, 输出它们的最大公约数。
例如:a = 3, b = 5
则输出:1
这一题我用是蠢方法,反正不超时,第一步的if是如果a>b的话就交换a,b,这一个语句是非常酷的了。
if a>b:
a,b=b,a
t = a
while(1):
if(a % t ==0 and b % t ==0):
print t
break
t -=1
10 最小公倍数
给你两个正整数a和b, 输出它们的最小公倍数。
例如:a = 3, b = 5
则输出:15
嗯。。。还是蠢方法。。。。
if a > b:
a,b=b,a
t = b
while(1):
if(t % a ==0 and t % b ==0):
print t
break
t +=1
最后
没有想到居然写了好一会儿,第一次算是写完了,自我感觉不错,回想起刚刚学python的时候真的是一步一个坑/(ㄒoㄒ)/~~
虽然现在python水平比以前高了些许,但是还是要努力学习才行!