Hot For Coding
  • Python元组添加元素方法

    在Python的元组中,一旦创建就不能改变。也没有提供向元组添加元素的操作函数,因此,要向已创建好的元组添加元素只能另创方法。

    我们知道,元组中的每一个元素的数据类型都不限制,根据这一点我们可以这么做

    # coding=utf8
     
    tuple=('a','b','c')
    print '原先的元组:',tuple
     
    newTuple=(tuple,'d','e')
    print '添加元素后的元组:', newTuple
    

    打印结果

    ('a', 'b', 'c')
    (('a', 'b', 'c'), 'd', 'e')

    虽然是重新声明了一个元组,但不影响元素的使用。新的元素有三个元素,而第一个元素是一个元组,其余的元素则是字符串。这样的元组显然不是我们想要的格式,但可以使用嵌套循环遍历二维元组也可以取得全部元素。

    ...

    READ ALL

  • Python中filter()过滤函数

    filter函数

    filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。最终一次性返回过滤后的结果。

    filter()函数有两个参数:

    • 自定函数名,必须
    • 需要过滤的列,必须

    DEMO

    需求,过滤大于5小于10的数

    # coding=utf8
    # 定义大于5小于10的函数
    def guolvhanshu(num):
      if num>5 and num<10:
        return num
     
    # 定义一个序列
    seq=(12,50,8,17,65,14,9,6,14,5)
     
    # 使用filter函数
    result=filter(guolvhanshu,seq)
     
    # Output: (8,9,6)
    print result
    

    ...

    READ ALL

  • Python字符串与数字拼接报错

    Python不像JavaScript或者PHP这种弱类型语言里在字符串连接时会自动转换类型,而是直接报错。要解决这个方法只有提前把int转成string,然后再拼接字符串即可。

    如代码:

    # coding=utf8
    str = '你的分数是:'
    num = 82
    text = str + num + '分 | 琼台博客'
    print text 
    

    这段程序会报错

    TypeError: cannot concatenate 'str' and 'int' objects

    错误原因是类型不匹配,解决这个方法只有提前把num转换为字符串类型,可以使用bytes函数把int型转换为string型。

    ...

    READ ALL

  • wamp项目移到Linux下惨痛调错经历

    正在做一个基于ZendFramework的项目,要从wamp平台移植到LNMP平台。于是我在VMware上安装了一个CentOS6,并且编译安装了Nginx + php-fpm + MySQL环境。

    出现问题

    在看到phpinfo()界面以后,赶紧配置Nginx的虚拟主机,把ZendFramework项目上传到CentOS里。正常打开项目,但登录后就出现在项目主页与登录界面两个页面之间无限死循环跳转,跳转间隔大约一到两秒,整个页面都是空白,没有任何字符与报错提示。

    没有开启URL重写规则

    因为我在项目下发现有点.htaccess文件,所以就直接认定可能是因为.htaccess文件里可能写了什么东西,没有被Nginx解析到,所以出现无限死循环跳转情况。.htaccess文件时Apache动态加载配置文件,只要放在站点根目录下,就会自动被解析,并且不需要重新启动Apache服务。

    ...

    READ ALL

  • Win7下Eclipse中文字体太小解决方案

    今天安装Eclipse + PyDev准备写写Python,却发现中文字在Eclipse下非常难看。这是由于Eclipse用的字体是Consolas,英文还可以,中文就惨不忍睹。

    换一种字体

    下载字体好看的中文字体,这里推荐下载YaHei.Consolas

    设置Eclipse

    点击 window -> Preferences

    full

    Appearance -> Colors and Font -> Basic -> Text Font -> Edit

    ...

    READ ALL

  • IE部分版本JavaScript获取ID不区分大小写

    昨天做一个JavaScript与Flash交互项目,在其它浏览器都正常运行,唯独IE6、IE7、部分的版本IE8报错。查了很久代码,也未发现是哪里的问题。于是开始逐行try...catch,结果在window.document.video这一句报错了。

    IE不区分大小写导致

    video是Flash的ID,为什么其它浏览器不报错,偏偏这里报错呢?经查,发现页面也有一个div标签,id为Video,难道是大小写的问题?于是把页面div标签id改为video,问题解决。

    做DEMO验证

    难道IE对标签属性值不区分大小写吗?于是我自己做了一个测试。

    ...

    READ ALL

  • 配置Nginx支持pathinfo模式

    缘由

    很久不使用Apache了,渐渐对Apache感到陌生,因为朋友有个ZendFramework框架从Apache移到Nginx下,需要pathinfo模式支持。

    方案搜索

    于是开始搜索Nginx + pathinfo相关文章,一开以为很容易就会配置好。因为搜索后发现有大量文章介绍Nginx开启pathinfo模式,感觉不是什么难事。但是经过几个小时下来,还是没有配置好。并且大量文章的内容都极其相似,基本都是转载的。

    开始有点急了,因为一天过去了没有配好。

    继续摸索

    没办法,继续搜索。为了验证方便,下载thinkphp框架搭了个环境。并且加了UserAction.class.php控制器类,在类里加了一个app方法并输出一行文字。

    ...

    READ ALL

  • MySQL取出表中排序数据且不重复

    今日做一个功能需求,从表中排序取出前十个且数据不一致的数据,如下列a表中的值有

    mysql> select * from a;
    +----+----------+
    | id | user     |
    +----+----------+
    |  1 | zhangsan |
    |  2 | lisi     |
    |  3 | wangwu   |
    |  4 | zhangsan |
    |  5 | zhaosi   |
    |  6 | wangwu   |
    |  7 | lisi     |
    |  8 | lisi     |
    |  9 | zhaosi   |
    +----+----------+
    9 rows in set (0.00 sec)
    

    ...

    READ ALL

  • 从简单HTTP请求延伸到JSONP跨域

    JavaScript的跨域的跨域问题,是众多新手首要遇见的问题。网上解决跨域的方案有很多,本文就前面我写过的《JavaScript简单模拟HTTP请求比Ajax方便》延伸到JSONP跨域方案。

    JSONP原理

    为什么叫JSONP呢?其实这种跨域实现方式跟JSON一点关系也没有,所以不要局限于这种跨域方式一定跟JSON有关系。JSONP实现的原理是通过<script>标签的src跨域访问,被访问页把最终结果通过回调本地一个JavaScript函数从而达到跨域功能。然而从正常的表面上看,也可以当作是包含一个JavaScript文件,只不过这个JavaScript文件是主要用来传输数据而已。

    ...

    READ ALL

  • Git重写上一次commit信息

    我们有时commit后才突然发现刚才的信息没有写好,想重新写怎么办?

    这时候可以用以下这条简单的命令实现上一条commit信息改写

    git commit --amend
    

    看看这条命令的解释

    --amend
            Replace the tip of the current branch by creating a new commit. The
            recorded tree is prepared as usual (including the effect of the -i
            and -o options and explicit pathspec), and the message from the
            original commit is used as the starting point, instead of an empty
            message, when no other message is specified from the command line
            via options such as -m, -F, -c, etc. The new commit has the same
            parents and author as the current one
    

    ...

    READ ALL