DIV 图片垂直居中

.pic
{
width:160px;
height:160px;
border:solid?1px?#ccc;
text-align:center;
}

.pic?a
{
display:table-cell;
width:160px;
height:160px;
vertical-align:middle;
*display:block;
*font-family:Arial!important;
*font-size:140px;/*约为高度的0.873,160*0.873?约为140*/
*line-height:1;
}
.pic?a?img
{
vertical-align:middle;
max-width:160px;
max-height:160px;
border:0px;
}

(全文…)

CSS em与px的区别

CSS中定义的长度单位有两种,相对长度和绝对长度。相对长度单位主要有:
*?em?(em,元素的字体的高度)
*?ex?(x- height,字母?”x”?的高度)
*?px?(像素,相对于屏幕的分辨率)
绝对长度单位主要有:
*?in?(英 寸,1英寸=2.54厘米)
*?cm?(厘米,1厘米=10毫米)
*?mm?(米)
*?pt?(点,1点=1/72 英寸)
*?pc?(帕,1帕=12点)

使用px和em主要优缺点如下:
1.?IE无法调整那些使用px作 为单位的字体大小,而firefox能够调整使用px和em作为单位的字体;
2.?任意浏览器的默认字体高都是16px。所有未经调整的浏览 器都符合:?1em=16px。那么 12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明?Font- size=62.5%,这就使em值变为?16px*62.5%=10px,?这样12px=1.2em,?10px=1em,?也就是说只需要将你的原 来的px数值除以10,然后换上em作为单位就行了。
em有如下特点:
(全文…)

男子见义勇为追赶小偷致其死亡 获刑3年罚2.5万

大河网3月24日电 别人的摩托车被偷,他参与追赶小偷,结果造成骑着摩托车的小偷摔倒死亡。昨日,洛阳市洛龙区法院审结了这起“追赶小偷致死案”。本是见义勇为帮同事追赶小 偷的曹天,被判处有期徒刑三年,缓刑三年执行。

2009年4月27日10时,洛龙区关林镇一家货运部,正在干活的冯小强突然发现一名男青年要将他停在门口的踏板助力摩托车骑走,便大喊“抓小 偷”。

同事冯高明骑摩托车带着曹天追去,喊话要求对方停车,但男青年置之不理。

曹天有点急了,抽出身上的皮带,朝男青年抽打过去。男青年为躲避抽打,身体失衡翻车倒地,头部着地致严重颅脑损伤而死亡。

在案件审理过程中,法院主持双方当事人就民事赔偿部分达成调解协议,被告人曹天,附带民事诉讼被告人冯小强、冯高明共同赔偿被害人范某家属经济损失 共计2.5万元。

2009年7月16日,洛阳市洛龙区检察院向洛龙区法院提起公诉,指控曹天犯有故意伤害罪。

公诉机关认为,曹天明知自己的行为会造成他人身体上的伤害,却放任这种结果的发生,最终造成他人死亡的后果,其行为已构成故意伤害罪。

曹天的辩护律师认为,曹天骑车追赶,曾向范某喊话让其停车,是范某自己太慌张,驾车不慎,摔倒致死,所以曹天在主观上并没有伤害范某的故意。

另外,曹天一心想帮朋友追回被偷的财物,这是一种为保护他人财产不受非法侵害而采取的见义勇为行为。

法院认为,被告人曹天应当预见到向高速行驶的二轮助力车驾驶人施加外力可能造成车翻人伤的结果,可曹天为追赶小偷、取回被盗物品而疏忽大意没有预 见,导致小偷死亡,其行为应构成过失致人死亡罪。

(全文…)

从C#到 Python —— 2 运算符、表达式和流程控制

本章介绍Python的运算符、表达式、程序流程控制语句以及异常处理语句,在这方面,Python和C#是非常类似的,我们仅需要注意它们之间的 一些细微差异。另外,在本章我还会简要介绍Python语言中的两项有趣功能——列表内涵和动态表达式,虽然它们严格来说属于函数部分的内容,不过我觉得 还是放在表达式一章比较合适。

2.1? 运算符和表达式

