python笔记《2》

三,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
>>> 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值