zoukankan      html  css  js  c++  java
  • 《Python核心编程》第二版第160页第六章练习 续四 Python核心编程答案自己做的

    6-11.
    转换。
    (a)创建一个从整型到IP地址的转换,如下格式:www.xxx.yyy.zzz
    (b)更新你的程序,使之可以逆转换。
    【答案】
    (a)代码如下:
    Input_number = abs(int(raw_input('Please input a number ...')))
    x3 = x2 = x1 = x0 = 0
    x3 = Input_number / (256 ** 3)
    if x3 > 255:
        tmp = x3
        x3 = 255
    else:
        tmp = x3
    x2 = (Input_number - 256 ** 3 * tmp) / (256 ** 2)
    x1 = (Input_number - 256 ** 3 * tmp - 256 ** 2 * x2) / (256 ** 1)
    x0 = Input_number - 256 ** 3 * tmp - 256 ** 2 * x2 - 256 * x1

    print '%d.%d.%d.%d' % (x3, x2, x1, x0)

    (b)代码如下:
    Input_IP = raw_input('Pleae input an IP address ... ')
    IP = str.split(Input_IP, '.')
    Data = 256 ** 3 * int(IP[0]) + 256 ** 2 * int(IP[1])+ 256 * int(IP[2]) + int(IP[3])
    print 'the number is %d' % Data

    【评论】
    个人觉得本题对采用怎样的算法进行转换没有清晰描述。貌似只要能算得一个有效的IP地址就可以了。我采用的是类似8421码的算法。IP地址是一个32位的二进制数,通常被分割为4个8位二进制数(也就是4个字节)。IP地址通常用”点分十进制“表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。a,b,c,d假设成一个256进制的四位数,逢256就进一。
    通过(a)的计算,256可以表示成0.0.1.0257,可以表示成0.0.1.1。
    Please input a number ...536870977549
    255.1.0.13
    而(b)假设用户输入的是一个有效的IP地址。


    6-12.
    字符串。
    (a)创建一个名字为findchr()的函数,函数声明如下。
    def findchr(string, char)
    findchr()要在字符串string中查找字符char,找到就返回该值得索引,否则返回-1。不能用string.*find()或者string.*index()函数和方法。
    (b)创建另一个叫rfindchr()的函数,查找字符char最后一次出现的位置。它跟findchr()工作类似,不过它是从字符串的最后开始向前查找的。
    (c)创建第三个函数,名字叫subchr(),声明如下。
    def subchr(string, origchar, newchar)
    subchr()跟findchr()类似,不同的是,如果找到匹配的字符就用新的字符替换原先字符。返回修改后的字符串。
    【答案】
    (a)代码如下:
    def findchr(string, char):
        a = string
        k = index = -1
        for i in a:
            k = k + 1
            if i == char:
                index = k
                print index
        if index == -1: print 'index = ', index
       
    a = raw_input('Please input a string ... ')
    b = raw_input('Please input a character to be find in this string ... ')
    findchr(a, b)       
           
    (b)代码如下:
    def rfindchr(string, char):
        a = string
        k = index = -1
        for i in a:
            k = k + 1
            if i == char:
                index = k
        print index
        if index == -1: print 'index = ', index
       
    a = raw_input('Please input a string ... ')
    b = raw_input('Please input a character to be find in this string ... ')
    rfindchr(a, b) 

  • 相关阅读:
    Scrapy学习-18-去重原理
    Scrapy学习-17-暂停和重启
    Scrapy学习-16-动态网页技术
    Scrapy学习-15-降低被识别为爬虫的方法
    Scrapy学习-14-验证码识别
    Scrapy学习-13-使用DownloaderMiddleware设置IP代理池及IP变换
    Scrapy学习-12-使用DownloaderMiddleware随机修改User-Agent
    Scrapy学习-11-Selector对象使用
    使用grunt完成requirejs的合并压缩和js文件的版本控制
    nodemailer中的几个坑
  • 原文地址:https://www.cnblogs.com/balian/p/2063582.html
Copyright © 2011-2022 走看看