无论使用什么语言,我们编写的大多数代码(逻辑行)都包含表达式。一个表达式可以分解为运算符和操作数,运算符的功能是完成某件事,它们由一些数学 运算符号或者其他特定的关键字表示;运算符需要数据来进行运算,这样的数据被称为操作数。例如,2 + 3是一个简单的表达式,其中+是运算符,2和3是操作数。

2.1.1? 算术运算符与算术表达式

算术运算符是程序设计语言最基本的运算符。Python提供的算术运算符除了+、-、*、/、%(求余)之外,还提供了两种C#中未提供的运算符: 求幂(**)和取整除(//)。下面我们通过一段代码来理解这两个算术运算符:

1 #-*-coding:utf-8-*- 2 ?x = 3.3 3 y = 2.2 4 a = x**y 5 ?print a 6 ?#输出13.827086118,即3.3的2.2次幂,在C#中可用Pow方法实现幂运算 7 ?b = x//y 8 ?print b 9 ?#输出1.0,取整除返回商的整数部分 10 ?c = x/y 11 ?print c 12 ?#输出1.5,注意体会普通除与取整除的区别 (全文...)

从C#到 Python —— 1 变量和数据类型

“一切数据是对象,一切命名是引用”。

如果你能理解这句话,说明对Python的变量与数据类型已经有了不错的认识,那么我建议你直接跳到1.4节的总结部分,看看C#与Python在 变量与数据类型方面的差异就可以。如果你还有疑惑,那么就请完整的读一下这一章吧。

好,让我们开始。

1.1 变量声明和定义

1.1.1? 变量声明和定义

与C#不同,Python在使用变量之前无须定义它的类型, 试着运行下面的例子:

1 i = 1 2 ?print i

从上边我们可以看到,变量 i 在使用前并不需要定义,但是必须声明 以及初始化该变量。试着运行下面的例子:

1 i = 1 2 ?print i + j

上面的代码会产生一个异常:“NameError: name ‘j’ is not defined”,Python提示变量 j 没有定义。这点和BASIC等弱类型的语言不一样。在BASIC中,执行上述代码的时候不会产生异常,你可以在EXCEL的VBA开发环境里试一下,把 print改为MsgBox就可以,结果会输出 1 。这说明Python并不是一种类似BASIC的弱类型语言。

另一方面,Python与C#有一个很大的差异就是在程序运行过程中,同 一变量名可以(在不同阶段)代表不同类型的数据,看看下边的例子:

1 i = 1 2 ?print i,type(i),id(i) 3 i = 10000000000 4 ?print i,type(i),id(i) 5 i = 1.1 6 ?print i,type(i),id(i)

变量 i 的类型在程序执行过程中分别经历了int、long和float的变化,这和静态类型语言(如C等)有很大不同。静态语言只要一个变量获得了一个数据类 型,它就会一直是这个类型,变量名代表的是用来存放数据的内存位置。而Python中使用的变量名只是各种数据及对象的引用,用id()获取的才是存放数 据的内存位置,我们输入的1、10000000000和1.1三个数据均会保存在id()所指示的这些内存位置中,直到垃圾回收车把它拉走(在系统确定你 不再使用它的时候)。这是动态语言的典型特征,它确定一个变量的类型是在给它赋值的时候。

(全文…)

从 C#到Python —— 谈谈我学习Python一周来的体会

从大年初二开始学习Python,到现在正好一个星期了,谈谈我的学习体会。

一、学习缘起

最早听说Python是在今年1月底到北京一个厂商(做汽车驾驶模拟器的)那里看设备,听他们的CTO介绍模拟软件的脚本控制是用的Python, (当时我还把Python叫做“飞森”,而不是“派森” 囧)。第一次听说了这个语言,但也没太在意,因为导师一直跟我说用好一门语言就够了。从上大学到现在,先后用过C、Basic、C++以及ASP(一看就 不是计算机专业的,我大学认识的几个计算机专业的同学,大多都是Pascal – Delphi – Java这条路线)。这几年主要在用C#,觉得C#还不错,又可以做本地程序,也可以做ASP.NET程序,所以也没想再学其他语言了。

