《Python核心編程》第二版第160頁第六章練習 續四 -Python核心編程答案-自己做的-

來源:互聯網
上載者:User

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) 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.