三,python语法简介
1,在交互模式下,最近一次表达式输出保存在"_"变量中,如下例:
>>> tax = 12.5/100
>>> price = 100.50
>>> price * tax
12.5625
>>> price+_
113.0625
>>>
这个变量是只读的,只能被覆盖。
2,字符串
字符串可以用+号连接,也可以用*号循环,例:
>>> word = 'help'+'A'
>>> word
'helpA'
>>> word * 5
'helpAhelpAhelpAhelpAhelpA'
>>>
单引号,和双引号没有区别。
字符串可以用下标引用,例如,word[4] 将会输出A
但是,字符串不能被改写,如果按照索引赋值将引来错误。例如,word[1]='A'
索引为负数代表从字符串的右侧索引。例如,word[-1] 输出A
关于索引可能有点晕,看看下面:
helpA的从左到右的索引,01234,从右到左的索引是,-1-2-3-4-5
3,Unicode字符
这部分看的似懂非懂,暂且忽略。
4,链表
操作与字符串类似,与之不同的是,链表可以通过索引改变里面的值。
>>> word = ['abc',123,'def']
>>> word
['abc', 123, 'def']
>>>
可以通过索引来减少链表成员,例如,
>>> word[0:1]=[]
>>> word
[123, 'def']
嵌套链表
>>> p = [2,3]
>>> q = [1,p,4]
>>> q[1]
[2, 3]
>>> p
[2, 3]
>>>
5,开始编程
while循环
>>> a,b = 0,1>>> while b<10:
... print b
... a,b = b,a+b
...
1
1
2
3
5
8
■非0值为真,否则为假
■以缩进来区分程序块
rang()函数
建立数值序列
>>> range(1,10,3)
[1, 4, 7]
>>>
for循环
>>> for n in range(2,10):
... for x in range(2,n):
... if n % x == 0:
... print n,'equals',x,'*',n/x
... break
... else:
... print n,'is a prime number'
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
>>>
else放的位置有点奇怪,为什么不是和上面的if对齐呢?如上例,else可以没有if单独存在吗?把else换个位置试试
>>> for n in range(2,10):
... for x in range(2,n):
... if n % x == 0:
... print n
... break
... else:
... print n,'is prime number'
...
3 is prime number
4
5 is prime number
5 is prime number
5 is prime number
6
7 is prime number
7 is prime number
7 is prime number
7 is prime number
7 is prime number
8
9 is prime number
9
>>>
输出的结果不同了,证明前面例子中的else位置没有错,感觉这个else是多余的,如果直接写print语句结果应该是一样的。
pass语句是填充用的语句。当for、while循环体中没有内容时,用pass填充。
四,定义函数
>>> def fib(n):
... """print a fibonacci series up to n."""
... a,b = 0,1
... while b<n:
... print b,
... a,b = b,a+b
...
>>> fib(2000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
>>>
定义一个有返回值的函数
>>> def fib(n):
... """return list"""
... result = []
... a,b = 0,1
... while b < n:
... result.append(b)
... a,b = b,a+b
... return result
...
>>> f100 = fib(100)
>>> f100
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>>
深入函数
>>> def f(a,L=[]):
... L.append(a)
... return L
...
>>> print f(1)
[1]
>>> print f(2)
[1, 2]
>>>
L的值被累加,如何不让他累加呢?
>>> def f(a,L=None):... if L is None:
... L = []
... L.append(a)
... return L
...
>>> print(1)
1
>>> print(2)
2
>>>
参数关键字
支持匿名参数,和动态参数,也支持lambda的内嵌函数
>>> def make_incrementor(n):
... return lambda x:x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43
>>>