• 帮助
    • 博客
    • 相册
    • 网盘
    • 超市
    • Xer吧
  • 登录
  • 注册
【公告】关于近期部分用户收到虚假中奖提示的通告    【公告】关于网站取消无线业务的通告    【公告】个人空间首页新增“我的专辑”版块    【公告】X5dj广告过滤系统上线    【公告】新功能“我的专辑”上线,珍藏属于你的美好回忆    【公告】X5dj网站网络硬盘用户使用协议    【公告】X5dj新功能汇总贴:新增“密码目录”功能上线    【公告】X5dj.com相册/网盘上传工具发布    
  • Saromman无欲则安
  • http://www.x5dj.com/saromman 复制地址
  • 首页

  • 博客

  • 相册

  • 网盘

  • 人际关系网

  • 我的专辑

更多..最新回复
  • ·avast中文破解版(使用有效期至2012年3月7日)注册码
  • ·对文件 SCPDF3.rar 的评价
更多..最热文章
更多..更新的订阅
更多..更新的空间
  • sharelogo的个人空间
  • 神隐の国 --- 神隐Dē点点滴滴
  • shallon的个人空间
  • gd188的个人空间
  • 教育为先 --- ★百年树人★教育为先★主站http://eduone.uu1001.com
  • 笨小孩的空间 --- 思想是需要的是沟通的,知识是需要的是共享的,快乐是需要传递的
  • happy吧 --- 要平凡,但不平庸;要大胆,但不大意;要敢说,但不空说;要多思,但不乱思;要大干,但不蛮干;要谦让,但不迁就;要虚心,但不虚荣;要勇敢,但不蛮横。
  • My World
  • 一定要幸福 --- 我相信,我会幸福......
  • costdu2008的个人空间
订阅此博客 
重读PYTHON核心编程(第2版)-------第4天 12-05 16:20
>>> s = 'abcdefgh' >>> s[::-1] # 可以视作"翻转"操作 'hgfedcba' >>> s[::2] # 隔一个取一个的操作 'aceg' -----------------------------------------------------------------表 6.2 序列类型转换工厂函数 函数 含义 list(iter) 把可迭代对象转换为列表 str(obj) 把 obj 对象转换成字符串(对象的字符串表示法) unicode(obj) 把对象转换成 ...
>>> s = 'abcdefgh'
>>> s[::-1]  # 可以视作"翻转"操作
'hgfedcba'
>>> s[::2]  # 隔一个取一个的操作
'aceg'
-----------------------------------------------------------------
表    6.2  序列类型转换工厂函数
 
函数        含义
list(iter)   把可迭代对象转换为列表
str(obj)       把 obj 对象转换成字符串(对象的字符串表示法)
unicode(obj) 把对象转换成 Unicode 字符串(使用默认编码)
basestring() 抽象工厂函数,其作用仅仅是为 str 和 unicode 函数提供父类,所以不能被
实例化,也不能被调用(详见第 6.2 节)
tuple(iter)  把一个可迭代对象转换成一个元组对象
-----------------------------------------------------------------
表 6.3    序列类型可用的内建函数
 
函数名                   功能
enumerate(iter)
a
         接受一个可迭代对象作为参数,返回一个 enumerate 对象(同
时也是一个迭代器),该对象生成由 iter 每个元素的 index 值
和 item 值组成的元组(PEP 279)
len(seq)                 返回 seq 的长度
max(iter,key=None) or 
max(arg0,arg1...,key=None)
b
 返回iter或(arg0,arg1,...)中的最大值, 如果指定了key,
这个key必须是一个可以传给sort()方法的,用于比较的回
调函数.
min(iter, key=None) or 
min(arg0, arg1.... key=None)
b
返回 iter 里面的最小值;或者返回(arg0,arg2,...)里面的最小值;如果指定了 key,这个 key 必须是一个可以传给
sort()方法的,用于比较的回调函数.
 
reversed(seq)
c
      接受一个序列作为参数,返回一个以逆序访问的迭代器(PEP 322)
sorted(iter, 
func=None, 
key=None, 
reverse=False)c        
接受一个可迭代对象作为参数,返回一个有序的列表;可选参数
func,key 和 reverse 的含义跟 list.sort()内建函数的参数含义一
样.
sum(seq, init=0)
a
  返回 seq 和可选参数 init 的总和,其效果等同于
reduce(operator.add,seq,init)
zip([it0, it1,... itN])
d
   返回一个列表,其第一个元素是 it0,it1,...这些元素的第
一个元素组成的一个元组,第二个...,类推.
================================================================
string模块
>>> string.digits
'0123456789'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> s = ' '.join(('Spanish', 'Inquisition', 'Made Easy')) #这样比+更有效率
>>> s
'Spanish Inquisition Made Easy'
===============================================================================
表 6.4 字符串格式化符号
 
格式化字符        转换方式
%c              转换成字符(ASCII 码值,或者长度为一的字符串)
%r
a
              优先用 repr()函数进行字符串转换
%s              优先用 str()函数进行字符串转换
%d / %i           转成有符号十进制数
%u
b
               转成无符号十进制数
%o
b
              转成无符号八进制数
%xb
/%X
b
   (Unsigned)转成无符号十六进制数(x/X代表转换后的十六进制字符的大
小写)
%e/%E          转成科学计数法(e/E 控制输出 e/E)
%f/%F           转成浮点数(小数部分自然截断)
%g/%G           %e 和%f/%E 和%F 的简写
%%              输出%
-------------------------------------------------------------------------
表 6.5 格式化操作符辅助指令
 
符号                作用
*             定义宽度或者小数点精度
-             用做左对齐
+               在正数前面显示加号( + )
<sp>          在正数前面显示空格
#  在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于
用的是'x'还是'X')
0              显示的数字前面填充‘0’而不是默认的空格
%             '%%'输出一个单一的'%'
(var)       映射变量(字典参数)
m.n           m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
 
以下是一些使用格式字符串的例子:
十六进制输出:
>>> "%x" % 108
'6c'
>>>
>>> "%X" % 108
'6C'
>>>
>>> "%#X" % 108
'0X6C'
>>>
>>> "%#x" % 108
'0x6c'
浮点数和科学记数法形式输出:
>>>
>>> '%f' % 1234.567890
'1234.567890'
>>>
>>> '%.2f' % 1234.567890
'1234.57'
>>>
>>> '%E' % 1234.567890
'1.234568E+03'
>>>
>>> '%e' % 1234.567890
'1.234568e+03'
>>>
>>> '%g' % 1234.567890
'1234.57'
>>>
>>> '%G' % 1234.567890
'1234.57'
>>>
>>> "%e" % (1111111111111111111111L)
'1.111111e+21'
 
