IP地址Python挑战

时间:2017-06-21 13:36:45

标签: python

我正在学习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

1 个答案:

答案 0 :(得分: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循环来查找"."。 ipAddress拆分为每个"."分割的列表,然后只需使用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))