寒假做了一个交通网络分析的计算程序,这个程序前期已经有一些基础了,核心算法用的是QuickGraph库。 QuickGraph提供了经典图论里边的绝大部分算法,如最短路、最大流、遍历、支撑树等,不错的一个东西,但是没有复杂网络分析的算法。一开始我是利 用QuickGraph的数据结构,然后自己写复杂网络分析算法。但是写的很累,正好也过年了,就暂时放下了这个工作。

过年的时候闲着没事,上网找是不是有直接提供复杂网络分析算法的库,还真找到了两个:igraph和networkx。(见http://igraph.sourceforge.net/和http://networkx.lanl.gov/), 其中,igraph是用C写的,但提供了Python的接口;networkx就纯粹是用Python实现的一个库了。下载了它们的文档,发现正是我想要 的东西:成熟的复杂网络分析算法,大量的示例程序。要想直接利用这两个库,肯定要学Python语言了。我想,反正各种语言都差不多,学就学吧。

(全文…)

从C#到 Python —— 0 前言:进入Python的世界

0.0? 写在前面

前几天写了《从 C#到Python —— 谈谈我学习Python一周来的体会》这篇文章,反响还不错,对我这样的Freshman是个很大的鼓舞。应博友的提 议,从今天开始写一个系列的连载文章《从C#到Python》。一方面是整理下我自己学习Python的心得体会,留着以后忘记时备查;另一方面就是希望 能对有一定C#编程基础、同时对Python感兴趣的朋友有所帮助。

首先要说明的是,这并不是一个完备的Python语言教程,因为这样的教程在网络上、书店里已经有太多了。本文的主要目的是希望能够为C#使用者提 供一个简短的Python语言入门,以节省他们的学习时间。作为一个C#程序员,你掌握的编程知识已经足够多了。要知道,Python和C#这两门语言是 非常相像的,它们之间的关系类似方言与普通话的关系,而不是英语和汉语的关系。你只是需要花点时间了解Python与C#之间的一些微小差别,然后动手编 几个小程序熟悉它。你会发现,Python比你想象的要更简单。

此外,写这个连载的目的并不是比较两门语言的高下,更不是鼓动任何人完全从C#转向Python。我的想法很简单:把学习Python当作一个兴 趣,并能在适当的时候使用它。

考虑到目前两门语言各自版本的普及情况,本文将主要结合C#的2.0版本和Python的2.6版本来进行介绍。对于一些在Python 2.6中已存在的但是在C# 3.0及4.0里才新增的特性,也将会适当提及。

最后,这个连载将以介绍Python语法为主,初步的章节安排见文后(欢迎提出意见或建议,我会适当调整以符合大家的需要)。如果以后有能力及时 间,我会考虑继续写一些GUI、Web开发等相关的内容。

OK,下面正式开始。

0.1? 安装和配置Python开发环境

在Python的官方网站可以下载到Windows下的安装包(目 前是2.6.4版本),按照提示一路Next下去就可以了。记得安装完成后将Python所在的目录(如C:\Python26)加入系统PATH变量。

Python的安装包自带了一个简单的集成开发环境——IDLE,你也可以选一个自己喜欢的IDE。我个人推荐PythonWin,它的语法提示功 能很不错,适合初学者使用(参见我的另一篇文章《Python IDE的选择》)

0.2? 第一个程序:Hello, world!

现在你可以打开IDLE或PythonWin,新建一个py为扩展名的Python脚本文件,输入以下内容:

代码1:第一个Python程序

1 print "Hello, world!"

保存并运行它,如果输出 >>> Hello, world! ,说明你已经成功编写了第一个Python程序,congratulations!

上面的“Hello World”几乎是学习任何一门新语言的必经之路,正如提出这个程序的Simon Cozens所说:“它是编程之神的传统咒语,可以帮助你更好的学习语言”。

为了比较Python和C#在编码风格等方面的差异,下边给出一个稍复杂些的“Hello, world”程序以及它的C#对照版本。

代码2:唐僧版的Hello, world程序

1 # -*- coding: utf-8 -*- 2 ?""" 3 我的第2个Python程序 4 仅为和C#作对比,谢绝效仿:) 5 ?""" 6 ?import sys 7 ?def Main(): 8 sys.stdout.write("Hello, world!\n") 9 ?#下面的语句看起来很怪,一会我们再解释它是干什么滴 10 ?if __name__ =="__main__": 11 Main()

注意,代码2第1行# -*- coding: utf-8 -*-, 是为了让Python支持中文,这个是必须的。如果你嫌麻烦,可以在IDE里作一个只包含这一行代码的模版文件,以后每次新建Python脚本的时候自动 打开这个模版,这样会比较省事。

代码3:C#的对照版本

1 /* 2 我的第1001个C#程序 3 可能还不到,没写过这么多 4 ?*/ 5 ?using System; 6 ?class Program{ 7 static void Main(){ 8 if (1==1) //干什么?要搞SQL注入啊? 9 ? Console.WriteLine("Hello, world!"); 10 } 11 }

0.3? 认识二者最基本的差异

0.3.1? 差异之一:编码风格

比较代码2、3,可以很容易看出两种语言在编码风格上的差异,下面分别来说。

(1)代码块与缩进

C#使用C/C++风格的编码形式,除了要求用{}组织代码块外,语句间的缩进可以是任意的。

Python强制所有程序都有相同的编码风格,它通过缩进来组织代码块。缩进相同的语句被认为是处于同一个代码块中,在if/else等语句及函数 定义式末尾会有一个冒号,指示代码块的开始。Python这种强制缩进的做法可以省去{}或者begin/end等,使程序的结构更为清晰(有的人认为恰 好相反),同时也减少了无效的代码行数。

此外需要注意,尽量使用4个空格作为Python代码的一个缩进单位,最好不使用Tab,更不要混用Tab和空格,这也算是Python的一个非强 制性约定吧。

(2)语句结尾

C#语句用分号结尾,Python不用任何符号(类似BASIC)。

实际上Python也可以使用分号结尾,像这样 a = 1 ; b =2 ; c = 3 ; print a,b,c ,不过Python中这种风格多用于调试,应为你可以很容易注释掉这一行就删除了所有调试代码。

另外,当一行很长时,Python可以用 \ 符号折行显示代码。

(3)注释方法

C#用//进行单行注释,用/* */进行多行注释;而Python用#符号进行单行注释,用三引号(可单可双)进行多行注释。

(4)条件表达式

C#的条件表达式必须要加括号,见代码3第8行;而Python的条件表达式加不加括号均可(Python程序员一般不加,C/C++/C#程序员 一般会加:)

0.3.2? 差异之二:入口方法

C#语言必须要有入口方法Main(),这是程序开始执行的地方。

Python语言中没有入口方法(函数),作为解释型的语言,Python代码会自动从头执行(所以在代码2中除了第8行,其它行均属于废话)。

如过你对这点不习惯,可以使用Python代码的内置属性__name__。__name__属性会根据Python代码的运行条件变化:当 Python代码以单个文件运行时,__name__便等于”__main__”,当你以模块形式导入使用Python代码时,__name__属性便是 这个模块的名字。

(全文…)

从C#到 Python —— 3 函数及函数编程

在C#中没有独立的函数存在,只有类的(动态或静态)方法这一概念,它指的是类中用于执行计算或其它行为的成员。在Python中,你可以使用类似 C#的方式定义类的动态或静态成员方法,因为它与C#一样支持完全的面向对象编程。你也可以用过程式编程的方式来编写Python程序,这时Python 中的函数与类可以没有任何关系,类似C语言定义和使用函数的方式。此外,Python还支持函数式编程,虽然它对函数式编程的支持不如LISP等语言那样 完备,但适当使用还是可以提高我们工作的效率。

本章主要介绍在过程编程模式下Python中函数的定义和使用方法,关于在面向对象编程中如何使用函数,我们将在下一章再讨论。此外,我还会简要介 绍Python中的函数编程功能。

3.1? 函数的定义

函数定义是最基本的行为抽象代码,也是软件复用最初级的方式。Python中函数的定义语句由def关键字、函数名、括号、参数(可选)及冒号:组 成。下面是几个简单的函数定义语句:

1 # -*- coding: utf-8 -*- 2 #定义没有参数、也没有返回值的函数 3 ?def F1(): 4 print 'hello kitty!' 5 ?#定义有参数和一个返回值的函数 6 ?def F2(x,y): 7 a = x + y 8 return a 9 ?#定义有多个返回值的函数,用逗号分割不同的返回值,返回结果是一个元组 10 ?def F3(x,y): 11 a = x/y 12 b = x%y 13 return a,b

可能你已经注意到了,Python定义函数的时候并没有约束参数的类型,它以最简单的形式支持了泛型编程。你可以输入任意类型的数据作为参数,只要 这些类型支持函数内部的操作(当然必要时需要在函数内部做一些类型判断、异常处理之类的工作)。

(全文…)

震惊,看完毛骨悚然:2012预言(最新)

美国25日凌晨报道,华盛顿、纽约、洛杉矶几个大城市突然相继出现一些儿童的奇怪行为, 他们突然间都相继不约而同说起一些人类听不懂的语言,而调查发现,他们无一例外都是深蓝儿童,据称有人第一时间破译了他们的预言,并翻译如下:
(1)2010 年3月份到5月份,全球爆发新一轮H1N1变种,当秘密死亡人数较多时候,各国才正式由媒体确认,为的是之前不造成社会恐慌。到5月份结束,全球将有至少 3万人死于H1N1,其中美国及加拿大最严重,其次为中国。
(2)2010年3月份—9月份,中国大概四分之一地区将会持续半年干旱,主要集中在 西南地区,6月份最严重将会出现在云南省,半年的旱灾会导致中国1万左右的人死亡。
(3)2010年5月份,全球冰山会有相继消融,结果将导致包 括南美洲、亚洲一些地区海平面升高,日本、上海会首当其冲。
(4)2010年6月,卡特拉火山会继艾雅法拉火山后大规模喷发,以此引发的洪水将会 使3万人死亡,10万人无家可归,扬起的火山灰影响冰岛乃至整个大西洋沿岸城市,1年后,将会有2万人陆续死于呼吸疾病。
(5)2010年9月至 10月,全球多个地区持续高温,其中记录到非洲最高气温点42.6度,上海41.2度,超历史水平。
(6)2010年末,全球爆发新一轮金融危 机,社会舆论原因为诺亚方舟的建造。传言真正的建造地并不在中国,而是在俄罗斯。但中国除了上海外,也纷纷在各地秘密建立庇护所,其中拉萨将会有大量飞机 进出,社会舆论将方舟的建造地又转向拉萨。
(7)2011年2月,全球二十国峰会举行,商量应对金融危机,全球将有至少200名超级富豪参与,峰 会举行地在美国旧金山。最后达成协议为一方面政府下调银行利率,另一方面将保证诺言方舟的建造,结果将会使得俄罗斯、美国、中国、等国在今之后逐渐占据金 融主导地位,而加拿大、日本等国逐渐沦为发展中国家。
(8)2011年3月,美国洛杉矶发生大地震,震级为9.2级,死亡人数飙升到18万人,相 隔不到半个月,唐山再次地震,震级为8.7级,死亡人数为11万人,专家称全球将进入地壳活跃时期。
(9)2011年5月后,各国地区相继出现大 大小小地震和火山喷发,其中日本富士山将于8月份发生大火山喷发,熔岩将淹没大阪半个城市,造成至少16万人死亡和失踪。
(10)2011年9月 份,地理专家称地球磁场正在迅速减弱,太阳粒子暴更于11月份侵入地球磁场层,其间各国多次发生飞机坠毁事件和水下潜艇对撞事件。


(全文…)

简单总结echo()和print()、require()和include()等易混淆函数的区别

1.echo和print的区别

PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但print有返回值,当其执行 失败时返回flase。因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。

$r = print “Hello World”;

这意味着print可用在一些复杂的表达式中,而echo则不行。但是,因为echo语句不要求返回任何数值,所已在代码中echo语句的运行效率 要略微快于print语句。

2.include与require的区别

include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而 require()则是无条件包含函数。例如在下面代码中,如果变量$a为真,则将包含文件a.php:

if($a){
include(“a.php”);
}

而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php包含进文件里:

if($a){
require(“a.php”);
}

在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!但 requre却会给你来个致命错误。

当然,从字面意思上我们也可以理解七分:requre是很强硬的请求、要求的意思。

(全文…)