Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57815
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 199
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-07 22:11
文章分类

全部博文(13)

文章存档

2014年(13)

我的朋友

分类: Python/Ruby

2014-03-11 16:51:20

print

>>> print ('age:',42)

age: 42---------------逗号输出

>>> print ('age:',42)

age: 42

>>> print ('age:'42)

SyntaxError: invalid syntax

>>> print (1,2,3)

1 2 3

>>> na='chen'

>>> sa='mr.'

>>> gre='hello'

>>> print(gre,sa,na)

hello mr. chen

>>> print (gre+',',sa,na)

hello, mr. Chen

把某件事作为另一件事导入

1.import somemodule

2.from somemodule import somefunction

3.from somemodule import somefunction,anotherfunction,yetanotherfunction

4.from somemodule import *----------确定自己想要从给定模块导入所有功能

当两个模块都有open函数需要使用第一种方式导入,然后:

module1.open()

module2.open()

或者:

from module1 import open as open1

from module2 import open as open2

另一种方法:在语句末尾加一个as子句,给出整个模块的别名

import math as foolar

>>> foolar.sqrt(4)

2.0

>>> from math import sqrt as foolar----------给函数提供别名

>>> foolar(4)

2.0

赋值魔法

序列解包----------将多个值的序列解开,然后放到变量序列中

>>> x,y,z=1,2,3--------------多赋值操作

>>> print (x,y,z)

1 2 3

>>> x,y,x=1,2,3

>>> print (x,y,z)

3 2 3

>>> print (x,y,x)

3 2 3

>>> x,y=y,x---------------交换位置

>>> print (x,y)

2 3

>>> values=1,2,3

>>> values

(1, 2, 3)

>>> x,y,z=values

>>> x

1

>>> 

-------------对元组的处理

>>> sc={'name':'chen','like':'food'}

>>> pp,values=sc.popitem()

>>> pp

'name'

>>> values

'chen'

链式赋值-------将同一个值赋给多个变量

x=y=somefunction()

等同于:y=somefunction()

x=y

不等同于:x=somefunction()

    Y=somefunction()

增值赋值------将表达式运算符放在赋值运算符=左边

>>> x=2

>>> x+=1

>>> x

3

>>> x*=2

>>> x

6

>>> fond='foo'

>>> fond+='foo'

>>> fond

'foofoo'

>>> fond*=2

>>> fond

'foofoofoofoo'

>>> 

 

条件和条件语句

布尔变量

真值

下列值作为布尔表达式会被解释器看做假:

False  None  0  “”  ()  []  {}

标准值False ,None,所有类型的数字0,空序列(列表,元组,字符串,空字典)都为假,其他一切都解释为真(True

0,1)与(False,True)

>>> True

True

>>> False

False

>>> True==1

True

>>> False==1

False

>>> True+False+42

43

布尔值属于布尔类型;bool函数可以用来转换其他值

>>> bool('i think , therefore i am')

True

>>> bool(42)

True

>>> bool("")

False

>>> bool(0)

False

条件执行和if语句

name=input('what is your name?')

if name.endswith('chen'):

    print ('hello ,mr.chen')

>>> 

what is your name?chen

hello ,mr.chen

>>> 

else子句

name=input('what is your name?')

if name.endswith('chen'):

    print ('hello ,mr.chen')

else:

    print ('hello,stranger')

>>> 

what is your name?qqq

hello,stranger

>>> 

elif子句-----检查多个条件,后面带条件

num=input('input a number: ')

if num>'0':--------’0’表示字符串,输入赋值时是字符串

    print ('the number is positive.')

elif num<'0':

    print ('the number is negative.')

else:

    print ('the number is zero.')

嵌套代码块----类似C语言了

name=input('what is your name?')

if name.endswith('chen'):

    if name.startswith('mr.'):

        print ('hello,mr.chen')

    elif name.startswith('mrs.'):

        print ('hello ,mrs.chen')

    else:

            print ('hello ,chen')

else:

    print ('hello ,stranger')

 

>>> 

what is your name?chen

hello ,chen

>>> 

what is your name?mr.chen

hello,mr.chen

>>> 

what is your name?rrr

hello ,stranger

>>> 

更复杂的条件

is:同一性运算符,而不是相等性,同一对象

in:成员资格运算符

name=input('what is your name ')

if 's' in name:

    print ("true")

else:

    print ("false")

字符串和序列的比较

字符串可以按照字母顺序排列进行比较

>>> "alpha"<"beta"

True----------------------从第一个字母开始,如果大就不再进 行 下去

 布尔运算符

nu=input ('input a number (1-10): ')

if '1'<=nu<='10'://nu<=10 and nu>=1

    print ('true')

else:

    print ('false')

and 就是所谓的布尔运算符,连接连接两个布尔值,两者为 真返回真,否假,同类 ornot

断言--------要求某些条件必须为真,使用assert

>>> assert 0

>>> age=-2

>>> assert 0

Traceback (most recent call last):

  File "", line 1, in 

    assert 0

AssertionError

>>> assert 0

Traceback (most recent call last):

  File "", line 1, in 

    assert 0条件后可以添加字符串 解释断言 AssertionError: false

>>> 

------要确保程序中的某个条件一定为真才能让程序正常工 作,assert 就很有用

循环

while循环

x=1

while x<=100:

    print (x)

    x+=1

name=''

while not name or name.isspace(): 

    name=input('please enter your name: ')

print ('hello,%s!' % name)------输入回车,一直提示输入,直到输入为 止,连输入空格也一样

for循环

w=['hello',',','xi','men']

for word in w:

    print (word)

 

n=[0,1,2,3,4,5,6,7,8,9]

