zoukankan      html  css  js  c++  java
  • Python:基础知识(一)


    输入

    input():接收命令行下输入

    1)在py2下:如果你输的是一串文字,要用引号''或者""引起来,如果是数字则不用。

    2)在py3下:相当于py2的raw_input(),得到的都是字符串,而非数值


    if语法

     if 条件:

           选择执行的语句

    elif 条件:

           选择执行的语句

    else:

           选择执行的语句

    特别说明:条件后面的冒号不能少,同样必须是英文字符。

    特别特别说明:if内部的语句需要有一个统一的缩进,一般用4个空格。python用这种方法替代了其他很多编程语言中的{}。你也可以选择1/2/3...个空格或者按一下tab键,但必须整个文件中都统一起来。千万不可以tab和空格混用,不然就会出现各种莫名其妙的错误。所以建议都直接用4个空格。

    以缩进代替{},第一个缩进 为{,第一个不缩进为}

    例:

       thisIsLove = input()
       if thisIsLove:
           print "再转身就该勇敢留下来"

    break:跳出循环

    continue:进入下次循环


    while语法

    while 条件:

      选择执行的语句

    注意:循环体内的语句,缩进相同。if也是如此。

    break:跳出循环

    continue:进入下次循环


    for循环语法

      for  变量   in  序列  :

        循环执行体

      for i in range(1, 101):

           print i

      for ... in ...   #for循环的本质是对一个序列中的元素进行递归

      for i in range(a, b)  #从a循环至b-1

      for count in range(0,n)  #循环n次

      range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整数

    示例 :

    如果想让这5个*在同一行,python2的话就在print语句后面加上逗号

    for i in range(0, 5):

       print '*',

    python3需要加上end参数:

    for i in range(0, 5):

       print('*', end=' ')

     示例:

    第二个print的缩进和内层的for是一样的,这表明它是外层for循环中的语句,每次i的循环中,它会执行一次。

    print()没有写任何参数,是起到换行的作用


     模块

    通过函数,可以在程序里重用代码;通过模块,则可以重用别的程序中的代码。

    模块可以理解为是一个包含了函数和变量的py文件。在你的程序中引入了某个模块,就可以使用其中的函数和变量。

    1、import  模块名       

    import random:import语句告诉python,我们要用random模块中的内容。然后便可以使用random中的方法(调用方式“模块名.方法名”),比如:

    random.randint(1, 10)

    random.choice([1, 3, 5])

    想知道random有哪些函数和变量,可以用dir()方法:dir(random)

    2、 from 模块名 import 方法或变量名

    from 模块名 import 方法或变量名  as 方法或变量别名

    场景:如果只是用到模块中的一个函数或变量时

    调用方式:方法名(或变量名),不需要加模块名。

    例:

    1)from math import pi

       print(pi)

    2)from math import pi as math_pi

          print(math_pi)

    random

     from 模块名 import 方法名

      from random import randint

      randint产生随机数:

        randint(5, 10)将会产生一个5到10之间(包括5和10)的随机整数


    变量

      变量命名规则:

        1、必须以字母下划线(_)开头其余部分可以是字母、下划线(_)或数字(0-9)

        2、大小写敏感

    判断变量的数据类型的两种方法

    一、Python中的数据类型有数字、字符串,列表、元组、字典、集合等。有两种方法判断一个变量的数据类型

    1、isinstance(变量名,类型)

    2、通过与其他已知类型的常量进行对比:type()


    转义符,三个引号(''')

    的用途:1)转义,2)在源码换行(在代码中换行,而不影响输出的结果)

    在源码中换行,比如:

    "this is the

    same line"

    这个字符串仍然只有一行,和"this is thesame line"是一样的,只是在代码中换了行。当你要写一行很长的代码时,这个会派上用场(只是在源码中换行,实际数据不换行)。

    三个引号(''')或者("""):在三个引号中,可以方便地使用单引号和双引号(不需要转义符),并且可以直接换行(实际数据中换行)

    '''

    "What's your name?" I asked.

    "I'm Han Meimei."

    '''


    字符串格式化

    1、str():将数字转化为字符串

    num = 18

    print ('My age is' + num)

    2、%:对字符串进行格式化

    1)%d:替换整数,%dw会被%后面的整数替换

    num=19

    2)%f:替换小数,%.2f会保留2位小数

    3)%s:替换字符串

     

     4)使用tuple元组替换多个。

     


    类型转换

    int(x) #把x转换成整数

    float(x) #把x转换成浮点数

    str(x) #把x转换成字符串

    bool(x) #把x转换成bool值

    在python中,其他类型转成 bool 类型时,以下值会被认为是False:

       为0的数字,包括0,0.0

       空字符串,包括'',""

       表示空值的None

       空集合,包括(),[],{}

    其他的值都认为是True

    None是python中的一个特殊值,表示什么都没有,它和0、空字符、False、空集合都不一样。

    在if、while等条件判断语句里,判断条件会自动进行一次bool的转换。比如

       a = '123'

       if a:

           print 'this is not a blank string'

    这在编程中是很常见的一种写法。效果等同于

    if bool(a)      或者     if a != ''


    函数

    关键字def,格式如下:

    def sayHello():

       print 'hello world!'

     

    return是函数的结束语句,return后面的值被作为这个函数的返回值。函数中任何地方的return被执行到的时候,这个函数就会结束。

    函数参数默认值

    def hello(name = 'world'):

       print 'hello ' + name

    以上函数,name 参数可忽略

    函数的参数传递

    def func(arg1, arg2):

      print arg1, arg2

    1、按参数位置匹配。如:func(3, 7)

    2、指定形参的名称。如:func(arg2=3, arg1=7)

    3、如果参数有默认值,则可只传部分参数,按位置匹配(在前)和按参数名匹配可以结合使用。如:

    def func(arg1=1, arg2=2, arg3=3):

      print arg1, arg2, arg3

    调用:

    func(2, 3, 4)

    func(5, 6)

    func(arg2=8)

    func(arg3=9, arg1=10)

    func(11, arg3=12)

    4、任意数量的参数 def func(*args),把参数作为 tuple 传入函数内部。如:

    def calcSum(*args):

      sum = 0

      for i in args:

        sum += i

      print sum

    调用:

    calcSum(1,2,3)

    calcSum(123,456)

    calcSum() 

    输出:

    6

    579

    0

      在变量前加上星号前缀(*),调用时的参数会存储在一个 tuple(元组)对象中,赋值给形参。在函数内部,需要对参数进行处理时,只要对这个 tuple 类型的形参(这里是 args)进行操作就可以了。因此,函数在定义时并不需要指明参数个数,就可以处理任意参数个数的情况。需要注意,tuple 是有序的,所以 args 中元素的顺序受到赋值时的影响。

    5、func(**kargs) 把参数以键值对字典的形式传入。如:

    def printAll(**kargs):

      for k in kargs:

        print k, ':', kargs[k]

     调用:

    printAll(a=1, b=2, c=3)

    printAll(x=4, y=5)

    输出:

    a : 1

    c : 3

    b : 2

    y : 5

    x : 4

      字典是无序的,所以在输出的时候,并不一定按照提供参数的顺序。同样在调用时,参数的顺序无所谓,只要对应合适的形参名就可以了。于是,采用这种参数传递的方法,可以不受参数数量、位置的限制。

    6、参数调用方式混合使用。例:

    def func(x, y=5, *a, **b):

      print x, y, a, b

    在混合使用时,首先要注意函数的写法,必须遵守先后顺序:无默认值形参,默认值形参,元组形参,字典形参。

    带有默认值的形参(arg=)须在无默认值的形参(arg)之后;元组参数(*args)须在带有默认值的形参(arg=)之后;字典参数(**kargs)须在元组参数(*args)之后。可以省略某种类型的参数,但仍需保证此顺序规则。

    调用时也需要遵守先后顺序 :不指定参数名,指定参数名。

    指定参数名称的参数要在无指定参数名称的参数之后;不可以重复传递,即按顺序提供某参数之后,又指定名称传递。

    在函数被调用时,参数的传递过程为:不指定参数名匹配,指定参数名匹配,多余的不指定参数名为元组参数,多余的指定参数名为字典参数。

    1.按顺序把无指定参数的实参赋值给形参;

    2.把指定参数名称(arg=v)的实参赋值给对应的形参(非元组、非字典);

    3.将多余的无指定参数的实参打包成一个 tuple 传递给元组参数(*args);

    4.将多余的指定参数名的实参打包成一个 dict 传递给字典参数(**kargs)。

    示例:

    def func(x, y=5, *a, **b):

    print x, y, a, b

    调用:

    func(1)

    func(1,2)

    func(1,2,3)

    func(1,2,3,4)

    func(x=1)

    func(x=1,y=1)

    func(x=1,y=1,a=1)

    func(x=1,y=1,a=1,b=1) --a=1是字典参数

    func(1,y=1)

    func(1,2,3,4,a=1)

    func(1,2,3,4,k=1,t=2,o=3) 

    输出:

    1 5 () {}

    1 2 () {}

    1 2 (3,) {}

    1 2 (3, 4) {}

    1 5 () {}

    1 1 () {}

    1 1 () {'a': 1}

    1 1 () {'a': 1, 'b': 1}

    1 1 () {}

    1 2 (3, 4) {'a': 1}

    1 2 (3, 4) {'k': 1, 't': 2, 'o': 3}


    列表list

    list是以[]包围、逗号分隔的一组数据,数据之间的类型可以不同。

    l = [1, 1, 2, 3, 5, 8, 13]

    l = [365, 'everyday', 0.618, True]

    列表以for遍历 for i in l:

    range(1,10)在py2中产生一个list;在py3中返回一个可以循环遍历的range对象,可以通过list()函数转换成列表。

    1、以索引访问,从0开始

    print(I[0])

    I[0]='a'

    1)如果索引为负数,则表示从后往前倒数:

    l[-1]表示l中的最后一个元素。

    l[-3]表示倒数第3个元素。

    2)切片操作符,以:分隔的一对数字

    冒号前的数字表示开始位置(从0开始),冒号后的数字表示 结束位置。[起始位置:结束位置),即包含起始位置,不包含结束位置

    l = [365, 'everyday', 0.618, True]

    l[1:3]得到的结果是['everyday', 0.618]

    如果不指定第一个数,切片就从列表第一个元素开始。

    如果不指定第二个数,就一直到最后一个元素结束。

    都不指定,则返回整个列表的一个拷贝。

    l[:3]

    l[1:]

    l[:]

    切片中的数字可以为负数。

    l[1:-1]  得到['everyday', 0.618]

    2、向list添加元素:append()方法

    I.append('xx')

    3、删除list中的元素:del命令

    del I[2]


    list与字符串

    字符串分隔成list: split()

    split默认是按照空白字符(包括空格、换行符 、制表符 )进行分割,得到一个list。另外可以揎分割符。

    list连接成字符串:join()

    join()是连接符的方法,参数是list

    s = ';'

    li = ['apple', 'pear', 'orange']

    fruit = s.join(li)

    print(fruit)

    得到结果'apple;pear;orange'。

     ';'.join(['apple', 'pear', 'orange'])


     字符串的遍历与访问,与list类似

     遍历

    通过for...in可以遍历字符串中的每一个字符。

    word = 'helloworld'

    for c in word:

       print c

     索引访问

    通过[]加索引的方式,访问字符串中的某个字符。

    print word[0]

    print word[-2]

     切片

    通过两个参数,截取一段子串,具体规则和list相同。

    print word[5:7]

    print word[:-5]

    print word[:]

    连接字符

    join方法也可以对字符串使用,作用就是用连接符把字符串中的每个字符重新连接成一个新字符串。

    newword = ','.join(word)


     字典

    基本格式是(key是键,value是值):

    d = {key1 : value1, key2 : value2 }

    键要注意的是:

    1.键必须是唯一的;

    2.键只能是简单对象,比如字符串、整数、浮点数、bool值。lis就不能作为键,但是可以作为值。

    访问规则:

    1、python字典中的键/值对没有顺序,无法用索引访问字典中的某一项,而是要用键来访问。

      d[key] 

      d.get(key)

          字典类的get方法是按照给定key寻找对应项,如果不存在这样的key,就返回空值None。

    2、通过for...in遍历(遍历的变量中存储的是字典的键):

    for name in score:

       print score[name]

    例:

    score = {

       '萧峰': 95,

       '段誉': 97,

       '虚竹': 89

    }

    改变某一项的值:score['虚竹'] = 91

    增加一项(给一个新键赋值):score['慕容复'] = 88

    删除一项:del score['萧峰']

    新建一个空的字典:d = {}


     元组

    元组(tuple)也是一种序列,和list类似,只是元组中的元素在创建之后就不能被修改。

    如:

    postion = (1, 2)

    geeks = ('Sheldon', 'Leonard', 'Rajesh', 'Howard')

    都是元组的实例。它有和list同样的索引、切片、遍历等操作

    例:

    def get_pos(n):

        return (n/2, n*2)

    得到这个函数的返回值有两种形式,一种是根据返回值元组中元素的个数提供变量:

    x, y = get_pos(50)

    print x

    print y

    还有一种方法是用一个变量记录返回的元组:

    pos = get_pos(50)

    print pos[0]

    print pos[1]


    异常处理 try ... except ...

    try:

       f = file('non-exist.txt')

       print 'File opened!'

       f.close()

    except:

       print 'File not exists.'


    文件操作

    打开文件:f = open('data.txt')

    open('文件名')

    文件名可以用文件的完整路径,也可以是相对(代码的)路径。

    python默认是以只读模式打开文件。如果想要写入内容,在打开文件的时候需要指定打开模式为写入f = open('output.txt', 'w')

    • 'w'就是writing,以这种模式打开文件,原来文件中的内容会被你新写入的内容覆盖掉,如果文件不存在,会自动创建文件。
    • 不加参数时,open为你默认为'r',reading,只读模式,文件必须存在,否则引发异常。
    • 还有一种模式是'a',appending。它也是一种写入模式,但你写入的内容不会覆盖之前的内容,而是添加到文件中。

    注:py2里可以使用 open 或 file 方法打开文件,py3 只能使用 open

    读取文件:data = f.read() 

    read() #把文件内所有内容读进一个字符串中

    readline() #读取一行内容

    readlines() #把内容按行读取至一个list中

    写入文件:f.write('a string you want to write')

      必须以w或a模式打开文件,才能写入

    关闭文件:f.close()


    pass语句

     pass是空语句,是为了保持程序结构的完整性。

    pass 不做任何事情,一般用做占位语句。

    实例:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*- 
    
    # 输出 Python 的每个字母
    for letter in 'Python':
       if letter == 'h':
          pass
          print '这是 pass 块'
       print '当前字母 :', letter
    
    print "Good bye!"

    以上实例执行结果:

    当前字母 : P
    当前字母 : y
    当前字母 : t
    这是 pass 
    当前字母 : h
    当前字母 : o
    当前字母 : n
    Good bye!
  • 相关阅读:
    剑指offer:二维数组的查找
    安卓突击:绘制图像
    安卓突击:绘制图形和文本
    Android突击:定制控件
    Android突击:PanelLayout的实现
    POJ 1426 Find The Multiple
    POJ 2251 Dungeon Master
    event.target的认识
    JS延迟加载
    jquery中position 和offset的区别
  • 原文地址:https://www.cnblogs.com/xianhan/p/8873226.html
Copyright © 2011-2022 走看看