Python 程序循环非常快且无限期?Can';我不明白为什么

Python 程序循环非常快且无限期?Can';我不明白为什么,python,class,loops,debugging,twitter,Python,Class,Loops,Debugging,Twitter,我正在为我的编程课用python编写一个Tweet Manager程序。对于这个作业,我应该创建一个Tweet类来存储Tweet的作者、Tweet本身以及创建Tweet的时间。然后,我应该创建一个Twitter程序,为用户提供一系列选项供选择 当我试着运行我的Twitter程序时,它会在没有语法错误的情况下打开,但会一次又一次地快速打印菜单而不会停止。我无法找出我的代码中是什么导致了这个问题 以下是我的推特代码: import Tweet import pickle de

我正在为我的编程课用python编写一个Tweet Manager程序。对于这个作业,我应该创建一个Tweet类来存储Tweet的作者、Tweet本身以及创建Tweet的时间。然后,我应该创建一个Twitter程序,为用户提供一系列选项供选择

当我试着运行我的Twitter程序时,它会在没有语法错误的情况下打开,但会一次又一次地快速打印菜单而不会停止。我无法找出我的代码中是什么导致了这个问题

以下是我的推特代码:

    import Tweet
    import pickle
    def main():
        try:
            load_file = open('tweets.dat', 'rb')
            tweets = pickle.load('tweets.dat')
            load_file.close()
        except:
            tweet_list = []
        while (True):
            choice = display_menu()

            #Make a Tweet
            if (choice == 1):
                tweet_author = input("\nWhat is your name? ")
                tweet_text = input("What would you like to tweet? ")
                print()
            if len(tweet_text) > 140:
                print("Tweets can only be 140 characters!\n")
            else:
                print(tweet_author, ", your Tweet has been saved.")

            age = 0
            tweets = tweet.Tweet(tweet_author, tweet_text)

            tweet_list.append(tweets)

            try:
                output_file = open('tweets.dat', 'wb')
                pickle.dump(tweets, output_file)
                output_file.close()
            except:
                print("Your tweets could not be saved!")

            #View Recent Tweets
            elif (choice == 2):
                print("Recent Tweets")
                print("--------------")
                if len(tweet_list) == 0:
                    print("There are no recent tweets. \n")
                for tweets in tweet_list[-5]:
                    print(tweets.get_author(), "-", tweets.get_age())
                    print(tweets.get_text(), "\n")

            #Search Tweets
            elif (choice == 3):
                match = 0
                tweet_list.reverse()

                if tweet_list == []:
                    print("There are no tweets to search. \n")

                search = input("What would you like to search for? ")
                for tweets in tweet_list:
                    if (search in tweets.get_text()):
                        match = 1
                    if match = 1:
                        print("Search Results")
                        print("--------------")
                        print(tweets.get_author(), "-", tweets.get_age())
                        print(tweets.get_text(), "\n")
                    elif match == 0:
                        print("No tweets contained", search, "\n")

            #Quit
            elif (choice == 4):
                print("Thank you for using the Tweet Manager!")
                exit()

    def display_menu():
        print("Tweet Menu")
        print("------------")
        print()
        print("1. Make a Tweet")
        print("2. View Recent Tweets")
        print("3. Search Tweets")
        print("4. Quit")
        print()

    main()

display\u菜单
始终返回
None
-如果您不返回任何内容,这是默认设置。

没有问题,代码完全按照您的指示执行

display\u menu
完全按照名称的含义:显示菜单。
main
函数在循环中调用该函数


在任何情况下,您都不会要求与菜单选项对应的任何输入。

您的
显示\u菜单
函数实际上没有给出值

将该函数的最后一行(
print()
)更改为

或者如果您使用的是Python2.x

return raw_input()

“显示”菜单未检索到选项中的任何输入。。。只显示菜单。
因此,如果不匹配if,则无限期地循环。

choice=display\u menu
应该是
choice=display\u menu()
最小示例?e、 g:3行代码?在实际代码中是这样写的,这里一定打错了。感谢您指出这将返回一个字符串。它将在python 3中使用,我认为他使用的是由于打印的
()
。也为python 2编辑过
return raw_input()