python 笔记

来源:互联网 发布:下载软件推荐 知乎 编辑:程序博客网 时间:2024/06/05 04:35

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 = 0space = 0digit = 0others = 0for c in str:    if c.isalpha():        letters += 1    elif c.isspace():        space += 1    elif c.isdigit():        digit += 1    else:        others += 1print '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 nexti = 5palin(i)print

好吧。看下函数是如何实现的。

就在用到的地方直接 def  fun_name(Parameter):

就OK了。之前可以有其他代码~~反正又没有主函数来调用。。

额,我用的 python2.5 版本 直接用 input()  接收的时候,发现数字OK, 字符不可以。改为 raw_input()  就OK了。


17.

s = 0l = range(1,21)def op(x):    r = 1    for i in range(1,x + 1):        r *= i    return rs = 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 sysl = 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.staticVarprint Static.staticVara = 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) * yMINIMUM = 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实现的读书笔记而已。。。。