Hot For Coding
  • 部分IE下使用trim()函数出错解决方法

    因为在获取输入框内容时,常常需要trim下多余的空格。而IE部分低端浏览器里的JavaScript版本不内置trim()这个清楚空格函数,而流行的浏览器里都兼容了,比如Chrome,FF等。为了不让IE下报错影响使用,我们可以自己动手丰衣足食,在IE下给String原型添加一个trim自定义函数,让IE下的String类型支持trim()清除首尾空格。

    把以下代码贴在最开始部分就好,当然清除空格的写法多种多样,以下效率没测试过,但基本够用,实在看重效率可以自己研究下正则,替换成你的写法就好!

    // 解决IE下string类型没有trim函数bug
    String.prototype.trim = function () {
      return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
    };
    

    ...

    READ ALL

  • Python写的一个按面值找零钱的程序

    前两天写了一个《Python写的一个自动售饮料小程序》,今天尝试Python写的一个按面值找零钱的程序。

    按照我们正常的思维逻辑从大面值到小面值的找零方法,人民币面值有100元,50元,20元,10元,5元,1元,5角,1角,而程序也相应的设置了这些面值。只需要调用函数时传入您想要找零的金额,程序会自动算各个面值的钱应该找多少张。如传入50元,则系统自动算出找零50元一张面值,如果传入60块7毛,则程序自动算出该找零50元一张,10元一张,5角一张,1角两张。

    ...

    READ ALL

  • Python isinstance()判断对象类型

    在Python中可以使用type()isinstance()这两个函数判断对象类型,而isinstance函数的使用上比type更加方便。

    例子

    # coding=utf-8
     
    a = 10
     
    def b():
      pass
     
    print isinstance(a, (int, str))
    print isinstance(a, (float, str))
    print isinstance(b, (str, int))
     
    class c:
      pass
     
    obj = c()
     
    print isinstance(obj, (c, int))
    

    ...

    READ ALL

  • Python变量值交换

    Python追求简洁,诞生不少运算赋值规则,力求从简,其中就包括两个或者多个变量交换值。

    JavaScript语言中

    // 声明变量
    var a = 50
    var b = 10
    
    // 开始交换,先把其中一个值赋给临时变量,然后才能实现交换变量。
    var tmp = a
    a = b
    b = tmp
    

    Python中

    # 在Python中,实现两个变量值交换非常方便
    
    # 声明变量
    a = 50
    b = 10
    
    # 开始交换变量
    a, b = b, a
    

    甚至可以多个变量同时交换

    a = 50
    b = 10
    c = 20
    c, b, a = a, b, c
    一个运算符就搞定多个变量值互换!
    

    ...

    READ ALL

  • Python写的一个自动售饮料小程序

    写这个程序的时候,我已学习Python将近有一百个小时,在网上看到有人求助使用Python如何写一个自动售饮料的程序,就试试写一个实用的售货程序。当然,只是实现基本功能,欢迎高手指点,新手学习参考。

    运行环境: Python 2.7

    # encoding=UTF-8
    
    loop = True
    money = 0
    while loop:
      x = raw_input('提示:请投入金币,结束投币请按"q"键')
      if x == 'q':
        if money == 0:
          print '错误:您未投入过纸币,请至少投入一张纸币后才能选购商品'
        else:
          print '提示:您已结束投币,将进入购买商品操作界面'
          loop = False
      else:
        try:
          x = int(x)
          money += x
          print '提示:您此次投币', x, '元人民币,您一共投币', money, '元人民币'
        except Exception, e:
          print '错误:您的金币系统不识别,请重新投币,谢谢!'
    
    GoodList = {'可口可乐': 2.5, '果粒橙': 3, '奶茶': 1.5, '加多宝': 4}
    
    i = 0
    print '请选择商品:'
    for x in GoodList:
      i += 1
      print '编号', i, '商品名称', x, '价格', GoodList[x]
    print
    
    fanwei = range(len(GoodList))
    loop = True
    while loop:
      o = raw_input('提示:请输入您要购买的商品编号,按"q"键结束购买')
      if o == 'q':
        loop = False
      else:
        try:
          o = int(o)
          if o >= 1 and o <= len(GoodList):
            i = 0
            for x in GoodList:
              i += 1
              if i == o:
                if money >= GoodList[x]:
                  money -= GoodList[x]
                  print '提示:您购买的商品是:', x, ',价格:', GoodList[x], ',您还剩余:', money, '元人民币'
                  if money == 0:
                    loop = False
                else:
                  print '错误:您的余额', money, '元已不足购买此商品', x, '[', GoodList[x], '元]'
          else:
            print '错误:您输入的商品编号不存在,请重新输入'
        except Exception, e:
          print '错误:请输入正确的产品编号,谢谢合作!'
    
    if money > 0:
      print '提示:系统将找您,', money, '元人民币,欢迎下次光临'
    else:
      print '提示:您的余额已用完,欢迎下次光临'
    

    ...

    READ ALL

  • Golang在for循环里修改值

    Golang是有指针概念的,想写好这门语言,避免空指针的错误还是要花点功夫的。先看看例子

    package main
    
    import (
      "fmt"
    )
    
    type Student struct {
      Age int
    }
    
    func main() {
    
      arr := [3]Student{
        {
          Age: 10,
        },
        {
          Age: 15,
        },
        {
          Age: 20,
        },
      }
    
      for _, v := range arr {
        v.Age = 0
      }
    
      fmt.Println(arr)
    
    }
    

    ...

    READ ALL

  • Golang实现斐波那契

    JavaScript,Python和PHP实现的都写过了,今天用Go再来一下

    什么是斐波那契

    斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
    这个数列从第3项开始,每一项都等于前两项之和

    代码实现

    package main
    
    import (
      "fmt"
    )
    
    var (
      v1 = 0
      v2 = 0
    )
    
    func fibonacci() int {
    
      if v1 == 0 {
        v1 = 1
      } else {
        v1, v2 = v1+v2, v1
      }
    
      return v1
    }
    
    func main() {
      for i := 0; i < 10; i++ {
        fmt.Println(fibonacci())
      }
    }
    

    ...

    READ ALL

  • PHP实现斐波那契

    前几天我写了一版JavaScript与Python实现的,今天用PHP实现一下

    什么是斐波那契

    斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368........
    这个数列从第3项开始,每一项都等于前两项之和

    代码实现

    <?php
    
    $last1 = 0;
    $last2 = 0;
    
    function fibonacci() {
      global $last1, $last2;
    
      if ($last1 == 0) {
        $last1 = 1;
        $ret = $last1;
      } else if ($last2 == 0) {
        $last2 = 1;
        $ret = $last2;
      } else {
        $tmp = $last1 + $last2;
        $last2 = $last1;
        $last1 = $tmp;
        
        $ret = $tmp;
      }
    
      return $ret;
    }
    
    for ($i = 0; $i < 10; $i++) {
      echo fibonacci()."\n";
    }
    

    ...

    READ ALL

  • 关于图片加载进度

    这里说的图片加载进度可能有两种含义:

    • 第一种,单张图片实时加载进度(浏览器实现不了)
    • 第二种,多张图片以数量来模拟加载进度(容易实现)

    在网上搜索图片加载进度几乎说的都是第二种含义,而谈及第一种的甚少, 原因就是浏览器实现不了!

    第一种的图片实时加载进度目前几乎都是与AS交互实现,因为Flash有读取加载进度的功能并且又能与JavaScript交互。因此这种模式就是在网页中嵌入一个不现实的Flash,然后在加载图片的时候出Flash的实时读取已加载数据功能,然后把数据回传给JavaScript,再去计算出百分比,实时的显示在网页上,从而实现图片加载的实时进度。

    ...

    READ ALL

  • Python socket.error [Errno 98] Address already in use

    今天在写一个Python与HTML5 WebSocket实例,每次重新运行脚本总是提示地址已经存在并且被使用!查询相关文档才知道在socket编程中,当通过客户端向服务器端发送消息,关闭了连接后,这时如果马上再去运行服务器端程序,会提示这个错误:

    socket.error: [Errno 98] Address already in use

    这是因为在TCP/IP终止连接的四次握手中,当最后的ACK回复发出后,有个2MSL的时间等待,MSL指一个片段在网络中最大的存活时间,这个时间一般是30秒,所以基本上过60秒后就可以重新连接!

    为什么要等待2MSL?是因为在最后发出ACK回复后,发送方不能确认ACK是否被另一端正常收到,如果另一端没有收到ACK回复的话,将会在1MSL后再次发送FIN片段。所以说发送方等待2MSL时间,也就是刚好它发ACK回复和对方发送FIN片段的时间,如果此时间内都没有再次收到FIN片段的话,发送方就假设对方已经正常接收到了ACK回复,此时它就会正常关闭连接!

    ...

    READ ALL