整数和字符串输出:
>>> "%+d" % 4
'+4'
>>>
>>> "%+d" % -4
'-4'
>>>
>>> "we are at %d%%" % 100
'we are at 100%'
>>>
>>> 'Your host is: %s' % 'earth'
'Your host is: earth'
>>> Edit By Vheavens 
Edit By Vheavens                               
>>> 'Host: %s\tPort: %d' % ('mars', 80)
'Host: mars Port: 80'
>>>
>>> num = 123
>>> 'dec: %d/oct: %#o/hex: %#X' % (num, num, num)
'dec: 123/oct: 0173/hex: 0X7B'
>>>
>>> "MM/DD/YY = %02d/%02d/%d" % (2, 15, 67)
'MM/DD/YY = 02/15/67'
>>>
>>> w, p = 'Web', 'page'
>>> 'http://xxx.yyy.zzz/%s/%s.html' % (w, p)
'http://xxx.yyy.zzz/Web/page.html'
 
上面的例子都是使用的元组类型的参数作转换.下面我们将把字典类型的参数提供给格式
化操作符.
 
>>> 'There are %(howmany)d %(lang)s Quotation Symbols' % \
... {'lang': 'Python', 'howmany': 3}
'There are 3 Python Quotation Symbols'
=====================================================================
6.4.2  字符串模板: 更简单的替代品  
 
字符串格式化操作符是 Python 里面处理这类问题的主要手段,而且以后也是如此。然而它
也不是完美的,其中的一个缺点是它不是那么直观,尤其对刚从 C/C++转过来的 Python 新手来
说更是如此,即使是现在使用字典形式转换的程序员也会偶尔出现遗漏转换类型符号的错误,
比如说,用了%(lang)而不是正确的%(lang)s.为了保证字符串被正确的转换,程序员必须明确
的记住转换类型参数,比如到底是要转成字符串,整数还是其他什么类型.
 
新式的字符串模板的优势是不用去记住所有的相关细节的,而是像现在 shell 风格的脚本
语言里面那样使用美元符号($).
 
由于新式的字符串 Template 对象的引进使得 string 模块又重新活了过来,Template 对象
有两个方法,substitute()和safe_substitute().前者更为严谨,在key缺少的情况下它会报一
个 KeyError 的异常出来,而后者在缺少 key 时,直接原封不动的把字符串显示出来.
 
>>> from string import Template
>>> s = Template('There are ${howmany} ${lang} Quotation Symbols')
>>>
>>> print s.substitute(lang='Python', howmany=3) There are 3 Python Quotation
Symbols
>>>
>>> print s.substitute(lang='Python') Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/local/lib/python2.4/string.py", line 172, in substitute
return self.pattern.sub(convert, self.template)
File  "/usr/local/lib/python2.4/string.py",  line  162,  in  convert  val  =
mapping[named]
KeyError: 'howmany'
>>>
>>> print s.safe_substitute(lang='Python') There are ${howmany} Python Quotation
Symbols
========================================================================
 
6.4.3  原始字符串操作符( r/R )
 
关于原始字符串的目的,在 Python1.5 里面已经有说明,是为了对付那些在字符串中出现
的特殊字符(下面的小节会介绍这些特殊字符)。在原始字符串里,所有的字符都是直接按照字
面的意思来使用,没有转义特殊或不能打印的字符。
------------------------------------------------------------------------------
查看全文>> 浏览(11) 评论(0)
重读PYTHON核心编程(第2版)-------第3天 12-05 16:19
所有的 Python 对像都拥有三个特性:身份,类型和值。身份: 每一个对象都有一个唯一的身份标识自己, 任何对象的身份可以使用内建函数id()来得到。类型这个值可以被认为是该对象的内存地址。内建函数 type()查看 Python 对象的类型值 对象表示的数据项 下列对象的布尔值是 False。 z None z False (布尔类型) z 所有的值为零的数:z 0 (整型) z (浮点型) z 0L (长整型) z 0.0+0.0j (复数) z "" (空字符串) z [] (空列表) z () (空元组) z {} (空字典) 值不是上面列出来的任何值的对象的布...
所有的 Python 对像都拥有三个特性:身份,类型和值。
身份:
每一个对象都有一个唯一的身份标识自己, 任何对象的身份可以使用内建函数id()来得到。
类型
这个值可以被认为是该对象的内存地址。
内建函数 type()查看 Python 对象的类型
值
对象表示的数据项
下列对象的布尔值是 False。
z  None
z  False (布尔类型)
z  所有的值为零的数:
z  0 (整型)
z  (浮点型)
z  0L (长整型)
z  0.0+0.0j (复数)
z  "" (空字符串)
z  [] (空列表)
z  () (空元组)
z  {} (空字典)
值不是上面列出来的任何值的对象的布尔值都是 True, 例如 non-empty、  non-zero 等等。
用户创建的类实例如果定义了 nonzero(__nonzero__())或 length(__len__())且值为 0,那
么它们的布尔值就是 False。
-----------------------------------------------------------------------
4.4.4  切片对象
当使用 Python 扩展的切片语法时,就会创建切片对象。扩展的切片语法允许对不同的索引
切片操作,包括步进切片, 多维切片,及省略切片。多维切片语法是 sequence[start1 : end1,
start2 : end2], 或使用省略号, sequence[...,start1 : end1 ]. 切片对象也可以由内建
函数  slice()来生成。步进切片允许利用第三个切片元素进行步进切片,它的语法为
sequence[起始索引 : 结束索引 : 步进值]。Python 很早就支持扩展步进切片语法了,但直到
Python2.3 以前都必须依靠 C API 或 Jython 才能工作。 下面是几个步进切片的例子:

>>> foostr = 'abcde'
>>> foostr[::-1]
'edcba'
>>> foostr[::-2]
'eca'
>>> foolist = [123, 'xba', 342.23, 'abc']
>>> foolist[::-1]
['abc', 342.23, 'xba', 123]
  
4.6     标准类型内建函数

除了这些运算符,  我们刚才也看到,  Python提供了一些内建函数用于这些基本对象类型:
cmp(),  repr(), str(),  type(), 和等同于 repr()函数的单反引号(``) 运算符。
=====================================================================
表 4.4    标准类型内建函数

函数              功能
cmp(obj1, obj2)    比较 obj1 和 obj2, 根据比较结果返回整数 i:
i < 0 if obj1 < obj2
i > 0 if obj1 > obj2
i == 0 if obj1 == obj2
repr(obj) 或 `obj`  返回一个对象的字符串表示
str(obj)           返回对象适合可读性好的字符串表示
type(obj)         得到一个对象的类型,并返回相应的 type 对象
=====================================================================
尽管 str(),repr()和``运算在特性和功能方面都非常相似, 事实上 repr() 和 `` 做的
是完全一样的事情,它们返回的是一个对象的“官方”字符串表示, 也就是说绝大多数情况下
可以通过求值运算(使用 eval()内建函数)重新得到该对象,但 str()则有所不同。str() 致力
于生成一个对象的可读性好的字符串表示,它的返回结果通常无法用于 eval()求值, 但很适
合用于 print 语句输出。需要再次提醒一下的是, 并不是所有 repr()返回的字符串都能够用
eval()内建函数得到原来的对象:
也就是说 repr() 输出对 Python 比较友好, 而 str()的输出对人比较友好。虽然如此,
很多情况下这三者的输出仍然都是完全一样的。

