Python

基本输入输出语句print和raw_input():

#输入语句:
>>> print'100+100=%d' %(100+100)
100+100=200

#输出语句
>>> name = raw_input('input your name:')
input your name:yinheyi
>>> print('hello,%s' %name)
hello,yinheyi
注意:raw_input()语句接收以后,默认保存为str格式哦,如果要比较大小的话,记得转为int类型
判断语句:if…elif…else
>>> if a>= 50:
...     print 'the number is big'
... elif a < 50:
...     print'the number is small'
... else:
...     print "i don't know"
... 
the number is big
循环语句: for…in
>>> sum = 0
>>> for number in range(101):
...     sum = sum + number
... 
>>> print sum
5050

循环语句: while
>>> sum = 0
>>> n = 1
>>> while n < 101:
...     sum = sum + n
...     n = n + 1
... 
>>> print sum
数据类型:列表、元组、字典、set

list: Python内置的一种数据类型是列表。lists是一个有序的集合,可以添加与删除元素。

生成它是用  []  就可以;

调用它时,用下标调用就可以啦(从0开始);如第一个元素,list[0];倒数第一个,list[-1];

可以用len()函数获得list元素的个数;

在尾部添加用append(), 中间插入用insert();尾部删除用pop();指定位置删除为pop(i);

 

元组(tuple):tuple和list非常类似,但是tuple一旦初始化就不能修改。只要记住它不能修改就可以啦

 

 

用 () 定义啊。

 

用下标调用,即tuple[1];

 

注意:它定义一个元素的tuple时,一定要这样写,如:name = (‘yin’,), 千万别写成 name = (‘yin’);

 

name = ('zhai','yin')
>>> name
('zhai', 'yin')
>>> name[0]
'zhai'
>>> name[-1]
'yin'

set:set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象。

要创建一个set,需要提供一个list作为输入集合:

通过add(key)与remove(key)添加与删除元素;

>>> s = set([1, 2, 3])
>>> s
set([1, 2, 3])

它的迭代:

对于list、tuple还有字符串都可以用 for…in 进行迭代哦;

而对于dictionary的话,也可以哦,只不过默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.itervalues(),如果要同时迭代key和value,可以用for k, v in d.iteritems()

那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

另外:Python内置的enumerate函数可以把一个list、tuple、字符串本身变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身

 

>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False


生成器:

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

创建方法1:第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

 

>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
 at 0x104feab40>
可以通过generator的.next()方法打印出来数据,另外也可以通过迭代哦,基本上我们都选择for…in迭代方法。
创建方法2:通过特殊函数创建:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator

#这是函数,输出斐波那契数列
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        print b
        a, b = b, a + b
        n = n + 1

#这是generator,也是生成斐波那契数列;
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1

 

 

Python程序结构

1、控制结构

 

  1. f a>b: #注释  ,多行注释可以用 '''多行注释'''     
  2.     result=a-b       
  3. elif a
  4.     result=b-a       
  5. else:       
  6.     result=0      
  7.     
  8. while a<100:  
  9.     if a==30:  
  10.         continue  
  11.     if a>50:  
  12.         break  
  13.     print(a)  
  14.     pass #nop  
  15.     
  16. while a<100:    
  17.     print(a)     
  18.     
  19. for eachnum in [1,2,3]:    
  20.     print(eachnum)     
  21.     
  22. def add(a=1,b=2):       
  23.     return (a+b)    

 

2、函数结构
  1. def addnum (a,b=1,*c,**d): #位置参数,默认参数,元组参数,字典参数,顺序不能改变    
  2.     print "a is "+str(a)+" b is "+str(b)    
  3.     sum=a+b;    
  4.     
  5.     print "para in c"           
  6.     for every_para in c:    
  7.         print every_para    
  8.         sum=sum+every_para    
  9.     
  10.     print "para in d"    
  11.     for every_key in d.keys():    
  12.         print every_key+" value "+str(d[every_key])    
  13.         sum=sum+d[every_key]    
  14.     
  15.     return sum    
  16.             
  17. #print addnum(1,2,3,4,key1=5,key2=6)    
  18.     
  19. #单行函数可以用表达式表示    
  20. mulnum=lambda a,b=2:a*b    
  21. print mulnum(10)   
3、类组织
  1. class person:    
  2.     "this is a person" #类文档    
  3.         
  4.     country="china" #类属性    
  5.     
  6.     def __init__ (self,name,age=28): #构造函数,用默认参数来实现函数重载    
  7.         self.name=name #实例属性不用预先定义,实际上可以随时添加   
  8.         self.age=age    
  9.         
  10.     def sayhello (self):实例方法,注意有self参数    
  11.         print "hello,i am a person"    
  12.           
  13.   
  14.     @classmethod    
  15.     def sayhello (cls):    
  16.         print "hello word "+cls.country    
  17.           
  18.     @staticmethod    
  19.     def sayhello ():    
  20.         print "hi word"    
  21.             
  22. person1=person("justsong")    
  23.     
  24.     
  25. class student(person):    
  26.     def __init__ (self,name,age=28,grade=3):    
  27.         person.__init__(self,name,age)    
  28.         self.grade=grade    
  29.             
  30. student1=student("cy") #静态方法和类方法,属性都被继承    
  31. student1.sayhello()    
  32.         
  33.     
  34. #方法的查找顺序是 静态方法---类方法---实例方法    
  35. #属性的查找顺序是 实例属性---类属性---基类属性   
4、模块组织

python的模块就是后缀为py或者pyc的python文件,python的包就是目录。

  1. import sys    
  2. import mod2 #一个模块对应着一个文件,mod2.py必须位于搜索路径中的一个    
  3. #因为模块名和文件名相同,所以就依赖于文件系统来保证全局名称空间中模块名的唯一性    
  4. from mod3 import mod3_b#引入名称空间    
  5. import mod4 as m4 #模块别名,m4=mod4也可以    
  6. from subdir import mod5 #导入一个包实际上是导入了__init__.py    
  7.     
  8. print "import path:"    
  9. for import_path in sys.path:    
  10.     print import_path    
  11.     
  12. print mod2.mod2_a    
  13. print mod3_b #已经把mod3导入到当前模块的命名空间    
  14. print m4.mod4_a    
  15. print mod5.mod5_a    
5、异常处理
  1. try:    
  2.     #a=2/0    
  3.     raise RuntimeError,"myfirsterror"    
  4.     
  5. except ZeroDivisionError,err:#err为错误信息,之前为错误类型    
  6.     print ZeroDivisionError,err    
  7.     
  8. except RuntimeError,err:    
  9.     print RuntimeError,err    
  10.     
  11. finally:    
  12.     print "good!"    

一:函数

  如果你需要在程序中重用代码,---------定义函数。 def 函数名(参数)://todo

      MyFunction(name):

      print "this is my  first function:% "name

         MyFunotion(" functionName")

  也可以将函数的参数定义为默认参数,注:默认参数一般放参数的最后


一个完整的Python文件。在物理上的组织方式上为文件(比如math.py);在逻辑的组织方式上,这个文件为模块(比如math)。
调用方式如下(方法一):

>>>import math

也可以同时调用多个模块(方法二):

>>>import modulename1,modulename2,……

同时也可以直接从模块中调取某一函数(方法三):

>>>from modulename import module Element

这里,直接调取某一函数与调取模块的方法在使用中的不同将在后面提到。




你可能感兴趣的:(Python)