python-01
一、什么是python
python是一个面向对象的程序语言
二、python能干什么WEB开发
GUI开发
网络编程
应用程序开发
三、VIM的功能
#vim ~/.vimrc
set ai //设置自动缩进
set expandtab //阻止将8个空格转换为tab
四、一般情况下,在python中输入的字符,如果只是一串字符,那么它应该是定义好的名字(函数、对象、变量),否则会报错,提示名字找不到。也可以是关键字(如if/for/while)。如果一定表示是字符,那么必须给字符加上引号。单引导和双引号在python中一样的含义。
>>>print '''this is test'''五、让python的交互解释器支持tab补全、提示功能
#!/usr/bin/env python
# python startup file
import sys
import readline
import rlcompleter
import atexit
import os
# tab completion
readline.parse_and_bind('tab: complete')
# history file
histfile = os.path.join(os.environ['HOME'], '.pythonhistory')
try:
readline.read_history_file(histfile)
except IOError:
pass
atexit.register(readline.write_history_file, histfile)
del os, histfile, readline, rlcompleter
#chmod 755 tab.py
#cp tab.py /usr/lib64/python2.6/site-packages/
#python
>>>import tab
就可以使用TAB了
>>>import sys
>>>sys.<tab><tab>
显示相关函数及模块
六、导入模块
一个模块就是一个python文件,该文件中有写好函数、类等。通过导入这个模块使得该模块中的函数可用。
#vim star.py 定义一个函数
#!/usr/bin/env python
def pstar():
print '*' * 50
#vim hello.py 执行上面该文件的函数,格式为——文件名.文件名里的函数()
注意 stat在哪个目录就在哪个目录下执行
#!/usr/bin/env python
import star
star.pstar()
print 'hellp world!'
star.pstar()
七、raw_input()
用于接收用户的输入
#vim login.py //程序执行时,屏幕上提示username:,用户输入用户名后
//将用户的输入保存到username这个变量中
#!/usr/bin/env python
username = raw_input("username:")
print 'welcome back',username
注意:用户所输入的任何内容,都将保存成字符串。
查看raw_input的帮助
>>>help(raw_input)
可引用getpass模块
#!/usr/bin/env python
import getpass
user = raw_input('username:')
#passwd = raw_input('password:')
passwd = getpass.getpass()
if user == 'bob' and passwd == '123456':
print 'login successful!'
else:
print 'login lost'
八、注释
和shell脚本一样,可使用#进行注释
使用在线文档功能。如上面打印*号的例子
#!/usr/bin/env python
''' this is my python
this is 1 python
'''
def pstar():
"this is print 50 stars"
print '*' * 50
python
>>> import star
>>> help (star)
Help on module star:
NAME
star - this is my python
FILE
/root/bin/star.py
DESCRIPTION
this is 1 python
- >>>help (star.pstar)
- Help on function pstar in module star: pstar() this is print 50 stars
若要支持中文
添加#coding:utf8
写一个小程序。提示用户输入用户名和密码。如果用户名是bob,密码是123456,就提示用户登陆成功,否则提示失败。
#!/usr/bin/env python
user = raw_input("username:")
passwd = raw_input("password:")
if user == "bob" and passwd == "123456":
print "login ok"
else:
print "login lost"
运算符
+(加) -(减) *(乘) /(除) %(取余) //(地板除) **(次方)
比较运算符
< <= > == !=
逻辑运算符
and or not
九、变量
变量可以使用的字符包括字母、数字和下划线,但是数字不能是第一个字符。虽然变量可以以_作为第一个字符,但是系统中有很多相关的名称以_开头,有特殊含义,所有不建议使用以_开头的变量。变量的名称区分大小写,即str1和Str1是不同的
在对变量赋值的时候,如果要把一个数字以字符串的方式赋值给变量,那么必须用引号
注意:python不支持 i++或++i这样的写法
以0开头为8进制,以0X开头为16进制
python支持五种基本数字类型,其中三种是整数类型
int(有符号整数)
long(长整数)
bool(布尔值)
float(浮点值)
complex(复数)
字符串
使用单引号、双引号、三引号标识的部分都表示字符串,字符串是一个序列类型,也就是可以使用下标来取出第N个字符
>>> str = 'python'
>>> str[0]
'p'
>>> str[6] 会报错,IndexError,因为下标是从0到5
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> str[-2] 负数表示从右向左取
'o'
>>> str[2:5] 字符串也支持切片功能,取出下标是第三到第五个字符。注意后面的数字所对应的字符不会被取出
'tho'
>>> str[2:10] 取出下标从3到末尾的全部字符(因为一共只有6个字符)
'thon'
>>> str[2:] 取出下标从2到末尾的全部字符
'thon'
>>> str[:4] 取出从开头到下标为3的字符
'pyth'
字符串连接操作+号
>>> a = 'this is'
>>> b = 'python'
>>> print a + ' ' + b
this is python
重复字符串使用*号
>>> print b * 2
pythonpython
在字符串中定义控制字符,如字符串中间有回车
>>> a = 'this\nis'
>>> print a
this
is
>>> a
'this\nis'
>>> a = '''this
... is'''
>>> a
'this\nis'
>>> print a
this
is
十、列表和元组
与字符串类似,列表和元组也属于序列类型,即它们也支持切片、下标。列表和无级的区别是列表是可变以,元组不可变
>>> alist = [1,'abc',2,'def'] 定义一个列表
>>> print alist 查看列表
[1, 'abc', 2, 'def']
>>> alist[3] 取出def
'def'
>>> alist[1][2] 取出abc中的c
'c'
>>> alist[:2] 取为从头到abc
[1, 'abc']
>>> alist.append(3) 向列表追加新元素
>>> alist
[1, 'abc', 2, 'def', 3]
>>> alist.append('ghi')
>>> print alist
[1, 'abc', 2, 'def', 3, 'ghi']
给def重新赋值
>>> alist[:4]
[1, 'abc', 2, 'aaa']
>>> alist[1] = 'bbb'
>>> print alist
[1, 'bbb', 2, 'aaa', 3, 'ghi']
判断某一个对象是否在列表中
>>> 'aaa' in alist
True
>>> 'ccc' in alist
False
对于元组来说,大多数的操作和列表一样,只是它不可变的。
- 定义一个元组
>>> blist = (1,'aaa',2,'bbb')
>>> print blist
(1, 'aaa', 2, 'bbb')
十一、字典
字是一个映射类型,使用键-值的方式表示数据,没有下标
adict = {'name':'tom','age':23} 定义一个字典
- >>> adict {'age': 24, 'name': 'tom'}
>>> adict['name'] 取出值
'tom'
>>> adict['age']=24 修改
>>> adict
{'age': 24, 'name': 'tom'}
>>> adict['city']='SH' 添加,如何没有则添加一个键和值,有则修改
>>> adict
{'city': 'SH', 'age': 24, 'name': 'tom'}
>>> adict.keys() 查看所有键名
['city', 'age', 'name']
十二、各种数据类型的区别
1、数字、字符、元组是不可变类型;列表、字典是可变类型。列表和字典,可以修改其中某些项目的值。但是不能直接改变一个字符串中的某一个字母,也不能修改元组中的某一项的值。
2、字符串、元组、列表是序列类型,而字典是映射类型。
3、字典、元组、列表是容器类型的。
十三、扩展
列表、元组以及字典中的元素都可以包含其他类型
>>> adict = {'tom':['male',23],'bob':['male',25]} 字典里加列表
>>> adict
{'bob': ['male', 25], 'tom': ['male', 23]}
>>> adict['bob'][1]
25
十四、if语句
判断成绩
#!/usr/bin/env python
#coding:utf8
a = int(raw_input('enter ?:'))
if a >= 90:
print 'ok'
elif a >= 75:
print 'good'
elif a >= 60:
print 'pass'
else:
print 'no pass'
编写一个石头、剪刀、布的游戏。你和计算机各出一项,判断输赢
提示:可使用random模块中的choice随机在一个列表中某一项
import random
a = ['石头','剪刀','布']
b= random.choice(a)
print b
方法一:将胜利的定一个列表,从中查找,若没有,则平局或失败
#!/usr/bin/env python
#coding:utf8
import sys
import random
alist = ['剪刀','石头','布']
winlist = [['剪刀','布'],['石头','剪刀'],['布','石头']]
ainput = '''(0)剪刀
(1)石头
(2)布
this is:'''
anum = raw_input(ainput)
if anum not in '012':
print "is 0/1/2"
sys.exit(1)
jsb = random.choice(alist)
a = alist[int(anum)]
print "you this is :",a,'\n computer is :',jsb
if a == jsb:
print '\033[32;1mflat\033[0m'
elif [a,jsb] in winlist:
print '\033[31;1myou win\033[0m'
else:
print '\033[31;1myou lose\033[0m'
方法二:根据字典下标
#!/usr/bin/env python
#coding:utf8
import random
import sys
list = ['剪刀','石头','布']
dict = {'剪刀':0,'石头':1,'布':2}
input ='''(0)剪刀
(1)石头
(2)布
this is: '''
num = raw_input(input)
if num not in '012':
print '0/1/2'
sys.exit(1)
jsb = random.choice(list)
a = list[int(num)]
if a == jsb:
print 'flat'
elif (dict(a) - dict(jsb) == 1) or (dict(a) - dica(jsb) == -2):
print 'you win'
else:
print 'you lose'