一. 第一个小程序:
python语法比较简单,采用缩进的方式,如下所示:
a = 100使用#进行注释,其他的每一行都是一个语句,当语句以冒号“:”结尾时,缩进的语句视为代码块。
if a >= 0:
print a
else:
print -a
按照约定俗成,一般使用Tab键缩进,或按四个空格。
注意:python程序是大小写敏感的。
二. 数据类型和变量
(1) 数据类型:
a. 整数:
python可以处理任意大小的整数
可以使用十六进制表示整数:0x前缀和0-9,a-f。如0xff00,0xa5b4c3d2
b. 浮点数:
浮点数就是小数,按照科学计数法表示时,一个浮点数的小数点位置是可变的。比如:1.23x109和12.3x108是相等的
对于很大或很小的浮点数,就需要用科学计数法表示,把10用e替代,1.23x109就是1.23e9或者12.3e8
c. 字符串:
python中字符串用单引号 ‘ ’ 或双引号“ ” 括起来。
如果单引号 ’ 本身也是一个字符,那就可以用双引号“ ” 括起来,如:print “I'm ok”
如果字符串内部既包含单引号 ‘ 又包含双引号“ ,那就用转义字符 \ 来标识,如:print "I\'m \"ok\""
右斜杠 \ 可以转义很多字符,比如 \n 表示换行, \t 表示制表符,\\ 表示 \
如果字符串里面有很多字符都需要转义,那就需要加很多 \ ,为了简化,python还允许用r' '表示‘ ’内部的字符串默认不转义。如:print r'\\\t\\'
>>> print '\\\t\\'如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,python允许用''' ''' 的格式表示多行内容,如:
\ \
>>> print r'\\\t\\'
\\\t\\
print '''line1
line2
line3'''
d. 布尔值:
一个布尔值只有True、False两种值,要么是True,要么是False,请注意大小写
在Python中,可以直接用True、False表示布尔值
>>> 3 > 2布尔值可以用and、or、not运算
True
>>> 3 > 5
False
>>> True and True
True
>>> True and False
False
>>> False and False
False
>>> True or True
True
>>> True or False
True
>>> False or False
False
>>> not True
False
>>> not False
True
e. 空值
空值是python里一个特殊的值,用None表示。None不能理解为0,因为0时有意义的,而None是一个特殊的空值。
(2) 变量
变量名必须是字母、数字、和下划线的组合,且不能以数字开头。
可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如:
a = 123 # a是整数这种变量本身类型不固定的语言成为动态语言,和JS很像,而Java是静态语言,因为它在定义变量时必须指定变量类型,
a = ‘ABC’ # a变为字符串
如:int a = 123;
(3) 常量
所谓常量就是不能变得变量,在python中,通常常量全部大写,这个和Java一样
如 PI = 3.1415926,但事实上PI仍然是一个变量,Python根本没有任何机制保证PI不会被改变。
三. 字符串和编码
1. 编码
ASCII编码:只有127个字母被编码到计算机中,即大小写英文字母、数字和一些符号,只使用一个字节保存。
Unicode编码:把所有语言都统一到一套编码里,这样就不会再有乱码问题了,一般用两个字节保存一个字符。但是如果所有的语言都统一成Unicode
编码,乱码问题就此消失了,但是,如果我们写的文本基本上都是英文的话,用Unicode编码会比ASCII编码多出一倍的存储空间,在存储和传输上就
不划算了。本着节约的精神,又出现了把Unicode编码转为可变长编码的UTF-8编码
由于python源代码是一个文本文件,所以,当源码中包含中文的时候,在保存源码时,需要指定保存为utf-8编码。当python解析器读取源代码时,
为了让它按utf-8读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python第一行注释是为了告诉linux系统,这是一个python可执行程序。
# -*- coding: utf-8 -*-
第二行注释是为了告诉python解释器,按照utf-8编码读取源代码,否则,你在源码中写的中文输出可能会有乱码。
2. 格式化字符串:
在python中,使用%来格式化字符串,%s表示用字符串替换,%d表示用整数替换,%f表示浮点数。有几个%?占位符,后面就跟几个变量或者值,
顺序要对应好。如果只有一个%?,括号可以省略。
>>> 'Hello, %s' % 'world'有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
>>> 'growth rate: %d %%' % 7
'growth rate: 7 %'
四. 使用list和tuple
(1) list
list是python中内置的一种有序集合,可以随时添加和删除其中的元素。
比如,列出班里所有同学的名字,可以用一个list表示。变量classmates就是一个list
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
a. 获取list元素个数:len(classmates)
b. 通过索引访问list中每个位置的元素(从0开始): classmates[0]
如果要取最后一个元素,也可以用-1:classmates[-1],倒数第二个就是classmates[-2]
c. 往list中追加元素到末尾:classmates.append('jim')
d. 插入元素到指定位置:classmates.insert(1, 'tom')
e. 删除list末尾的元素:classmates.pop()
f. 删除指定位置的元素:classmates.pop(2)
g. 把某个元素替换成别的元素,可以直接赋值给对应索引位置:classmates[2] = 'jack'
list里面可以嵌套另一个list,比如:
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']我们可以把s看成一个二维数组,如果要拿到‘php’,可以写s[2][1]
>>> len(s)
4
(2) tuple
tuple和list很相似,但是tuple一旦初始化就不能修改。所以tuple中没有添加元素或删除元素的方法。
>>> classmates = ('Michael', 'Bob', 'Tracy')
不可变的tuple有什么用?
因为tuple不可变,所以代码更安全,如果可能,能用tuple代替list就尽量用tuple吧。
使用tuple需要小心一点,以防掉入它的陷阱:
** 陷阱1:只有1个元素的tuple定义时必须加一个逗号,以消除歧义,因为括号会让解析器以为它是数学公式中的小括号
>>> t = (1,)** 陷阱2:tuple不可变,但是如果tuple里面存了一个list的话,那这个list却是可变的。
>>> t
(1,)
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
五. 条件判断和循环
(1) 条件判断:
根据用户年龄打印不同的内容:
age = 3if 判断条件可以简写,比如:
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
else:
print 'kid'
if x:只要x是非零数值、非空字符串、非空list就判断为True,否则为False
print 'True'
(2) 循环
a. for循环
sum = 0如果求1-100的整数之和,可以使用range()函数,它可以生成一个整数序列
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print sum
b. while循环
求100以内奇数之和:
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print sum
六. 使用dict和set
(1) dict
和java中的map一样,使用key - value存储
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}a. 存入一个值:d['Adam'] = 67
>>> d['Michael']
95
b. 一个key对应一个value,如果key不存在会报错, 为了避免错误,有两种方法判断key是否存在
一是通过in判断key是否存在:‘Tracy’ in d # 返回True
二是通过dict提供的get方法:d.get('jim') # 返回None
c. 删除一个key: d.pop('Bob')
(2) set
set和java中的set也一样,key不能重复,不存储value
>>> s = set([1, 2, 3])1. 添加元素到set中: s.add(4)
>>> s
set([1, 2, 3])
2. 从set中删除元素:s.remove(4)
3. set可以做数学意义上的交集、并集操作
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
set([2, 3])
>>> s1 | s2
set([1, 2, 3, 4])
原文请参考:廖雪峰