for number in n:

    print (number)

 

range(0,10)

[0,1,2,3,4,5,6,7,8,9]----内建范围函数

Range函数类似分片,范围=>0,没上限

>>> for number in range(1,100):

print (number)------输出199

 

循环遍历字典元素

d={'x':1,'y':2,'z':3}

for key in d:

    print(key,'corresponds to',d[key])

z corresponds to 3

x corresponds to 1

y corresponds to 2

------从输出可以看出,字典唯一对应的是键值,输出顺序随机,并无 固定顺序

 

d={'x':1,'y':2,'z':3}

for key,values in d.items():

    print(key,'corresponds to',values)

x corresponds to 1

y corresponds to 2

z corresponds to 3

------对顺序有要求时,items会将键值作为元组返回,然后便可顺序 输出,因为元组是不可变序列,只能xyz顺序输出

 

迭代工具

并行迭代

n=['chen','xi','tu','er']

age=[18,19,201,21]

for i in range(len(n)):------len(n)n=4,带入range 0<= <4范围

    print (n[i],'is',age[i],'years old')

chen is 18 years old

xi is 19 years old

tu is 201 years old

er is 21 years old

 

Zip函数进行并行迭代,可以把两个序列压缩在一起,返回一个元组

>>> n=['chen','xi','tu','er']

>>> age=[18,19,201,21]

>>> list(zip(n,age))

[('chen', 18), ('xi', 19), ('tu', 201), ('er', 21)]

在循环中解包元组:

n=['chen','xi','tu','er']

age=[18,19,201,21]

for i in zip(n,age):

    print (n,'is',age,'years old')

编号迭代

 

-----获取迭代对象的同时,还获取当前对象的索引

在一个字符串列表中替换包含’abc’的子字符串

1---------

strings=['abcd','abd','acd','abc']

for string in strings:

    if 'abc' in string:

        index=strings.index(string)

        strings[index]='[ddddd]'

print(strings)

enumerate-------在提供索引的地方迭代索引-值对

翻转和排序迭代

reversed,sorted函数

-----返回翻转或排序后的版本

>>> sorted([4,3,5,6,7])

[3, 4, 5, 6, 7]

>>> sorted('hello,world')

[',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

>>> list(reversed('hello,world'))

['d', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'h']

>>> ''.join(reversed('hello,world'))

'dlrow,olleh'

-----sorted返回列表,reversed返回可迭代对象,不能直接对他使 用索引,分片以及调用list方法

跳出循环

Break

-----结束(跳出)循环可以使用break语句

from math import sqrt

for n in range(99,0,-1):------------1为反向迭代步长参数

    root=sqrt(n)

    if root==int(root):

        print (n)

        break

------100往下倒0,找到一个平方数就不再继续循环

 

Continue

----跳过剩余循环体,但不结束循环

 

While true/break

word=input('please input a word: ')

while word:

    word=input('please input a word: ')

    print ('the word was '+word)

word=input('please input a word: ')

 

------输入单词,不输入结束循环

改善:

while True:

    word=input('please input a word: ')

    if not word:break

    print ('the word was '+word)

While True实现永远不会自己停止的循环

循环中的else子句

from math import sqrt

for n in range(99,81,-1):

    root=sqrt(n)

    if root==int(root):

        print (n)

        break

else:----------仅在没有调用break执行

    print ("didn't find it")

>>> 

didn't find it

>>> 

------for,while中都可以使用continue,break,else

 

列表推导式--轻量级循环

-----利用其他列表创建新列表,类似for

>>> [x*x for x in range(10)]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

>>> 

>>> [x*x for x in range(10) if x%3==0]

[0, 9, 36, 81]

 

>>> [(x,y) for x in range(3) for y in range(3)]

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

>>> 

类比:

a=[]

for x in range(3):

    for y in range(3):

        a.append((x,y)

 

>>> word=['1A','3B','3C','2D']

>>> number=['1a','2b','3c','4d']

>>> [b+'+'+g for b in number for g in word if b[0]==g[0]]

['1a+1A', '2b+2D', '3c+3B', '3c+3C']

>>> -------连接首字母相同的元素

三人行

pass,del,exec

Pass---做占位符

del

--------移除一个对象的引用和名字

>>> x=['hello','world']

>>> y=x

>>> del x

>>> y

['hello', 'world']

>>> 

------xy指向同一列表,删除x只是删名称,而不是值本 身,python是没办法删除值得,解释器会自动回收内存

使用execeval执行和求值字符串

exec

-------执行一个字符串的函数(python 3.0),动态创建 代码字符串

>>> exec ("print ('hello,world')")

hello,world

-----简单的使用不妥当,要声明一个命名空间放置变 量,从而不改变你的变量

in----起到放置代码字符串命名空间作用的字典

from math import sqrt

scope={}

exec ‘sqrt=1’ in scope

sqrt(4)

2.0

scope[‘sqrt’]--------不会覆盖原sqrt函数,通过exec 赋值的变量只在它的作用域内有效

1

eval

------用于求值,计算python表达式,并返回结果值

>>> eval(input("input an arithmetic expression: "))

input an arithmetic expression: 5+9

14

>>> 

-------也可使用命名空间,可以给eval提供两个命名空间, 一个全局一个局部,全局必须是字典,局部可以为任何形式 的映射

        scope={}

scope['x']=2

scope['y']=3

print(eval ('x*y',scope))----在使用命名空间前放入值进 去

总结:

打印:print

导入:import....as...

赋值

条件

断言

循环

列表推导式

 

 

阅读(1156) | 评论(0) | 转发(0) |
0

上一篇:linux基础学习-2

下一篇:python CGI+apache开发

给主人留下些什么吧!~~