核心笔记:为什么我们有了 repr()还需要``?
在 Python学习过程中,你偶尔会遇到某个运算符和某个函数是做同样一件事情。之所以如
此是因为某些场合函数会比运算符更适合使用。举个例子, 当处理类似函数这样的可执行对象
或根据不同的数据项调用不同的函数处理时,函数就比运算符用起来方便。另一个例子就是双
星号(**)乘方运算和 pow()内建函数,x ** y 和 pow(x,y) 执行的都是x的y次方。
译者注:事实上 Python 社区目前已经不鼓励继续使用``运算符。
=====================================================================
对非容器类型可以直接访问。所有的数值类型都归到这一类。

序列类型是指容器内的元素按从 0 开始的索引顺序访问。一次可以访问一个元素或多个元
素,  也就是大家所了解的切片(slice)。 字符串,  列表和元组都归到这一类。 我们前面提到过,
Python 不支持字符类型,因此,虽然字符串是简单文字类型,因为它有能力按照顺序访问子字
符串,所以也将它归到序列类型。

映射类型类似序列的索引属性,不过它的索引并不使用顺序的数字偏移量取值, 它的元素
无序存放,  通过一个唯一的 key 来访问,  这就是映射类型,  它容纳的是哈希键-值对的集合。
数据类型  存储模型  更新模型  访问模型l
数字  Scalar  不可更改  直接访问    
字符串  Scalar  不可更改  顺序访问
列表  Container  可更改  顺序访问
元组  Container  不可更改  顺序访问
字典  Container  可更改  映射访问
=====================================================================
幂运算

幂运算操作符和一元操作符之间的优先级关系比较特别: 幂运算操作符比其左侧操作数
的一元操作符优先级低,比
起右侧操作数的一元操作符的优先级高,由于这个特性你会在算术运算符表中找到两个
** .下面举几个例子:

>>> 3 ** 2
9
>>> -3 ** 2 # ** 优先级高于左侧的 -  
-9
>>> (-3) ** 2  # 加括号提高 -的优先级
9
>>> 4.0 ** -1.0  # ** 优先级低于右侧的  -  
0.25
=====================================================================
表 5.5 数值工厂函数总结
类(工厂函数)                 操作
bool(obj)  b
返回obj对象的布尔值,也就是
obj.__nonzero__()方法的返回值
int(obj, base=10)  返回一个字符串或数值对象的整数表
示,  类似string.atoi();从Python 1.6起,
引入了可选的进制参数。
long(obj, base=10)  返回一个字符或数据对象的长整数表
示,类似string.atol(),  从Python1.6起,  
引入了可选的进制参数
float(obj)  返回一个字符串或数据对象的浮点数
表示,类似string.atof()
complex(str) or
complex(real, imag=0.0)  返回一个字符串的复数表示,或
者根据给定的实数(及一个可选
的虚数部分) 生成一个复数对象。  
功能函数
Python 有五个运算内建函数用于数值运算: abs(), coerce(), divmod(), pow(), pow()
和 round()。我们将对这些函数逐一浏览,并给出一些有用的例子:
------------------------------------------------------------------
divmod()内建函数把除法和取余运算结合起来, 返回一个包含商和余数的元组。对整数来
说,它的返回值就是地板除和取余操作的结果。对浮点数来说, 返回的商部分是
math.floor(num1/num2),对复数来说, 商部分是 ath.floor((num1/num2).real)。
>>> divmod(10,3)
(3, 1)
--------------------------------------------------------------------
   函数                 功能
