Для счетчика циклов длины сегмента IP-адреса без учета последнего сегмента - PullRequest
0 голосов
/ 09 февраля 2019

Пожалуйста, введите IP-адрес 1012.321.32.21 сегмента. Длина сегмента № 1 равна 4 сегменту. Длина сегмента № 2 составляет 3 сегмента. Длина сегмента № 3 составляет 2 сегмента. Количество составляет 4

.последнего сегмента, который в данном случае равен 2. Почему это?

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

segmentCount = 0
segmentLength = 0

for char in address:
    if char in "0123456789":
        segmentLength += 1

elif char not in "0123456789":
    segmentCount += 1
    print("segmentLength of segment #", segmentCount, "is   {}".format(segmentLength))
    segmentLength = 0


#Adding 1 to segmentCount to account for segment after last dot.
print("segmentCount is {}".format(segmentCount + 1))

Ожидаемый результат: Пожалуйста, введите IP-адрес 1012.321.32.21 сегмента Длина сегмента № 1 равна 4 сегменту Длина сегмента № 2 равна 3сегментДлина сегмента № 3 равна 2 сегментуДлина сегмента №4 равна 2 сегментуСчет 4,4006 *

Фактический результат: введите IP-адресСегмент № 3 равен 2 сегментамСчет 4

1 Ответ

0 голосов
/ 09 февраля 2019

Вы печатаете на персонаже, которого нет в вашем списке чисел.Конец списка не вводит цикл for для достижения последней печати. ​​

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

segmentCount = 1
segmentLength = 0

for char in address:
    if char in "0123456789":
        segmentLength += 1

    elif char not in "0123456789":

        print("segmentLength of segment #", segmentCount, "is   {}".format(segmentLength))
        segmentCount += 1
        segmentLength = 0


#NO LONGER-- Adding 1 to segmentCount to account for segment after last dot.
print("segmentLength of segment #", segmentCount, "is   {}".format(segmentLength))
print("segmentCount is {}".format(segmentCount ))

Теперь это не лучший код, так как вы не хотели бы иметь дополнительный оператор печати, но ондолжен проиллюстрировать, в чем проблема.

...