争做python小能手(一)

来源:互联网 发布:windows是什么文件夹 编辑:程序博客网 时间:2024/04/28 03:13

通过在 Codeforces 上用 Python 过题来增加对 python 的理解。

------------------------------------

CodeForces 208A

--

s = raw_input()a = s.split('WUB')for t in a:if t!='':print t,

--

1、 raw_input()读取一行输入作为字符串,一般配合split()作为读取数据

2、 str.split(str="", num=string.count(str))  该方法返回字符串中的所有单词的列表,使用str作为分隔符(默认为空格),拆分的数目为num。

3、 print 后面用逗号隔开表示输出后不换行,用空格链接下一个输出,实际上这种情况用join更方便

4、 str.join(sequence)  用str分割sequence中的每一个元素


由于cf判答案是忽略空格,所以也可以这样写

--

print raw_input().replace('WUB', ' ')

--

5、 str.replace(old, new[, max]) 该方法返回将old替换为new后的字符串,替换数量默认为最大。

-------------

CodeForces 208D

--

n = input()p = map(int,raw_input().split())a = map(int,raw_input().split())money = 0ans = [0] * 5for x in p:money += xfor i in xrange(4,-1,-1):ans[i] += money // a[i]money %= a[i]print ' '.join(map(str,ans))print money
---

6、 input()读入一个元素,如果要读入字符串的话,字符串要加上引号,通常用来读入数字

7、 map(function, iterable, ...)  来自于函数式编程的思想,对可迭代函数'iterable'中的每一个元素应用‘function’方法,将结果作为list返回。

8、 python中初始化一个一维数组要用 [0] * n,初始化多维数组则要用[[0]*(m) for _ in xrange(n)]

-----------------

CodeForces 208B

--

n = input()top = raw_input().split()stack = [top]st = set([tuple(top)])found = Falsewhile (len(stack)):top = stack.pop()if len(top)==1:found = Truebreak;for i in [-2,-4]:if len(top)>=-i and (top[-1][0]==top[i][0] or top[-1][1]==top[i][1]):tmp = list(top)last = tmp.pop()tmp[i+1] = lastif tuple(tmp) not in st:st.add(tuple(tmp))stack.append(tmp)if found:print "YES"else:print "NO"

--

9、set是一个无序不重复元素集。set([e1,e2,e3]) 将列表里的元素初始化为一个集合

10、 tuple()将list转换成tuple,list()将tuple转换成list...

11、 len() 求元素数量

12、 听说python递归效率低,用栈更快?大概吧...



0 0
原创粉丝点击