как принять MAC-адрес из ввода и напечатать следующие три macaddress в Python - PullRequest
0 голосов
/ 31 мая 2018

Я новичок в Python и кодирования.Мое требование простое.

Я подскажу пользователю для macaddress.Когда он будет введен, я распечатаю следующие 3 mac адреса.Например, если введен mac-адрес 00: 00: 00: 00: 00: 00, я смогу напечатать следующие 3 mac-адреса в формате 00: 00: 00: 00: 00: 01 00:00:00:00:00:02 00: 00: 00: 00: 00: 03

Просьба помочь

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Сначала используйте регулярное выражение для проверки вашего MAC-адреса.Если он в правильном формате, просто удалите символы :, чтобы получить одно значение HEX, которое можно преобразовать в целое число.Используйте это целое число для подсчета следующих 3 значений.Для каждого целого числа конвертируйте значение обратно в шестнадцатеричную строку (с подходящим заполнением нулями спереди).Затем распечатайте выходные данные, поместив отсутствующие : символы обратно в: 4

import re

mac_address = input('Please enter a MAC address: ')
valid = re.match('(?=[a-f0-9]{2}:){5}[a-f0-9]{2}', mac_address, re.I)

if valid:
    mac_as_int = int(mac_address.replace(':', ''), 16)

    for address in range(mac_as_int + 1, mac_as_int + 4):
        output = '{:012X}'.format(address)
        print('{}:{}:{}:{}:{}:{}'.format(output[0:2], output[2:4], output[4:6], output[6:8], output[8:10], output[10:12]))
else:
    print('Invalid MAC address')

Это правильно обработает случай, когда значение переносится в следующий блок:

Please enter a MAC address: 00:00:00:00:00:00
00:00:00:00:00:01
00:00:00:00:00:02
00:00:00:00:00:03

Please enter a MAC address: 11:22:33:44:55:FE
11:22:33:44:55:FF
11:22:33:44:56:00
11:22:33:44:56:01
0 голосов
/ 31 мая 2018

Вы можете проверить macaddress следующим образом:

def isMAC48Address(inputString):
if inputString.count(":")!=5:
    return False
for i in inputString.split(":"):
    for j in i:
        if j>"F" or (j<"A" and not j.isdigit()) or len(i)!=2:
            return False
return True 
...