python 笔记

发布时间:2014-10-23 23:28:15
来源:分享查询网

1.  输入   i = int(raw_input('input gain:\n'))   或 input   详细 http://blog.csdn.net/carolzhang8406/article/details/6093537  2. 输出   print 'bonus = ', bonus   3.  if  else 语句 if i <= 10000:     bonus = i * 0.1 elif i < 20000:     bonus = i * 2000 else:     bonus = 10000 * 0.1 + (i - 100000) * 0.075 如果你写import math 那么在程序中你得写:math.sqrt 4. 用print输出多个变量可以用 , 隔开。 print x y z    是不可以的 print x, y, z  是ok的 格式化输出   print "%-5d" % n 多个变量一起格式化输出时:   'char = %d, space = %d, digit = %d, others = %d' % (letters, space, digit, others) 5.  l = [x] l.append() l.sort() print l >>> [2, 5, 7] 6.  连着输出 10个 *  : print '*' * 10 试了下, 一个 print  语句 后面  加不加  \n 都是默认换行的呢 7.  chr( 97)  求出 ASCII 为 97的字符      ord('a')  求a的ascii值 8.  range >>> for i in range(1, 5): print i , 1 2 3 4 >>> for i in range(5): print i , 0 1 2 3 4 >>> 九九乘法: for i in range(1, 10): for j in range(1, i + 1): print '%d * %d = %d' % (i, j, i * j), print '\n' sys.stdout.write 可以输出一行数据,不会默认自动换行了。。。 需要  import sys 9.   pythonwin 运行 出现  systax error 时,可能出现了语法错误 如 for m in range(101, 201):  写成  from m in range(101, 201): 这个时候,光标会停在错误的一行。 10 , 将一个正整数分解质因数 k = int(raw_input("input\n")) print k, '=', for i in range(2, k + 1): while k != i: if k % i == 0: print i, print '*', k = k / i else: break print k 11. python 中不支持 ? :  运算符 12.    python 也不支持  自增 ++ 和 自减 -- 13.   一个例子: str = raw_input('input a string\n') letters = 0 space = 0 digit = 0 others = 0 for c in str: if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else: others += 1 print 'char = %d, space = %d, digit = %d, others = %d' % (letters, space, digit, others) 首先,输入前面不加 int() 的时候,就是不强转,是一个字符串。 关于字符串可以调用的函数,常用的  isalpha() 判断一个字符是否是 中英文字母, isspace() 是否是空格, isdigit() 是否是数字 遍历字符串 for c in str 来实现。 14.  lambda 函数 详解: http://www.jbxue.com/article/12892.html reduce函数详解:  http://blog.sina.com.cn/s/blog_798f21a00100wnrl.html 15.      t = a     a = a + b     b = t 这三行代码如何用一行就实现呢?   a, b = a + b,  a   b,a = a , a + b 16.  C 经典100例python ''' 【程序27】 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 1.程序分析: 2.程序源代码: ''' def palin(n): next = 0 if n <= 1: next = input() print print next else: next = input() palin(n - 1) print next i = 5 palin(i) print 好吧。看下函数是如何实现的。 就在用到的地方直接 def  fun_name(Parameter): 就OK了。之前可以有其他代码~~反正又没有主函数来调用。。 额,我用的 python2.5 版本 直接用 input()  接收的时候,发现数字OK, 字符不可以。改为 raw_input()  就OK了。 17. s = 0 l = range(1,21) def op(x): r = 1 for i in range(1,x + 1): r *= i return r s = sum(map(op,l)) print '1! + 2! + 3! + ... + 20! = %d' % s 此处的map函数 相当于 对 L 里的每个元素执行op()函数, map返回的结果应该是 [ op(1), op(2), `````op(20)]   而sum 则可以对这个[]  里面的所有元素求和。 map详细用法请参考  http://my.oschina.net/zyzzy/blog/115096 map 还有一个用法第一个参数不是函数名而是类型  ia, ib, ic = map(int , raw_input().split())   具体参考 http://www.cnblogs.com/skyhacker/archive/2012/02/03/2337572.html  #但是我没有跑通上面这个程序,不知道为么⊙﹏⊙  File "E:\python\myPython\Script28.py", line 9, in <module>     s = sum(map(op,l)) TypeError: 'long' object is not callable 18. 用来判断是否是回文,可以用字符串来解决 x = int(raw_input("input a number:\n")) x = str(x) for i in range(len(x)/2): 19.  sys.stdin import sys l = sys.stdin.read(1) sys.stdin.flush() r = sys.stdin.read(1) sys.stdin.flush() print l,r input: 1234 第一次运行程序输出 1 2 再运行一次,不会弹出输入框,但是会输出 3 4 read(1)  每次从缓冲区中读取一个字符 flush()清除缓冲区中内容 将两个 fulsh 注释掉之后, >>>(输入 )1234 >>> (输出) 1  【第一次运行】 2 3 【第二次运行】 4  【第三次运行】 +_+ 不是很懂。。。 20.          if __name__ == '__main__':  详细参考下面: http://zhidao.baidu.com/question/189875539.html?qbl=relate_question_0 21.  二维数组的用法: if __name__ == '__main__': a = [] sum = 0.0 for i in range(2): a.append([]) for j in range(2): a[i].append(float(raw_input("input num:\n"))) for i in range(2): sum += a[i][i] print sum print a 5.0 >>> [[1.0, 2.0], [3.0, 4.0]] 22.   l = []   的 append 方法 和 insert 方法 l.append(iA) l.insert(index, iB) 23.   python中类的写法: 来自c经典100例Python实现 题目:学习static定义静态变量的用法 class Static: staticVar = 0 def varFun(self): self.staticVar += 1 print self.staticVar print Static.staticVar a = Static() for i in range(3): a.varFun() >>> 0 1 2 3 >>>  如果不用类的话由于python中 没有 static 这个功能,不能实现--就: def varfunc(): var = 0 print 'var = %d' % var var += 1 if __name__ == '__main__': for i in range(3): varfunc() >>> var = 0 var = 0 var = 0 24   用python 实现的 swap 函数好简单: def swap(x, y): x, y = y, x return (x, y) python中没有 宏。  可以用lambda来代替。lambda是表达式,很短小。一般会与 filter   map  reduce 一起结合使用。 详细参考:  http://www.cnblogs.com/longdouhzt/archive/2012/05/19/2508844.html ex: 用lambda实现的 max 和 min 函数 MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y MINIMUM = lambda x,y : (x > y) * y + (x < y) * x python也没有 ? :  所以用上述实现。 25  a = 1     b = ~a b = -2 26   python调用图形界面? 可以使用一个轻量级的跨平台GUI Tk python 可以通过 Tkinter接口调用这个库。 Tkinter就是 TK 的python接口。 典型使用方法: from Tkinter import * #创建一个画布 canvas = Canvas(width=800, height=600, bg='green') #start  your  canvas #在画布上写字 canvas.create_text(22, 88, text = 'Leehom', fill = 'pink') #在画布上画圆 canvas.create_oval(310 ,250,310 ,250 , width=1) #在画布上加载图片  im = PhotoImage(file = 'C:\\lh.gif') #使用PhotoImage打开图片【TK默认加载的是gif格式的图片】  canvas.create_image(30, 50, image = im) #使用create_image将图片添加到Canvas组件中 #end  canvas.pack(expand=YES, fill=BOTH)  #将canvas添加到主窗口   mainloop()  #应该是让画布一直显示的吧 —————————————————— 如何加载 非 gif 格式的图片? 需要加载   from PIL import Image, ImageTK  模块 我的python安装目录   D:\Program Files\python2.5.4\Lib\site-packages  下没有PIL 模块 可以去   http://www.pythonware.com/products/pil/  下载:   Python Imaging Library 1.1.7 for Python 2.5 (Windows only) 就可以加载了。 27.  在用TK的时候,还有一种写法: from Tkinter import *     root = Tk()     root.title('Canvas')     canvas = Canvas(root,width = 400,height = 400,bg = 'yellow')      canvas.pack()     root.mainloop() 开始在先前的 *.py  里面写,提示错误,   name 'Tk' is not defined 网上说,把这个文件的后缀名改为  *.pyc  就ok了。试了下,可以。 28  C中可以用结构体存储一个“对象”的数据,python中可以这样来实现:      #stu     # num : string     # name : string     # score[4]: list student = [] for i in range(N):     student.append(['','',[]]) 这样调用: for i in range(N):         stu[i][0] = raw_input('input student num:\n')         stu[i][1] = raw_input('input student name:\n')         for j in range(3):             stu[i][j].append(int(raw_input('score:\n'))) 29.   python中的链表  []          可以用数组?来初始化链表 list(): arr1 = (3,12,8,9,11)     ptr = list(arr1) 链表有 sort() reverse() 内置函数。 打印链表直接 print 链表名字  即可。 30.   python中 person = {"li":18,"wang":50,"zhang":20,"sun":22} 可以这样用耶。 : 前面 是 key ,是用来快速查找元素的意思么?可是,string比较会快么? : 后面是数据。 m = 'li' person[m] 就等于 18 31. python中字符串比较,可以直接用 >  = <  if str1 > str2 : str1,str2 = str2,str1      字符串连接也可以直接用  +   a = "acegikm"     b = "bdfhjlnpq"     # 连接字符串     c = a + b 32.    python中的时间函数: import time print time.ctime(time.time()) print time.asctime(time.localtime(time.time())) print time.asctime(time.gmtime(time.time())) >>>  Tue Nov 19 15:47:47 2013 Tue Nov 19 15:47:47 2013 Tue Nov 19 07:47:47 2013 33 start = time.clock()    end = time.clock()     start = time.time()     end = time.time() 34   python中的 random import random i = random.randint(0,2**32) % 100 35  ''' 【程序96】 题目:计算字符串中子串出现的次数 1.程序分析: 2.程序源代码: ''' if __name__ == '__main__': str1 = raw_input('input a string:\n') str2 = raw_input('input a sub string:\n') ncount = str1.count(str2) print ncount 居然直接有  count() 这个函数 ⊙﹏⊙b汗 string.upper()  将 string转变为大写 36  python 中的文件操作 fp = open(filename, "w") 以写的方式打开文件filename,如果不存在就在当前目录下创建一个。 fp.write(ch) 将ch写入fp所指的文件中。  fp.close()  #关闭文件 读取就是  r   fp.read() 额,有米有 wr 既可以读也可以写?试了下,不行 声明,以上是初学者对  c经典100例python实现的读书笔记而已。。。。

返回顶部
查看电脑版