Python学习笔记
仅写给弱渣渣的自己……
首先把python的环境搞一搞……,我觉得在win下pydev挺好使的。
Eclipse配置PyDev插件:http://blog.csdn.net/sunshine3257/article/details/7408102
python的指南网上有好多,随便找个翻翻即可入门。
Python 入门指南:http://www.pythondoc.com/pythontutorial3/index.html
c和java有神马,就想让python有神马,于是我第一个python程序就写了一个标准I/O重定向:
1 read = open('stdin.in', 'r') 2 sys.stdin = read 3 a, b = map(int,raw_input().split()) 4 print(a + b)
慢慢的看如《Python Essential Reference》这样的教材,并不适合饥不择食的我,so,直接去网站上CHA代码来看了。
找了个算法题练习了下基本的逻辑结构和数据存储,于是有了下面我的第二个python程序:
1 n = int(input()) 2 a = input() 3 b = input() 4 cnt = 0 5 index1 = -1 6 index2 = -1 7 mp = {} 8 flag1 = True 9 flag2 = True 10 l = [chr(ord('a')+ i) for i in range(26)] 11 for i in range(n) : 12 if a[i] != b[i] : 13 cnt += 1 14 mp[a[i], b[i]] = i 15 for i in l : 16 if flag1 : 17 for j in l : 18 if flag1 : 19 if (i, j) in mp : 20 if(j, i) in mp : 21 index1 = mp[i, j] + 1 22 index2 = mp[j, i] + 1 23 flag1 = False 24 else : 25 for k in l : 26 if(j, k) in mp : 27 index1 = mp[i, j] + 1 28 index2 = mp[j, k] + 1 29 flag2 = False 30 elif(k, i) in mp : 31 index1 = mp[i, j] + 1 32 index2 = mp[k, i] + 1 33 flag2 = False 34 35 print(cnt -(2 if flag1 == False else 1 if flag2 == False else 0)) 36 print(index1, index2)
总结下python一些我觉得“不可思议”的地方:
for语句就是迭代一个序列的,并无其他用法……
python的字典很方便,很像c和java里的map,不过依然沿袭了python任性的特点,key和value都可以是任意类型的,不过key还是unique的,也就是不能有同类型同值的key,否则会被后来赋值的覆盖。
列表和元组都有解析构造的形式,不熟悉这种语法的很容易被唬住,所以这部分还是查查reference,把原理搞明白。
if else 这类的语句除了常规写法外还有表达式这样的写法,如 a = 1 if b > c else 0 ,好有趣……
其他的都比较容易接受。
目前就发现这些,未完待续……