почему я получаю NameError: глобальное имя 'spacing' не определено - PullRequest
0 голосов
/ 04 июня 2018

Я получаю NameError: глобальное имя 'spacing' не определено, и я не уверен, почему

def main():
    print("Project One\n")
    print("To encrypt message enter: 1")
    print("To decrypt messsge enter: 2\n")
    pick = int(input())
    if pick == 1:
        print("Encrypting!")
        spacing()
    elif pick == 2:
       print("Decrypting!")
    else:
        print("Try again")

if __name__ == '__main__':
    main()


def spacing():
    text = raw_input("Please Enter the message to encrypt: ").upper()
    print(text)
    key = raw_input("Please enter a key to encrypt").upper()
    print(key)
    space_ignore = ""
    j = 0
    for i in range(len(text)):
        if ord(text[i]) == 32:
            space_ignore += " "
        else:
            if j < len(key):
                space_ignore += key[j]
                j += 1
            else:
                j = 0
                space_ignore += key[j]
                j += 1
    print(space_ignore)
    return text, space_ignore

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Определения Python оцениваются по порядку относительно других операторов.К моменту запуска main() значение spacing() еще не определено, поскольку управление еще не достигло def spacing(): ....Переместите блок if __name__ == 'main': ниже определения spacing.

0 голосов
/ 04 июня 2018

python - это язык сценариев, который будет выполнять «построчно» или, проще говоря, от начала до конца.сделайте интервал перед основным.

0 голосов
/ 04 июня 2018

Поместите spacing() определение выше main определение и последнее, что вам нужно поместить, это:

if __name__ == '__main__':
    main()
...