PythonTip(1~5)题详解

来源:互联网 发布:hadoop 属于java吗 编辑:程序博客网 时间:2024/05/18 03:04

人生苦短,我用Python!

  最近先生推荐我去挑战一下PythonTip上面的题目。然后我做着做着就觉得Python白学了那么久,有时候一道简单的题目都做不出来,要么就是语法错误,要么格式错误,真是打击好大(哭~~~~)

  所以吧,还是慢慢来吧,不能急于求成,往往学的越快,基础越不扎实,也越容易忘。因此,现在不会都没有关系,慢慢来,别着急!!

  下面我把自己在PythonTip上做过的题目做一个总结,不过有些题目我也不会做,需要先生的指教,如果有同学有不同解法,欢迎评论,我会第一时间参与讨论!

题目1:just print a+b

描述: give you two var a and b, print the value of a+b, just do it!!

提示:挑战python栏目的所有题目,题目中所给变量使用前不用声明,也不用赋值,系统自动赋值。如本题,只需一行代码即可: print a + b
系统会自动为a和b赋值,并检查代码执行结果和标准答案是否相同。

分析:此题很简单了,就是让我们在代码行中输入

print a+b

这里题目要求不要定义变量,因为题目已经给你定义好了,哈哈(但是还是感觉怪怪的~~不习惯)

答案:

print a+b

举一反三

1.自己定义变量求和

# -*- coding: UTF-8 -*-a = 3b = 4print a+b输出: 7

题目2:list排序

描述:给你一个list L, 如 L=[2,8,3,50], 对L进行升序排序并输出,
如样例L的结果为[2,3,8,50]

分析:这个题大家都会做的,但是也要注意题目要求和格式;

答案:用冒泡排序,成功率最高。

for i in range(len(L)):    for j in range(len(L)-1):        if L[j] > L[j+1]:            L[j],L[j+1] = L[j+1],L[j]print L

同样,抛开题目,我们可以有以下解法:

举一反三

1.用sort()函数

# -*- coding: UTF-8 -*-L=[2,8,3,50]L.sort()print L

2.用sorted()函数

# -*- coding: UTF-8 -*-L=[2,8,3,50]   print sorted(L)

3.循环取出 L 中最小的放到空列表 s 中,在打印出来

# -*- coding: UTF-8 -*-L=[2,8,3,50]x = 0y = len(L)s = []while x<y:    s.append(min(L))    L.remove(min(L))    x = x + 1print s

4.快排

# -*- coding: UTF-8 -*-L=[2,8,3,50]def qsort(x):    if x == []:        return []    return qsort(filter(lambda smaller: smaller < x[0], x))+ [x[0]]  + qsort(filter(lambda larger: larger > x[0], x))print qsort(L)

题目3.字符串逆序

描述:给你一个字符串 a, 如a=‘12345’,对a进行逆序输出a。

分析:此题用切片的方法最好了

答案:

print a[::-1]

举一反三

1.用匿名函数 lambda()

# -*- coding: UTF-8 -*-a = '12345'print reduce(lambda x,y: y+x , a)

2.用循环

# -*- coding: UTF-8 -*-a = '12345'for x in range(len(a)):    print a[-(x+1)],

3.利用字符串的特征,字符串相加

# -*- coding: UTF-8 -*-a = '12345'#利用字符串能相加l=''for x in a:    l = x + lprint l

题目4:输出字典key

描述:给你一字典a,如a={1:1,2:2,3:3},输出字典a的key,以’,’链接,如‘1,2,3’。

分析:首先,知道怎么访问一个字典的key值吧,对咯,用 a.keys(),但是这个输出是列表形式哦,所以要做一些处理,将其转化成字符串的形式。

答案:用 join() 函数将 key 中的每个元素用逗号连接。

print ','.join(str(n) for n in a.keys())

举一反三

1.好弱智的解法

# -*- coding: UTF-8 -*-a={1:1,2:2,3:3}b=a.keys()l=len(b)c=[]for i in range(l):    c.append(str(b[i]))print ",".join(c)

题目5.输出字符奇数位置的字符串

描述:给你一个字符串 a, 输出字符奇数位置的字符串。如a=‘12345’,则输出135。

分析:切片

答案:

print a[::2]

举一反三

1.观察 a 字符串的下标,发现下标为偶数的其数字为奇数,所以,判断下标是偶数的,则输出该位置的元素即可。

# -*- coding: UTF-8 -*-a='12345'x=''for i in range(len(a)):    if i % 2 == 0:        x = x + a[i]print x

2.直接隔一个输出

# -*- coding: UTF-8 -*-a='12345'i =  0c = []while i <= len(a)-1:    c.append(a[i])    i = i + 2print ''.join(c)#但此时 c 是一个列表
1 0