abs(num)              返回 num 的绝对值
coerce(num1, num2) 将num1和num2转换为同一类型,然后以一个  元组的形式
返回。
divmod(num1, num2)   除法-取余运算的结合。 返回一个元组(num1/num2,num1 %
num2)。对浮点数和复数的商进行下舍入(复数仅取实  
数部分的商)
pow(num1, num2, mod=1)  取 num1 的 num2次方,如果提供 mod参数,则计算结果
再对mod进行取余运算
round(flt, ndig=0) 接受一个浮点数  flt  并对其四舍五入,保存  ndig位小数。
若不提供ndig  参数,则默认小数点后0位。
--------------------------------------------------------------------
round()仅用于浮点数。(译者注:整数也可以,  不过并没有什么
实际意义)
hex(num)  将数字转换成十六进制数并以字符串形式返回
oct(num)  将数字转换成八进制数并以字符串形式返回
chr(num)  将ASCII值的数字转换成ASCII字符,范围只
能是0 <= num  <= 255。
ord(chr)  接受一个  ASCII  或  Unicode  字符(长度为1的字符串),返回相应的ASCII
或Unicode  值。
unichr(num)    接受Unicode码值,返回  其对应的Unicode字符。所接受的码值范围依赖于
你的Python是构建于UCS‐2还是UCS‐4。
--------------------------------------------------------
#  重载 __nonzero__() 使它返回 False
>>> class C:
...  def __nonzero__(self):
...  return False
c=C()
bool(c)  返回False
---------------------------------------------------
使用 Decimal 类:
>>> from decimal import Decimal
>>> dec = Decimal('0.1')
------------------------------------------------------
核心模块: random
当你的程序需要随机数功能时,random 模块就能派上用场。该模块包含多个伪随机数发生
器,它们均以当前的时间戳为随机数种子。这样只要载入这个模块就能随时开始工作。下面列
出了该模块中最常用的函数:
两个整数参数,返回二者之间的随机整数
randrange()      它接受和 range()函数一样的参数, 随机返回
range([start,]stop[,step])结果的一项
uniform()  几乎和 randint()一样, 不过它返回的是二者之间的一个浮点数(不包括范围
上限)。
random()  类似 uniform() 只不过下限恒等于 0.0,上限恒等于 1.0
choice()  随机返回给定序列(关于序列,见第六章)的一个元素
查看全文>> 浏览(13) 评论(0)
重读PYTHON核心编程(第2版)-------第2天 12-03 02:26
3.1 语句和语法 Python 语句中有一些基本规则和特殊字符: z 井号(#)表示之后的字符为 Python 注释 z 换行 (\n) 是标准的行分隔符(通常一个语句一行) z 反斜线 ( \ ) 继续上一行 z 分号 ( ; )将两个语句连接在一行中 z 冒号 ( : ) 将代码块的头和体分开 z 语句(代码块)用缩进块的方式体现 z 不同的缩进深度分隔不同的代码块 z Python 文件以模块的形式组织 3.1.1 注释( # ) ----------------------------------------------------------------...
3.1     语句和语法
Python 语句中有一些基本规则和特殊字符:
z  井号(#)表示之后的字符为 Python 注释
z  换行 (\n) 是标准的行分隔符(通常一个语句一行)
z  反斜线 ( \ ) 继续上一行
z  分号 ( ; )将两个语句连接在一行中
z  冒号 ( : ) 将代码块的头和体分开
z  语句(代码块)用缩进块的方式体现
z  不同的缩进深度分隔不同的代码块
z  Python 文件以模块的形式组织
3.1.1   注释( # )
------------------------------------------------------------------------------
  “多元”赋值
 
另一种将多个变量同时赋值的方法我们称为多元赋值(multuple)。这不是官方 Python 术
语, 而是我们将 "mul-tuple"连在一起自造的。因为采用这种方式赋值时, 等号两边的对象
都是元组(我们在 2.8 节讲过元组是一种 Python 基本数据类型)。
 >>> x, y, z = 1, 2, 'a string'
------------------------------------------------------------------------------
在其它类似 C 的语言中, 如果你要交换两个值, 你会想到使用一个临时变量比如 tmp 来
临时保存其中一个值:
 
/* C 语言中两个变量交换 */
tmp = x;
x = y;
y = tmp;
 
在上面的 C 代码片段中,变量 x 和变量 y 的值被互相交换。 临时变量 tmp 用于在将 y 赋
值给 x 前先保存 x 的值。将 y 的值赋给 x 之后, 才可以将保存在 tmp 变量中的 x 的值赋给 y。
Python 的多元赋值方式可以实现无需中间变量交换两个变量的值。
------------------------------------------------------------------------------
Python 是一门不断成长和进化的语言,关键字列表和 iskeyword()函数都放入了 keyword模块
>>> import keyword
>>> keyword.kwlist
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'els
e', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in',
'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while',
 'with', 'yield']
>>> keyword.iskeyword('is')
True
------------------------------------------------------------------------------
3.3.4  专用下划线标识符
 
Python 用下划线作为变量前缀和后缀指定特殊变量。稍后我们会发现,对于程序来说,其
中的有些变量是非常有用的,而其他的则是未知或无用的。这里对 Python 中下划线的特殊用法
做了总结:
 
z  _xxx    不用'from module import *'导入
z  __xxx__系统定义名字
z  __xxx   类中的私有变量名
 
核心风格:避免用下划线作为变量名的开始
因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避
免用下划线作为变量名的开始。一般来讲,变量名_xxx被看作是“私有的”,在模块或类外不
可以使用。当变量是私有的时候,用_xxx 来表示变量是很好的习惯。因为变量名__xxx__对
Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。
查看全文>> 浏览(20) 评论(0)
重读PYTHON核心编程(第2版)-------第1天 12-02 20:38
打算好好看看django,但是才发现自己的基础知识还是不牢固,所以重新打开了这本核心编程,基础的一掠而过,发现了一点新意: 第1:比如 a=2.35 当 print 'a 的值是:%f' % a 打印的确实2.350000 很不雅观,这个时候,可以不用理睬a是个数字,用%s也可以打印出正确的结果 print 'a 的值是:%s' % a 因为python不是非常让你觉得严格的语言; ----------------------------------------------------------- 让程序具有日志功能 logfile=open('c:\\log.t...

打算好好看看django,但是才发现自己的基础知识还是不牢固,所以重新打开了这本核心编程,基础的一掠而过,发现了一点新意:

第1:比如  a=2.35  

当 print 'a 的值是:%f' % a 

打印的确实2.350000

很不雅观,这个时候,可以不用理睬a是个数字,用%s也可以打印出正确的结果

print 'a 的值是:%s' % a

因为python不是非常让你觉得严格的语言;

-----------------------------------------------------------

让程序具有日志功能

logfile=open('c:\\log.txt','a')

print >>logfile,内容

logfile.close()

这样就可以让程序的输出都弄到这个文件中了

--------------------------------------------------------------------------------

2.19    实用的函数
 
本章中, 我们用到了很多实用的内建函数。我们在表 2.1 中总结了这些函数, 并且提供
了一些其它的有用函数。(注意我们并没有提供完整的使用语法,仅提供了我们认为可能对你
有用的部分)
 
表 2.1 对新 Python 程序员有用的内建函数
 
函数                 描述
dir([obj])                                  显示对象的属性,如果没有提供参数, 则显示全局变量的名字

help([obj])                             以一种整齐美观的形式 显示对象的文档字符串, 如果没有提供任何参数, 则会进入交互式帮助。
int(obj)                                  将一个对象转换为整数
len(obj)                                  返回对象的长度
open(fn, mode)                      以 mode('r' = 读, 'w'= 写)方式打开一个文件名为 fn 的文件 
range([[start,]stop[,step])    返回一个整数列表。起始值为 start, 结束值为 stop - 1; start  默认值为 0, step默认值为1。
raw_input(str)                         等待用户输入一个字符串, 可以提供一个可选的参数 str 用作提示信
息。
str(obj)                                    将一个对象转换为字符串
type(obj)                                 返回对象的类型(返回值本身是一个 type 对象!) 
 

查看全文>> 浏览(14) 评论(0)
AC97和HD规范简介和前置音频接口的连接 11-25 15:36
AC97和HD规范简介和前置音频接口的连接 AC97和HD规范简介和前置音频接口的连接 英特尔在AC97音频标准之后,又推出了HD(高保真)音频标准。微软的新操作系统Vista推出UAA音频。这些音频标准对机箱的前置音频面板和接口都有各自的规定。 主板的前置音频连接座也有变化。本文就AC97和HD的前置音频/麦克的接线方式作详细说明,供各位参考。一、英特尔AC97前置音频接口的规范要点英特尔在《Front Panel I/O Connectivity Design Guide》中规范了主板和机箱的前置音频接口插座、连接线、针脚名称。要点如下:1、音频连接器连接器设计应当支持使用...

AC97和HD规范简介和前置音频接口的连接


AC97和HD规范简介和前置音频接口的连接

英特尔在AC97音频标准之后,又推出了HD(高保真)音频标准。微软的新操作系统Vista推出UAA音频。这些音频标准对机箱的前置音频面板和接口都有各自的规定。 主板的前置音频连接座也有变化。本文就AC97和HD的前置音频/麦克的接线方式作详细说明,供各位参考。
一、英特尔AC97前置音频接口的规范要点
英特尔在《Front Panel I/O Connectivity Design Guide》中规范了主板和机箱的前置音频接口插座、连接线、针脚名称。要点如下:
1、音频连接器
连接器设计应当支持使用标准的前面板麦克和耳机。要能够直接的使用音频而不需要特别的软件。前面板音频连接器设计要支持立体声音频输出(耳机或有源音箱)以及麦克输入(一个单声道)。麦克输入(一个单声道)连接到安装在前面板上的3.5毫米微型插座。插座的芯端接麦克输入信号,外环端接麦克音频偏置信号。
2、 电气连接
两个前面板音频输出(AUD_FPOUT_L 和 AUD_FPOUT_R)和两个前面板音频返回(AUD_RET_L 和 AUD_RET_R)连接到一个安装在前面板上的开关型的3.5毫米微型插座。 音频信号传送路径是:当前面板插座没有使用时,主板输出的音频信号由AUD_FPOUT_L和AUD_FPOUT_R送给前面板插座。经过前面板插座再由AUD_FPOUT_L和 AUD_FPOUT_R返回主板的后置音频插座。当前置音频插座插入耳机时,插座里连接(AUD_FPOUT_L和AUD_RET_L,AUD_FPOUT_R和AUD_RET_R)的开关断开,返回主板的音频信号就断开,后置插座无音频信号,只有前置的有无音频信号。如下图:

注:音频输出仅能使用耳机或有源音箱,如果使用无源音箱,声音很小。
3、主板连接座设计
主板前置音频连接座,如下图:

连接座的针脚分配:
针  信号名        说明
1  AUD_MIC_IN    前置麦克输入。
2  AUD_GND        供模拟音频电路使用的接地。
3  AUD_MIC_BIAS  麦克偏置电压。
4  AUD_VCC        供模拟音频电路使用的滤波 +5 V。
5  AUD_FPOUT_R    输出给前置的右声道音频信号。
6  AUD_RET_R      从前置返回的右声道音频信号。
7  HP_ON          为以后控制耳机放大器保留。
8  KEY            无针脚。
9  AUD_FPOUT_L  输出给前置的左声道音频信号。
10  AUD_RET_L      从前置返回的左声道音频信号。
连接座的跳线:
如果前置音频接线没有连接到主板的前置音频连接座上,连接座的5和6,9和10针应当用跳线短接,否则后置音频插座无效。
二、机箱前置音频插座和连接线
现在看看实际的机箱前置音频插座和连接线。符合AC97标准的前置音频面板如下图:

从上图可以看到符合AC97标准的音频接线有7根:
1  AUD_MIC_IN    前置麦克输入。
2  AUD_GND        供模拟音频电路使用的接地。
3  AUD_MIC_BIAS  麦克偏置电压。
5  AUD_FPOUT_R    输出给前置的右声道音频信号。
6  AUD_RET_R      从前置返回的右声道音频信号。
9  AUD_FPOUT_L    输出给前置的左声道音频信号。
10  AUD_RET_L      从前置返回的左声道音频信号。
这7根线与主板的音频连接座连接方式如下图:

还有简化的AC97标准的前置音频面板、插座和接线。主要是简化了耳机插座的开关线。
就是说把开关型耳机插座简化为非开关型。连接线为5根,但与主板音频连接座的插针还是7根。如下图:

从上图可以看到简化的音频接线有5根:
1  AUD_MIC_IN    前置麦克输入。
2  AUD_GND        供模拟音频电路使用的接地。
3  AUD_MIC_BIAS  麦克偏置电压。
5  AUD_FPOUT_R    输出给前置的右声道音频信号。
9  AUD_FPOUT_L    输出给前置的左声道音频信号。
这5根线与主板的音频连接座连接方式如下图:

这种简化的音频输出有一个优点,就是前后置音频输出可以同时使用。标准的四线音频接线,由于利用开关型插座的开关功能,当前置插座没有插入耳机(音箱)插头时,开关接在后置音频输出插座,可以使用后置音频输出。当前置插座插入耳机(音箱)插头时,开关就把后置音频输出插座断开,使音频输出连接在前置输出插座,后置就没有输出音频,所以前后置音频输出不能同时使用。这种简化的音频输出通过插针把5/6 9/10短接,使CODEC的音频输出同时连接到前后置音频输出插座上,所以前后置音频输出可以同时使用。
三、英特尔高保真(HD)前置音频接口的规范要点
3-1、高保真音频(High Definition Audio)的主要特点:
1、单工带宽就达到24MB/s,双工带宽达到48MB/s,
2、支持多通道的输入输出,支持32bit、192kHz的8声道(7.1声道)输出,支持DVD-Audio和SACD、多串流能力、杜比数字标准(Dolby Digital)和杜比THX环绕EX功能(Dolby THX surround EX),使PC达到家庭影院级的高保真音频系统。
3、支持音频插口自动探测,只要把插头插入任意一个音频插座,就会提示该音频设备接入,可以通过软件选择该插座对应的设备。
4、在麦克风支持上面,HD Audio提供了软件降噪功能、回音设置和对多拾音器的麦克风、麦克风阵列的支持。
3-2、高保真音频连接座的针脚定义:
为了与AC97兼容,高保真音频仍然使用AC97的10针连接座,如下图:

HD规范对针脚做了新的定义,对部分针脚赋予新的功能。HD的针脚定义与AC97的针脚定义对比的如下:

HD规范对针脚由于要和AC97兼容,10个针脚里第1、2、3、5、6、9、10虽然名字有所变化,其功能没有改变。仍然是用于音频输入/输出的。AC97规定1、3针是麦克输入,HD规定是模拟音频口1的左右声道,即可用于音频输入,也可用于音频输出。所以,1、3针仍可连接麦克输入。由于HD支持音频插口自动探测插入音频插头,就利用开关型插座的开关针脚作探测信号,第6、10用作返回探测信号,第4、7针用作探测信号。
3-3、前置音频面板插座的变化:
AC97规定麦克插座可以用非开关型的插座,因为这个插座专门用于麦克输入。HD规定这个插座必须用开关型的双声道插座,因为这个插座不再是单一的麦克输入,还可以用作音频输出。前置音频面板插座接线如下图:做了新的定义,对部分针脚赋予新的功能。HD的针脚定义与AC97的针脚定义对比的如下:

四、AC97的音频面板接线如何连接到HD连接座上
4-1、接线
AC97的音频面板接线兼容HD。所以接线方式与AC97接法相同。如下图:

4-2、软件设置....
这样连接后,麦克会不能正常输入,这是因为AC97的前置音频面板及插座接线不能适应HD的自动探测。可以通过声卡驱动的音频管理界面关闭前置插座的自动探测。比如Realtek  ALC883声卡,设置关闭前置插孔探测如下图所示:

五、Realtek  ALC883声卡管理员面板简介
5.1、音效面板

5.2、混频器面板

5.3、音频I/O面板

5.4、麦克风面板

5.5、3D音频演示面板

六、Realtek  ALC883声卡与AC97声卡音量控制面板的差异
6.1、音量控制面板的标题差异
AC97音量控制面板标题为“音量控制”。HD音量控制面板标题为“主音量”。下图是音量控制面板的“播放”/output音量调整面板。除了标题不同外,基本相同,每个音频设备下面的音量滑动条都是可以调节的。

6.2、控制面板“属性”的差异
AC97的“属性”通过面板上面的“播放”/“录音”来选择播放/录音设备。HD的“属性”通过面板上面的“属性”下拉菜单选择输出/输入设备。

6.3、录音/input音量控制的差异
AC97音量控制面板与HD音量控制面板最大的差异在录音/input音量控制面板。AC97录音音量控制面板内每个录音设备下面的音量滑动条都是可以调节的。HD音量控制面板内每个录音设备下面的音量滑动条都是灰色不可调节的。音量调节是通过左侧的录音控制滑动条调节。

七、使用主板3个后置音频插口配置4-或6-声道模拟音频输出
市场主流低端的6(5.1)声道主板一般配置3个插孔的音频接口,这三个插孔分别是①蓝色的音频输入 ②绿色的音频输出 ③粉色的麦克输入。这三个插孔通过软件设置可以提供4-或6-声道模拟音频输出功能。
7.1、软件设置
1. 从屏幕右下端的Window条中单击音频管理员图标,弹出音效管理设置面板。
2. 在音效栏目中的环境下拉菜单中选择您要的环绕音效。
3. 点击Speaker Configuration标签。

4. 选择Synchronize the phone jack switch with the settings。
5. 从No. of Speakers选择您需要的多声道操作。
a. 2-声道模式支持立体声-音箱输出
b. 4-声道模式输出
c. 6-声道模式支持5.1-音箱输出
6. 单击OK关闭窗口。
7.1、4-声道音频模式输出
当选择4-声道模式时,后面板上每个接口的功能请参考下图:

当选择4-声道模拟音频输出时,Line In(线路输入)插口的功能就转变成Line Out(线路输出),用于后置左右声道输出。
7.2、6-声道音频模式输出
当选择6-声道模式时,后面板上每个接口的功能请参考下图:

当选泽6-声道模拟音频输出模式时,Line In(线路输入)和MIC(麦克输入)插口功能都要转变成Line Out,MIC插口变为中置和重低音输出,Line In变为后置左右声道输出。
7.3、测试连接的音箱
音箱连接和软件设置正确后,可以通过音效管理面板的Speaker Test测试每个声道和音箱是否正常工作。
从屏幕右下端的Window条中单击音频管理员图标 。
1. 单击音效管理面板的Speaker Test 栏。
2. 出现如下的窗口,选择您要测试的音箱并单击它。

如果您在“No. of Speakers”列表中选择“6-声道模式”,在“Speaker Test”window中就出现6个音箱。如果您选择“4-声道模式”,就出现4个音箱。请注意6声道必须使用5.1音箱,4声道必须使用4声道音箱。如果测试中每个声道的音箱都有声音,则声卡和音箱都OK。测试中如果某个声道的音箱没有声音,可能的原因如下:
音箱插头没有插好,
插头接线不符合规范,
音箱的功放有故障,
音箱连接线断,
声卡的这个声道输出故障,
声卡有故障。
在实际播放音乐或DVD时,如要保证环绕立体声或5.1声道音效,音乐声源或DVD必须是环绕立体声或5.1声道的,否则有部分声道无声,比如后置左右声道、中置/重低音声道。
附录:3.5毫米插座/插头的结构和接线方式
1、3.5毫米前置音频插座的结构
首先要了解前置音频插座的结构。根据英特尔关于AC97前置音频接口的规范,机箱的前置音频面板采用两种3.5毫米微型插座:1开关型的,2无开关型的,见下图:

开关型的2/3,4/5端是两个开关,当没有插头插入时,2/3,4/5端是连通的,当插头插入时2/3,4/5端断开。无开关的就没有3,4两个开关端。
2、3.5毫米插头结构
3.5毫米插头一般可分为三芯和二芯两种,如下图:

二芯插头一般用于麦克,三芯插头一般用于立体声音耳机(有源音箱)。现在二芯插头很少,所以麦克也用三芯插头。耳机和麦克插头的接线定义如下图:

麦克、耳机插头的接线如下图:

采用三芯的麦克插头还有两种接法,如下图:

这种接法没有麦克偏置,如果与麦克插座接线配合不准确。会不好用。
3、前置麦克连接的问题
前置音频口的连接,耳机一般没有什么问题,麦克会经常出现问题,原因是有些机箱的前置麦克插座的接线方式不标准。下图列出了标准接线与非标准接线的区别:

标准的接线有三条线:地线、麦克输入、麦克偏置。非标准的有二条线:地线和麦克输入,把麦克偏置省了。非标准1是把插座1、3短接,非标准2是3脚空着。这两种的把MIC_IN接到JAUD1的1脚是可以使用的。非标准3是把2、3短接,这种插入标准插头的麦克肯定是没有声音的,除非也用那种与之相对应接法的非标准插头的麦克。
4、前置音频线
英特尔规范中对前置音频线也作了规定:左右声道、麦克以及AUD_VCC/HP_ON都要成对屏蔽,同时这些线还要组合在一起外层屏蔽。参考下图:

国内的机箱看不到有符合这种标准的前置音频线。这种标准的音频线会减少干扰,降低噪声
查看全文>> 浏览(105) 评论(0)
AVG Anti-Spyware 升级代理 11-24 13:06
AVG Anti-Spyware 是个木马查杀工具,世界文明; 先来3个高速代理,目前长久有效! 类型:HTTP 主机:221.208.173.84 端口:3128 类型:socks4 主机:83.100.217.21 端口:1080类型: HTTP 主机:85.10.237.8 端口:80 ------------------ 可用的许可代码是 Code: 70-THXMV1-PL-C21-SM2ZG-SKU-N3KVCode: 75SP-TH1VD1-P09-C01-S30MUE-NNK-I...

AVG Anti-Spyware 是个木马查杀工具,世界文明;

先来3个高速代理,目前长久有效!
类型:HTTP       主机:221.208.173.84    端口:3128                 
类型:socks4     主机:83.100.217.21     端口:1080
类型: HTTP       主机:85.10.237.8       端口:80

------------------

可用的许可代码是


Code: 70-THXMV1-PL-C21-SM2ZG-SKU-N3KV
Code: 75SP-TH1VD1-P09-C01-S30MUE-NNK-I1X8
Code: 70-THXMV1-PM-C01-SGX3D-T13-JFHJ

这个信息是从http://www.lwdown.com/downinfo/5182.html

查看全文>> 浏览(85) 评论(0)
Python 大文件分割 11-12 14:33
本文绝对原创,如想转载,请注明 我们知道,一个EXCEL文件单表行数最多是65536行,超过这个行数,就无法再EXCEL中显示,在日常工作中,很多情况下需要对从数据库中提取的超大行数的数据进行EXCEL操作,所以我就想到了用python先把大文件进行分割处理,这样就可以解决这个矛盾了,说干就干。 先说说思路,首先让程序具有接受输入文件名作为参数的功能,这样以后可以处理不同的文件了,而且行数自定义,关键还有一个,就是行首作为每个文件的行首。先确定这3个功能吧,大致有就够用了 然后开始写程序,源程序为: #源文件开始 FILENAME=splitFile.py # -*- coding...

本文绝对原创,如想转载,请注明

我们知道,一个EXCEL文件单表行数最多是65536行,超过这个行数,就无法再EXCEL中显示,在日常工作中,很多情况下需要对从数据库中提取的超大行数的数据进行EXCEL操作,所以我就想到了用python先把大文件进行分割处理,这样就可以解决这个矛盾了,说干就干。

先说说思路,首先让程序具有接受输入文件名作为参数的功能,这样以后可以处理不同的文件了,而且行数自定义,关键还有一个,就是行首作为每个文件的行首。先确定这3个功能吧,大致有就够用了

然后开始写程序,源程序为:

#源文件开始  FILENAME=splitFile.py

# -*- coding: utf-8 -*-
def usage():
    print u"""
使用帮助:
SplitFile <文件名>  [行数] [-L 行数] [-H]
   <文件名>   :必选参数;要分割的文件的名字;
   [-L 行数]  :可选参数;以此行数来对源文件进行分割;默认5万;
   [-H]       :分割后的文件都加上首行;
                       
示例:要把C盘的myfile.csv以6万行分割,且首行为标题行,
命令为:splitfile c:\myfile.csv -L 60000 -H
        """
def main():
    import sys,getopt,os
    #判断是否输入要处理的文件名字
    if len(sys.argv)<2:
        usage()
        sys.exit(1)
    #如果文件名字不包含全路径,则默认为当前目录
    srcFilename=sys.argv[1]
    if os.sep not in srcFilename:
        srcFilename=os.getcwd()+os.sep+srcFilename
    #判断文件是否存在
    if not os.path.exists(srcFilename):
        print u'您输入的文件文件名称有误!'
        usage()
        sys.exit(1)
    #开始对参数进行处理
    try:
        opts,args=getopt.getopt(sys.argv[2:],'l:L:hH')
    except getopt.GetoptError:
        print u'命令行格式有误!'
        usage()
        sys.exit(2)
    Head=False #是否包含首行
    Linecount=50000 #默认切割行数
    for o,a in opts:
        if o=='-h' or o=='-H':
            Head=True
        if o=='-l' or o=='-L':
            if a.isdigit(): #判断输入的是否是数字,如果是的话,就可以赋值给
                Linecount=abs(int(a))
    #下面开始对文件进行切割
    try:
        inputf=open(srcFilename,'r')
        File_i=0
        lines=0
        if Head:
            HeadStr=inputf.readline()
        outputf=open(os.path.dirname(srcFilename)+ os.sep + \
        os.path.splitext(os.path.basename(srcFilename))[0] + '_' + str(File_i)+ \
                        os.path.splitext(os.path.basename(srcFilename))[1],'w')
       
        #进行写文件处理
        for eachline in inputf:
            outputf.write(eachline)
            lines+=1
            if lines==Linecount:#此处是行数到达默认的每文件的行数时
                #到达行数以后,关闭上个文件
                #文件计数I增加1,行数从0开始查
                #打开一个新的文件以便插入
                print u'分割子文件%s完毕;' % outputf.name
                outputf.close()
                File_i+=1
                lines=0
                outputf=open(os.path.dirname(srcFilename)+ os.sep + \
                os.path.splitext(os.path.basename(srcFilename))[0] + '_' + str(File_i)+ \
                                os.path.splitext(os.path.basename(srcFilename))[1],'w')
                if Head:#新文件需要增加行首时
                    outputf.write(HeadStr)
        if not outputf.closed:
            print u'分割子文件%s完毕;' % outputf.name
            outputf.close()
    except:
        print u'发生了未知的错误!'
        sys.exit(0)
    finally:
        inputf.close()
    print u'分割成功,共分割成为%d个文件' %(File_i+1)
    sys.exit(1)
if __name__=='__main__':
    main()

#源程序结束

上面的源程序,功能上基本都做了注释。不过还有几个知识点需要说明一下,也让我加强记忆

1:文件开始用 # -*-  coding:utf-8 -*-  可以在源程序中使用中文

2:print  u'打印的内容'  这样在运行的时候,打印的信息就不是乱码了

3:用getopt.getopt()来分析命令行参数,这个模块的用法和解释如下getopt是用来分析命令行参数的模块。
模块中的函数:
getopt(args, options[, long_options])


args一般为sys.argv[1:]。

options为选项字母(以"-"开始)组成的字符串,如果某个选项字母带有参数,那么这个字母有要加":"号。

long_options为可选参数,它是一个字符串的List,用来表示长参数(以"--"开始),如果某个长参数带有参数,那么这个字母后面要加"="。

函数有两个返回:
第一个是(option, value)的list。option为带"-"的选项字母,或者是带"--"的长参数(无需严格匹配,例如--hl可匹配--help)。如果option带有参数,那么会在value中给出,否则value为空。
第二个是函数未匹配到的参数。

Python文档中的例子:
import getopt, sys
def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
    except getopt.GetoptError:
        # print help information and exit:
        usage()
        sys.exit(2)
    output = None
    verbose = False
    for o, a in opts:
        if o == "-v":
            verbose = True
        if o in ("-h", "--help"):
            usage()
            sys.exit()
        if o in ("-o", "--output"):
            output = a
    # ...
if __name__ == "__main__":
    main()
假如如此调用程序时:python 程序名.py -h -o abc --out def ghi
那么getopt.getopt()函数返回的结果大致是这样的。
(option, value)list中是:
[('-h', ''), ('-o', 'abc'), ('--output', 'def')]
args中是:
['ghi']
-------------------------------------------------------------------------------------------------------------------------------------
另外听说py2exe可以封装成脱离PYTHON运行,就实验了一下,过程分享给大家
第一步:写一个sf_setup.py的安装文件,文件内容如下
 #开始

from distutils.core import setup
import py2exe

setup(console=["splitFile.py"])

#结束

第二步:运行这个sf_setup.py py2exe,在同目录下就生成了一个dist目录,这个目录下就是你要发布到没有安装
           python的机器上的发布包。
哈哈,简单吧,py2exe里面有很多方法,我也没仔细研究,有时间大家一起学习啊
查看全文>> 浏览(47) 评论(0)
让WINDOWS 自动登陆 11-07 17:21
一种方法是运行control userpasswords2,然后把那个对勾去掉就可以了 另外可以直接修改注册表: 我们可以通过修改注册表来实现自动登陆.步骤一:在运行中输入"REGEDIT",打开HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON.步骤二:在右方的窗口中找到"DEFAULTUSERNAME"子键,将数值数据改为用户登陆帐户名,如果不存在该键值,就可以在右边的窗口中右键新建字符串,接着将"新值#1"重命名为"DefaultUserName"后进行修改.步骤三:...

一种方法是运行control userpasswords2,然后把那个对勾去掉就可以了

另外可以直接修改注册表:

我们可以通过修改注册表来实现自动登陆.

  步骤一:

  在运行中输入"REGEDIT",打开HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON.

  步骤二:

  在右方的窗口中找到"DEFAULTUSERNAME"子键,将数值数据改为用户登陆帐户名,如果不存在该键值,就可以在右边的窗口中右键新建字符串,接着将"新值#1"重命名为"DefaultUserName"后进行修改.

  步骤三:

  在右侧窗口中找到DefaultPassword,如果不存在,可以新建,然后将其键值设定为你的密码

查看全文>> 浏览(64) 评论(0)
avast中文破解版(使用有效期至2012年3月7日)注册码 11-07 16:53
来自捷克的Avast!,已有17年的历史,它在国外市场一直处于领先地位。Avast!的实时监控功能十分强大,它拥有七大防护模块:网络防火墙防护、标准的本地文件读取防护、网页防护、即时通讯软件防护、邮件收发防护、P2P软件防护。这么完善的防护系统,定能让你的系统练就一副金刚不坏之身!任意开启各项保护模块能够查杀流氓软件。 首先,可以到下面的avast主网站下载http://www.avast.com/eng/download-avast-professional.html 打开网站后,在右边找到"avast! 4 Professional - Chinese (Simplified) ver...

来自捷克的Avast!,已有17年的历史,它在国外市场一直处于领先地位。Avast!的实时监控功能十分强大,它拥有七大防护模块:网络防火墙防护、标准的本地文件读取防护、网页防护、即时通讯软件防护、邮件收发防护、P2P软件防护。这么完善的防护系统,定能让你的系统练就一副金刚不坏之身!任意开启各项保护模块能够查杀流氓软件。

首先,可以到下面的avast主网站下载
http://www.avast.com/eng/download-avast-professional.html

打开网站后,在右边找到"avast! 4 Professional - Chinese (Simplified) version "

点这行字的DOWNLOAD,然后就可以安装,重启动后,在右下角的图标栏点右键-->启动AVAST杀毒软件,然后输入序列号,序列号如下:

标准专业版注册号:


C6846175R9997U1141-2R0M7HHL 有效期:20160825 升级有效期:从不
C2458873R9997C1145-25EENV64 有效期:20160825 升级有效期:从不
C0947513R9998C1151-EUMM917U 有效期:20160925升级有效期: 从不
S5514926R9994A1136-SFRWLLMH 有效期:20160525 升级有效期:从不
S7654879R9998N1158-HYKZ5N9F 有效期:20160925 升级有效期:从不
S4710493R9999Y1183-2LRXYFDW 有效期:20161025 升级有效期:从不
W4533613R9992N1189-0ZUX2FA4 有效期:20160325 升级有效期:从不
W3329883R9992Q1174-RVC625NN 有效期:20160325 升级有效期:从不
W9253989R9995X1192-H8HPEN45 有效期:20160625 升级有效期:从不

--另外提供一些其他版本的升级ID

1、家庭免费版注册号:

喜欢家庭版的朋友,推荐到官方网站注册。
注册地址 http://www.avast.com/cns/home-registration.php

2、OEM版注册号:


C1665040M9995C1133-SYWDV8HC 有效期:20160625 升级有效期:从不
C0415090M9997U1191-X5VZPULJ 有效期:20160825 升级有效期:从不
C0435397M9999H1176-DCD0KY8K 有效期:20161025 升级有效期:从不
S6595078M9994W1195-2K5DT8R5 有效期:20160525 升级有效期:从不
S4500442M9996B1187-ED1NM1R0 有效期:20160525 升级有效期:从不
S4381600M9996Y1151-A0W8N5NK 有效期:20160525 升级有效期:从不
W8396386M9998Z1153-697F6P6W 有效期:20160925 升级有效期:从不
W6672668M9999V1167-ZZUWX639 有效期:20161025 升级有效期:从不
W9074237M9999L1133-T2MV53TZ 有效期:20161025 升级有效期:从不

3.教育(EDU)版注册号:


C4069835E9993G1154-MYZB87EF 有效期:20160425 升级有效期:从不
C9910063E9996I1173-NY6BPKW1 有效期:20160725 升级有效期:从不
C8720473E9998Z1166-9FNXX7JR 有效期:20160925 升级有效期:从不
S6938659E9992U1134-PLS4XEL2 有效期:20160325 升级有效期:从不
S6232675E9996C1133-LH99NFJ3 有效期:20160725 升级有效期:从不
S1577090E9998S1178-HN4KK1BB 有效期:20160925 升级有效期:从不
W7076898E9992W1153-MT19XHLE 有效期:20160325 升级有效期:从不
W6607992E9993Z1142-FRNXH8J0 有效期:20160425 升级有效期:从不
W4306518E9995E1142-1SCM4PZP 有效期:20160625 升级有效期:从不

 

---------------------------------------------------------------------------------

关于两个有效期的说明:


第一个“有效期”是指注册号注册产品的截止时间;
第二个“升级有效期”是指该注册号升级的截止时间;
“有效期”显示“从不”,表示该产品可以永久使用(PS:1216版之后已不再不显示“从不”);
“升级有效期”显示“从不,表示该注册号注册的产品可以永久升级;
也就是说如果“升级有效期”比“有效期”提前到了,产品仍可以使用但不能升级;
如果“有效期”比“升级有效期”提前到了,产品虽然可以升级但已经不能用了;
如果你发现有两个有效期都显示“从不”的话,这便是传说中的无限升级账号,永久免费使用。

 

(信息参考http://www.zolsky.com/killsoftware/sdsoft/avast/avast_setup.htm)

查看全文>> 浏览(508) 评论(2)
python处理中文 11-01 11:12
用python处理字符串很容易,但是在处理中文的时候需要注意一些问题。比如:a = "我们是python爱好者"print a[0]只能输出“我”字的前半部分,要想输出整个的我字还需要b = a[0:2]print b才行,很不方便,并且当一段文本中同时有中英文的时候很难处理。最好的办法就是转换为unicode。像这样:c = unicode(a, "gb2312")print c[0]这个时候c的下标对应的就是每一字,不再是字节,并且通过 len(c) 就可以获得字数!还可以很方便的转换为其他编码,比如转换为 utf-8d = c.encode("utf-8")
用python处理字符串很容易,但是在处理中文的时候需要注意一些问题。
比如:

a = "我们是python爱好者"
print a[0]

只能输出“我”字的前半部分,要想输出整个的我字还需要

b = a[0:2]
print b

才行,很不方便,并且当一段文本中同时有中英文的时候很难处理。
最好的办法就是转换为unicode。

像这样:

c = unicode(a, "gb2312")
print c[0]

这个时候c的下标对应的就是每一字,不再是字节,并且通过 len(c) 就可以获得字数!
还可以很方便的转换为其他编码,比如转换为 utf-8

d = c.encode("utf-8")
查看全文>> 浏览(64) 评论(0)
首页 上一页 1 2 3 下一页 尾页 共 3 页
关于我们 | X5dj动态 | 加入我们 | 友情链接 | 官方日志 | 免责声明 | 举报不良信息
北京开创明天科技有限公司 版权所有 京ICP证040979号