如何停止这个程序

2024-09-27 07:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在空闲状态下运行这个程序并键入0作为响应时,它会打印消息,但不会停止程序。我以为设置keepGoing为False可以阻止它,但我不知道发生了什么。请帮忙

""" crypto.py
Implements a simple substitution cypher
"""

alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key =   "XPMGTDHLYONZBWEARKJUFSCIQV"

def main():
  keepGoing = True
  while keepGoing:
    response = menu()
    if response == "1":
      plain = input("text to be encoded: ")
      print(encode(plain))
    elif response == "2":
      coded = input("code to be decyphered: ")
      print (decode(coded))
    elif response == "0":
      print ("Thanks for doing secret spy stuff with me.")
      keepGoing = False
    else:
      print ("I don't know what you want to do...")
    return main()

def menu():
    print("Secret decoder menu")
    print("0) Quit")
    print("1) Encode")
    print("2) Decode")
    print("What do you want to do?")
    response = input()
    return response

def encode(plain):
    plain = plain.upper()
    new = ""
    for i in range(len(plain)):
        y = alpha.index(plain[i])
        new += key[y]
    return new

def decode(coded):
    coded = coded.upper()
    x = ""
    for i in range(len(coded)):
        z = key.index(coded[i])
        x += alpha[z]
    return x

main()

Tags: tokeyalphaforinputreturnmainresponse
1条回答
网友
1楼 · 发布于 2024-09-27 07:26:17

在退出while循环并重新启动程序之前,再次调用main():

def main():
    keepGoing = True
    while keepGoing:
        response = menu()
        if response == "1":
            plain = input("text to be encoded: ")
            print(encode(plain))
        elif response == "2":
            coded = input("code to be decyphered: ")
            print (decode(coded))
        elif response == "0":
            print ("Thanks for doing secret spy stuff with me.")
            keepGoing = False
        else:
            print ("I don't know what you want to do...")
#      return main()  # <  delete this line

如@Barmar所建议的,更好的设计是使用while True循环和break语句在达到某个条件时退出:

def main():
    while True:
        response = menu()
        if response == "1":
            plain = input("text to be encoded: ")
            print(encode(plain))
        elif response == "2":
            coded = input("code to be decyphered: ")
            print (decode(coded))
        elif response == "0":
            print ("Thanks for doing secret spy stuff with me.")
            break
        else:
            print ("I don't know what you want to do...")

相关问题 更多 >

    热门问题