python笔记
在python中实现整除
- python实现除法,整数之间默认是整除,比如1/2=0,8/3=2.。。。。。除数和被除数有一个为浮点型,则结果为浮点数,比如1.0/2=0.5, 8/2.0=4.0…….
- 要想实现普通的除法,即:1/2=0.5,8/3=2.66666。则需要在pyhton中执行:import future import division ,再次使用发现:1/2=0.5 …….当然如果想实现整除,可以使用//,1//2=0,就算是浮点数,也会执行整除,1.0//2.0=0.0
获取用户输入
- input函数,input(“your age:”),x=imput(“x:”)
使用包和模块
- 包:就是py文件所在的目录,为了让python将其作为包对待,它必须包含一个命名为init.py的文件(模块),这个文件的内容就是包的内容,如果只是想把这个包当做普通模块使用的话(并且constants/init.py文件中包含语句:PI=3.14),可以执行import constants , print constants.PI。如果想把其他模块放置在这个包内,直接将对应的py文件放在这个包文件夹中即可。
包目录的结构和使用
- 比如想建立一个叫做drawing的包,其中包括名为shapes和colors的模块,则这个包的目录结构如下所示:
python/drawing/ 包目录(drawing包)
python/drawing/init.py 包代码(drawing模块)
python/drawing/colors.py colors模块
python/drawing/shapes.py shapes模块
- 要想使用这个这个包中模块,以下语句都是合法的:
‘import drawing 导入drawing模块’
‘import drawing.colors 导入colors模块’
‘form drawing import shapes 导入shapes模块’
在第一条语句drawing中init模块的内容是可用的,但drawing和colors模块则不可用。
执行第二条语句之后,colors模块可以使用,但是只能通过全名drawing.colors来使用
在执行第三条语句之后,shapes模块可用,可以通过短名(也就是仅使用shapes)来使用。
注意以上语句都是独立的,没有顺序和依赖之分。
在使用了“from 模块 import 函数” 这种形式的import命令之后,就可以直接使用函数,而不需要模块名作为前缀。
cmath和复数
如下命令:
from math import sqrt
‘sqrt(-1)’
‘nan’
**注:**nan是一个特殊值的简写,意思是“not a number” (非数值)
由于sqrt函数只能处理浮点数,不能处理复数,如果想处理复数,则需要cmath模块,如下所示:
`import cmath`
'cmath.sqrt(-1)'
'1j'
注意:这里没有使用from … import …语句,因为一旦使用了这个语句,就没法使用普通的sqrt函数了。这类命名冲突可能会很隐蔽,因此,除非真的需要from这个形式的模块导入语句,否则应该坚持使用普通的import函数。
这里函数的输出结果是1j,是个虚数,虚数均以j/J结尾,就像长整数使用L一样。
让python脚本像普通程序一样运行
linux/unix
如果想直接运行python程序,而不需要显示的调用python解释器,unix/linux中的标准使用方法是,在脚本的首行前面加上:#!,后面加上用于解释脚本的程序的绝对路径(这里就是python),即在脚本首行加上:
#!/usr/bin/env python
这样的话,不管python二进制文件在哪里,程序都会自动执行。
在实际运行脚本之前,必须让脚本文件具有可执行的属性:
chmod a+x hello.py
这样就可以双击脚本运行了,或者命令行中执行./hello.py
- windows
windows中直接双击python脚本文件即可,但是程序运行之后就会关闭窗口,可以在脚本的最后加上一句:
raw_input("press<enter>")
这样运行之后就提示按下enter键之后,关闭窗口。
在windows中,如果将python文件的后缀名改为:hello.pyw,双击文件,发现没有任何事情发生,为什么这样呢?稍后您解答
- 注释
在python中使用#来添加注释内容,这个符号右边的内容会被解释器忽略
python中字符串
使用单引号”或者双引号”“来表示字符串
- 在字符串中包含单引号的时候,使用双引号包含字符串 “let’s go ”
- 在字符串中包含双引号的时候,使用单引号包含字符串 ‘“hello”,tom’
- 或者使用转义字符进行转义, ‘let\’s go’, “\”hello\”,tom”
拼接字符串
使用这种方式拼接字符串:”hello”+”world”
将其他字符转换为字符串
str,repr,’ ‘,这三种形式是将python值转换为字符串的3种方法,函数str把值转换为合理形式的字符串,让字符串更容易阅读,repr和反引号则会创建一个字符串,把结果字符串转换为合法的python表达式。
例如:
print repr("hello,world!") 'hello,world!' print repr(1000L) 1000L print str("hello,world!") hello,world! print str(1000L) 1000 temp=42 print "the temperature is" +temp 错误提示 print "the temperature is" + 'temp' the temperature is 42
input和raw_input的比较
input(“Enter a number:”)
Enter a number:3
3raw_input(“Enter a number:”)
Enter a number:3
‘3’除非对input有特别的需要,否则应该尽量使用raw_input函数
长字符串,原始字符串,Unicode
长字符串:可以使用三个引号来写长字符串,
”’我是三个引号
可以
跨行,可以加”双引号”或者’单引号’,不需要转义字符
”’原始字符串:字符串前面使用r来表示原始字符串,这样输出的时候就会按照原始输出,不会对转义符号进行转义(不能在原始字符串的结尾输入\)
print r”c:\nowhere…”
c:\nowhere…unicode字符串
u’hello,world’在python中的普通字符串在内部是以8位的ASCII码形成存储的,而Unicode字符串则存储为16位unicode字符,这样可以表示更多的字符集了。
可以看到unicode字符串使用u前缀,就像原始字符串使用r一样。
注意:在python3.0中,所有字符串都是unicode字符串。
第二章:列表和元组
。。。
第三章:使用字符串
3.1 基本字符串操作
所有标准的序列操作(索引,分片,乘法,判断成员资格,求长度,取最小值和最大值)对字符串都是适用的。
**但是字符串都是不可变的**,比如:
website = 'http://www.baidu.org'
website[-1:] = 'com'
错误提示。。。。
3.2-3.3 字符串格式化
>>>'price of eggs:$%d' % 42
'price of eggs:$42'
>>>'Using str:%s' % 42L
'Using str:42'
字段宽度和精度
>>>'%10f' %pi #字段宽10
' 3.141593'
>>>'%10.2f' %pi #字段宽10,精度2
' 3.14'
>>>'%.2f' % pi #精度2
'3.14'
>>>'%.5s' % 'Guido van Rossum'
'Guido'
3.4 字符串方法
find()方法可以在一个较长的字符串中查找子串,它返回子串所在位置的最左端索引,如果没有找到,则返回-1
>>>'what is your name?'.find('is')
5
>>>title = 'what is your name?'
>>>title.find('what')
>