как вернуть значение в следующую функцию - не в классе - PullRequest
0 голосов
/ 16 января 2019

у меня есть код с 2 функциями я хотел бы вернуть значение одной функции другой

на данный момент его возвращение "none"

у меня есть 2 функции: 1 для адреса vaildip, а другая функция должна получить значения и использовать их при добавлении в файл:

прямо сейчас validip работает в цикле и запрашивает vaild ip, но когда функция завершает работу всех 4-х входов, она возвращает "none" в качестве значения

def vaildIP(message):
    while True:
      answer1 = raw_input(message)
      ip = answer1.split('.')
      if (len(ip) == 4) and (1 <= int(ip[0]) <= 223) and (int(ip[0]) != 127) and (int(ip[0]) != 169 or int(ip[1]) != 254) and (
           0 <= int(ip[1]) <= 255 and 0 <= int(ip[2]) <= 255 and 0 <= int(ip[3]) <= 255):
          break
          return answer
      else:
          print "Please Enter A Vaild IP Address"
          continue





def setNetwork():
    print "[Network Interface] This step is for configuring the primary network interface (eth0) with a static IP address."
    print "[Network Interface] Please provide the new configuration values, or press Enter to use the current value."
    print "[Network Interface] Prior to saving the new values you will have the option to review them."

    address = vaildIP('Address[current value is < no - value >]:')
    netmask = vaildIP('Netmask[current value is < no - value >]:')
    gateway = vaildIP('Gateway[current value is < no - value >]:')
    print "[Network Interface] Please provide the DNS servers to use (one or more, separated with spaces), \n  or press Enter to use the existing value."
    dns = vaildIP('DNS servers [current value is <no-value>]:') or "8.8.8.8"

    print ("[Network Interface] These will be the new settings for eth0:\n" "iface eth0 inet static\n""Address {addressip} \n"
           "Netmask {netmaskip}\n" "Gateway {gatewayip}\n" "dns-nameservers {dnsip}".format(addressip=address, netmaskip=netmask, gatewayip=gateway, dnsip=dns))
    print ("Enter 'y' - to save the new configuration and load it.\n" "Enter 'n' - to re-enter the configuration details.\n" "Enter 'q' - to quit and return to main manu.")
    option = raw_input()
    if option == 'y':
        newlines = ('auto lo \n iface lo inet loopback \n # The primary network interface \n auto eth0 \n iface eth0 inet static \n address %s \n netmask %s \n gateway %s \n dns-nameservers %s ' % (
        address, netmask, gateway, dns))
        with open("/Users/yos/Desktop/net1.txt", "w+") as file:
            file.write(newlines)
    elif option == 'n':
        setNetwork()
    elif option == 'q':
        sys.exit()

if __name__ == "__main__":

    setNetwork()

ожидается:

[Сетевой интерфейс] Это будут новые настройки для eth0: iface eth0 inet static Адрес 1.1.1.1 #vaildip Сетевая маска 2.2.2.2 Шлюз 3.3.3.3 DNS-имена серверов 8.8.8.8 Введите 'y' - чтобы сохранить новую конфигурацию и загрузить ее. Введите 'n' - для повторного ввода сведений о конфигурации. Введите 'q' - чтобы выйти и вернуться в главное меню. п

фактические результаты: [Сетевой интерфейс] Это будут новые настройки для eth0: iface eth0 inet static Адрес Нет Маска нет Шлюз Нет DNS-имена серверов 8.8.8.8 Введите 'y' - чтобы сохранить новую конфигурацию и загрузить ее. Введите 'n' - для повторного ввода сведений о конфигурации. Введите 'q' - чтобы выйти и вернуться в главное меню. п

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...