有趣的超短python代码_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 ""

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 ""

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 concatenation

?print hw # prints "hello world"

?hw12 = '%s %s %d' % (hello, world, 12) # sprintf style string format

in

?print 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 "", 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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值