• Python 学习之二:Python超短教程


    前言

    本教程综合Stanford CS231N和UC Berkerley CS188的Python教程。
    教程非常短,但适合有一定编程基础。学过其它语言的童鞋。

    Python

    启动Python 解释器

    Python能够有两种使用方式,一种就是使用解释器interpreter,相似Matlab。输入一行代码,执行一行;还有一种就是编写一个py后缀的文档。称为脚本,然后python xxx.py执行脚本script。这里我们使用解释器。


    在已安装Python的情况下。在Terminal输入python,能够启动Python:

    FloodSurges-MacBook-Pro:~ FloodSurge$ python
    Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46) 
    [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 

    这里我是使用2.7.9版本号的Python

    操作符

    在Python解释器中,使用>>>来表示一行代码,相似Matlab(使用<<)
    先是最主要的操作符+。-。*,/:

    >>> 1 + 1
    2
    >>> 2 * 3
    6
    >>> 2 / 3
    0
    >>> 2 / 3.1
    0.6451612903225806

    接下来还有经常使用的次方运算,採用**

    >>> 2 ** 2
    4
    >>> 2 ** 3
    8

    数据类型

    Python和其它语言非常大的不同就是Python不须要定义数据类型,数据类型是依据数据的情况自行确定的。
    比方上面的运算。输入3就是整型,输入3.1就是浮点数

    数字

    x=3
    
    print type(x) # Prints "<type 'int'>"
    print x # Prints "3"
    print x + 1 # Addition; prints "4"
    print x - 1 # Subtraction; prints "2"
    print x * 2 # Multiplication; prints "6"
    print x ** 2 # Exponentiation; prints "9"
    x += 1
    print x # Prints "4"

    注意Python不支持x++或者x–的操作

    布尔量Boolean

    用True和False表示

    f = False
    print type(t) # Prints "<type 'bool'>"
    print t and f # Logical AND; prints "False"
    print t or f # Logical OR; prints "True"
    print not t # Logical NOT; prints "False"

    这里要注意Python中不使用&&, ||,。来表示与。或,非
    而是直接使用英语and,or,not

    >>> 1==0
    False
    >>> not (1==0)
    True
    >>> (2==2) and (2==3)
    False
    >>> (2==2) or (2==3)
    True

    字符串

    hello = 'hello' # String literals can use single quotes
    world = "world" # or double quotes; it does not matter.print hello # Prints "hello"
    print len(hello) # String length; prints "5"
    hw = hello + ' ' + world # String concatenationprint hw # prints "hello world"
    hw12 = '%s %s %d' % (hello, world, 12) # sprintf style string format
    inprint hw12 # prints "hello world 12

    有非常多现成的方法对字符串进行操作:

    
    print s.capitalize() # Capitalize a string; prints "Hello"
    print s.upper() # Convert a string to uppercase; prints "HELLO"
    print s.rjust(7) # Right-justify a string, padding with spaces;
    print s.center(7) # Center a string, padding with spaces; prints
    print s.replace('l', '(ell)') # Replace all instances of one substri
    # prints "he(ell)(ell)o"
    >>> 'artificial' + "intelligence"
    'artificialintelligence'

    其实,无论是用单引號还是双引號都是一样的。

    >>> a = 'hello'
    >>> a
    'hello'
    >>> b = "hello"
    >>> b
    'hello'
    >>> a == b
    True

    那么,我们能够通过dir和help来查看某个类型相应的methods.

    >>> a = 'hello'
    >>> dir(a)
    ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
    >>> help(a.find)
    Help on built-in function find:
    
    find(...)
        S.find(sub [,start [,end]]) -> int
    
        Return the lowest index in S where substring sub is found,
        such that sub is contained within S[start:end].  Optional
        arguments start and end are interpreted as in slice notation.
    
        Return -1 on failure.

    上面的help之后按Q退出查看。

    数据结构

    List列表

    >>> fruits = ['apple','orange','pear','banana']
    >>> fruits[0]
    'apple'

    能够通过 + 来连接列表

    >>> otherFruits = ['kiwi','strawberry']
    >>> fruits + otherFruits
    >>> ['apple', 'orange', 'pear', 'banana', 'kiwi', 'strawberry']

    Python支持负值索引,比方fruits[-1]就是列表的最后一个。

    >>> fruits[-2]
    'pear'
    >>> fruits.pop()
    'banana'
    >>> fruits
    ['apple', 'orange', 'pear']
    >>> fruits.append('grapefruit')
    >>> fruits
    ['apple', 'orange', 'pear', 'grapefruit']
    >>> fruits[-1] = 'pineapple'
    >>> fruits
    ['apple', 'orange', 'pear', 'pineapple']

    接下来能够用:来检索多个数据:

    >>> fruits[0:2]
    ['apple', 'orange']
    >>> fruits[:3]
    ['apple', 'orange', 'pear']
    >>> fruits[2:]
    ['pear', 'pineapple']
    >>> len(fruits)
    4

    然后lists也能够嵌套:

    >>> lstOfLsts = [['a','b','c'],[1,2,3],['one','two','three']]
    >>> lstOfLsts[1][2]
    3
    >>> lstOfLsts[0].pop()
    'c'
    >>> lstOfLsts
    [['a', 'b'],[1, 2, 3],['one', 'two', 'three']]

    循环Loops:

    animals = ['cat', 'dog', 'monkey']
    for animal in animals:
       print animal
    # Prints "cat", "dog", "monkey", each on its own line.

    假设要获取每一个元素的索引值,使用枚举Enumerate:

    animals = ['cat', 'dog', 'monkey']
    for idx, animal in enumerate(animals):
       print '#%d: %s' % (idx + 1, animal)
    # Prints "#1: cat", "#2: dog", "#3: monkey", each on its own line

    List Comprehension 从一个数据转换到还有一个数据:

    >>> nums = [0,1,2,3,4]
    >>> squares = []
    >>> for x in nums:
    ...     squares.append(x ** 2)
    ... 
    >>> print squares
    [0, 1, 4, 9, 16]

    也能够这么写:

    >>> nums = [0,1,2,3,4]
    >>> squares = [x**2 for x in nums]
    >>> print squares
    [0, 1, 4, 9, 16]

    还能够包括条件:

    nums = [0, 1, 2, 3, 4]
    even_squares = [x ** 2 for x in nums if x % 2 == 0] 
    print even_squares # Prints "[0, 4, 16]"

    Tuple

    相似List,但初始化之后就不可更改

    >>> pair = (3,5)
    >>> pair[0]
    3
    >>> x,y = pair
    >>> x
    3
    >>> y
    5
    >>> pair[1] = 6
    TypeError: object does not support item assignment

    Set集合

    Set集合没有顺序

    >>> shapes = ['circle','square','triangle','circle']
    >>> setOfShapes = set(shapes)
    >>> setOfShapes
    set(['circle','square','triangle'])
    >>> setOfShapes.add('polygon')
    >>> setOfShapes
    set(['circle','square','triangle','polygon'])
    >>> 'circle' in setOfShapes
    True
    >>> 'rhombus' in setOfShapes
    False
    >>> favoriteShapes = ['circle','triangle','hexagon']
    >>> setOfFavoriteShapes = set(favoriteShapes)
    >>> setOfShapes - setOfFavoriteShapes
    set(['square','polyon'])
    >>> setOfShapes & setOfFavoriteShapes
    set(['circle','triangle'])
    >>> setOfShapes | setOfFavoriteShapes
    set(['circle','square','triangle','polygon','hexagon'])

    Dictionary字典

    相似java的Map。一个Key相应一个Value。

    >>> studentIds = {'knuth': 42.0, 'turing': 56.0, 'nash': 92.0 }
    >>> studentIds['turing']
    56.0
    >>> studentIds['nash'] = 'ninety-two'
    >>> studentIds
    {'knuth': 42.0, 'turing': 56.0, 'nash': 'ninety-two'}
    >>> del studentIds['knuth']
    >>> studentIds
    {'turing': 56.0, 'nash': 'ninety-two'}
    >>> studentIds['knuth'] = [42.0,'forty-two']
    >>> studentIds
    {'knuth': [42.0, 'forty-two'], 'turing': 56.0, 'nash': 'ninety-two'}
    >>> studentIds.keys()
    ['knuth', 'turing', 'nash']
    >>> studentIds.values()
    [[42.0, 'forty-two'], 56.0, 'ninety-two']
    >>> studentIds.items()
    [('knuth',[42.0, 'forty-two']), ('turing',56.0), ('nash','ninety-two')]
    >>> len(studentIds)
    3

    写脚本Script

    就是新建一个文件,然后把后缀改成py。

    然后在里面输入代码。比方foreach.py:

    # This is what a comment looks like
    fruits = ['apples','oranges','pears','bananas']
    for fruit in fruits:
        print fruit + ' for sale'
    fruitPrices = {'apples': 2.00, 'oranges': 1.50, 'pears': 1.75}
    for fruit, price in fruitPrices.items():
        if price < 2.00:
            print '%s cost %f a pound' % (fruit, price)
        else:
            print fruit + ' are too expensive!'

    然后在terminal在相应路径下(记住不是在Python 解释器下执行)

    python foreach.py
    apples for sale
    oranges for sale
    pears for sale
    bananas for sale
    oranges cost 1.500000 a pound
    pears cost 1.750000 a pound
    apples are too expensive!

    这里还有两个非常实用的map和filter方法:

    >>> map(lambda x: x * x, [1,2,3])
    [1, 4, 9]
    >>> filter(lambda x: x > 3, [1,2,3,4,5,4,3,2,1])
    [4, 5, 4]

    注意空格

    Python对语法要求非常高,比方for语句下一个语句要空格否则可能报错

    >>> for x in nums:
    ... squares.append(x ** 2)
      File "<stdin>", line 2
        squares.append(x ** 2)
              ^
    IndentationError: expected an indented block
    >>> for x in nums:
    ...     squares.append(x ** 2)

    Function函数

    fruitPrices = {'apples':2.00, 'oranges': 1.50, 'pears': 1.75}
    def buyFruit(fruit, numPounds):
        if fruit not in fruitPrices:
            print "Sorry we don't have %s" % (fruit)
        else:
            cost = fruitPrices[fruit] * numPounds
            print "That'll be %f please" % (cost)
    # Main Function
    if __name__ == '__main__':
        buyFruit('apples',2.4)
        buyFruit('coconuts',2)

    Class 类

    class FruitShop:
        def __init__(self, name, fruitPrices):
            """
                name: Name of the fruit shop
                fruitPrices: Dictionary with keys as fruit
                strings and prices for values e.g.
                {'apples':2.00, 'oranges': 1.50, 'pears': 1.75}
            """
            self.fruitPrices = fruitPrices
            self.name = name
            print 'Welcome to the %s fruit shop' % (name)
        def getCostPerPound(self, fruit):
            """
                fruit: Fruit string
            Returns cost of 'fruit', assuming 'fruit'
            is in our inventory or None otherwise
            """
            if fruit not in self.fruitPrices:
                print "Sorry we don't have %s" % (fruit)
                return None
            return self.fruitPrices[fruit]
        def getPriceOfOrder(self, orderList):
            """
    orderList: List of (fruit, numPounds) tuples
    Returns cost of orderList. If any of the fruit are
            """
            totalCost = 0.0
            for fruit, numPounds in orderList:
                costPerPound = self.getCostPerPound(fruit)
                if costPerPound != None:
                    totalCost += numPounds * costPerPound
            return totalCost
        def getName(self):
            return self.name

    使用对象Object

    在前面在shop.py定义了FruitShop类,接下来我们能够在另外的脚本中使用这个类:
    採用import

    mport shop
    shopName = 'the Berkeley Bowl'
    fruitPrices = {'apples': 1.00, 'oranges': 1.50, 'pears': 1.75}
    berkeleyShop = shop.FruitShop(shopName, fruitPrices)
    applePrice = berkeleyShop.getCostPerPound('apples')
    print applePrice
    print('Apples cost $%.2f at %s.' % (applePrice, shopName))
    otherName = 'the Stanford Mall'
    otherFruitPrices = {'kiwis':6.00, 'apples': 4.50, 'peaches': 8.75}
    otherFruitShop = shop.FruitShop(otherName, otherFruitPrices)
    otherPrice = otherFruitShop.getCostPerPound('apples')
    print otherPrice
    print('Apples cost $%.2f at %s.' % (otherPrice, otherName))
    print("My, that's expensive!")

    静态和实例变量

    在person_class.py中输入:

    class Person:
        population = 0
        def __init__(self, myAge):
            self.age = myAge
            Person.population += 1
        def get_population(self):
            return Person.population
        def get_age(self):
            return self.age

    这里的population是一个静态变量,或者说是全局变量
    执行例如以下:

    >>> import person_class
    >>> p1 = person_class.Person(12)
    >>> p1.get_population()
    1
    >>> p2 = person_class.Person(63)
    >>> p1.get_population()
    2
    >>> p2.get_population()
    2
    >>> p1.get_age()
    12
    >>> p2.get_age()
    63

    其它

    使用range来循环:

      for index in range(3):
    
            print lst[index]
  • 相关阅读:
    docker容器的时间同步
    Java中的各种bean对应的意义(VO,PO,BO,QO, DAO,POJO,DTO)
    Vue-admin工作整理(十九):从数字渐变组件谈第三方JS库Count-to的使用
    HTTP 方法:Get与Post分析
    Java核心知识盘点(三)- 框架篇-Spring
    Java核心知识盘点(二)- 缓存使用
    Java核心知识盘点(一)- 数据存储
    Java基础知识盘点(三)- 线程篇
    Java基础知识盘点(二)- 集合篇
    Java基础知识盘点(一)- 基础篇
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5352314.html
Copyright © 2020-2023  润新知