为什么我得到NameError:全局名称'间距'没有定义

时间:2018-06-04 01:11:09

标签: python nameerror

我收到了一个N​​ameError:全局名称' spacer'未定义,我不确定为什么

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 :(得分:2)

Python定义是相对于其他语句按顺序计算的。到main()运行时,spacing()尚未定义,因为控件尚未达到def spacing(): ...。将if __name__ == 'main':块移至spacing的定义之下。

答案 1 :(得分:1)

spacing()定义放在main定义之上,您需要放置的最后一件事是:

if __name__ == '__main__':
    main()

答案 2 :(得分:0)

python是一种脚本语言,可以“逐行”或简单地说:从上到下。 在main之前做间距。