Python中函数继续的问题

时间:2017-04-27 01:15:46

标签: python-3.x function

我知道这可能是一个非常简单的修复,但我似乎无法使代码工作。以下是有问题的摘录:

def main_menu():
    print("Welcome! Please Choose An Option to Proceed")
    print("1. New: Input Letters Into A New Excel Document")
    print("2. Add: Add New Letters To An Existing Excel Document")
    while True:
        choice = input("Enter Option Number: ")    
        if choice.lower() in ['1','2']:
            return choice.lower()
        else:
            print("Invalid Number Choice")
            continue

def menu_choice(main_menu):
    while True:
        choice = main_menu()
        if choice == "1":
            newsession()
        elif choice == "2":
            addsession()
        else:
            break

def newsession():
    while True:
        try:    
            txtfilenameinput = input("1. Enter 'Txt' Input File Name: ")
            inputfilename = txtfilenameinput.replace(".txt" , "")
            inputfile = codecs.open(inputfilename + ".txt" , "r" , encoding = "utf-8" , errors = "ignore")
            print("File Found" + "\n")
            break
        except FileNotFoundError:
            print("File Not Found: Make Sure The File Is Spelled Correctly And That Both The Program and File Is On The Desktop Screen" + "\n")

if __name__ == '__main__':
    main_menu()

closeprogram = input("Press Enter Key To Close Program")

我的目标是,例如,当在main_menu()中插入输入“1”时,脚本将开始运行newsession()函数。然而由于某种原因,该程序除了跳转到脚本的末尾(“关闭程序的按键”命令)之外什么都不做,而没有使用newsession()函数。对于addsession()函数的输入“2”也是如此。我究竟做错了什么?我已尝试过所有内容,但没有任何内容允许我输入1或2来继续我的脚本中的进度。谢谢你的帮助!

1 个答案:

答案 0 :(得分:3)

尝试以下代码。它允许退出程序并一次又一次地返回以获得更多用户输入:

def main_menu():
    print("Welcome! Please Choose An Option to Proceed")
    print("1. New: Input Letters Into A New Excel Document")
    print("2. Add: Add New Letters To An Existing Excel Document")
    print(" QUIT with 'q'")

    while True:
        choice = input("Enter Option Number: ")    
        if choice.lower() in ['1','2','q']:
            return choice.lower()
        else:
            print("Invalid Number Choice")
            continue

def menu_choice(main_menu):
    while True:
        choice = main_menu()
        if choice == "1":
            newsession()
        elif choice == "2":
            addsession()
        else:
            break

您的代码存在的问题是您被“困在”while True:循环中而没有逃脱。因此,在一个单独的用户选择newsession()addsession()一次又一次地启动后,脚本没有进一步的进展,除了杀死程序之外无法改变它的任何内容。请记住:每个while True循环应该至少有一行包含brakereturn,否则这是一个永无止境的故事......

未到达newsession()的问题是:

if __name__ == '__main__':
    main_menu()

应该是:

  

if __name__ == '__main__': menu_choice()