2017-06-21 84 views
-7

我正在學習Python並堅持挑戰。挑戰的指令如下:IP地址Python挑戰

創建一個程序,該程序需要在鍵盤上輸入一個IP地址,並輸出它包含的段數以及每個段的長度。

注意:它不是我的python代碼。這是我發佈的教師代碼。我發佈的原因是我不明白代碼中發生了什麼。

這是代碼本身。

ipAddress = input("Please enter an IP address: ") 

segment = 1 
segmentLength = 0 
character = '' 

for character in ipAddress: 
    if character == '.': 
     print("segment {} contains {} characters".format(segment, segmentLength)) 
     segment += 1 
     segmentLength = 0 
    else: 
     segmentLength += 1 

    if character != '.': 
     print("segment {} contains {} characters".format(segment, segmentLength)) 

我的問題是,爲什麼segment = 1segmentLength = 0

+3

嚴重縮進Python代碼是無義簡單地找到。如果您要發佈Python代碼,請準確地重現您的縮進。 – khelwood

+2

爲什麼不在紙上寫出會發生什麼? –

+0

它不是我的Python代碼。這是我發佈的教師代碼。我發佈的原因是我不明白代碼中發生了什麼。感謝downvoting。 – Ruslan

回答

0

這些問題即使是這麼差我想我會回答這(種)

ipAddress = input("Please enter an IP address: ") 
segments = ipAddress.split(".") 
segmentsLengths = [str(len(seg)) for seg in segments] 
print(", ".join(segments)) 
print(", ".join(segmentsLengths)) 

這是一個更好的例子。第2行基本上是您的for循環找到"."。的ip地址分成在每個"."列表分割,然後將長度是通過使用len

*編輯*

# get input 
ipAddress = input("Please enter an IP address: ") 

# default value (could be any value but makes sense 
# to be either 0 or 1) 
segment = 1 

segmentLength = 0 
# the segment starts with a value of zero 
# until it is counted and will increase 

#character = '' # is not needed 

for character in ipAddress: # loop through the ip address 
    if character == '.': # if a dot then ssegment has ended 
     # output previous segment info 
     print("segment {} contains {} characters".format(segment, segmentLength)) 
     segment += 1 # move onto next segment 
     segmentLength = 0 # reset length to zero ready for next 
    else: # if character is not a dot then segment continues 
     segmentLength += 1 # add one to length of segment 

if character != '.': # catches the last segment 
    print("segment {} contains {} characters".format(segment, segmentLength)) 
+0

謝謝。老師提到也有這種方法。他稱之爲像字符串分割方法。但我還沒有達到那個水平。這就是爲什麼我需要了解這段代碼中的內容。 – Ruslan

+0

非常感謝! – Ruslan