为什么我不能在python中重新运行一个函数?

时间:2012-01-15 04:03:18

标签: python-3.x

我刚刚完成了我的作业编写程序,现在我有一个非常烦人的问题

当一个函数完成它询问它是否要重新运行main函数时,我这样做了,当我这样做然后运行一个不同的函数(对不起,如果我吮吸措辞的东西)该函数什么都不做。有什么我可以做的吗?

这是我的代码

agenda=open("agenda.txt","a") #open the notepad file
def choice(): #pick the period
    choice=input("type write, read, or clear\n")

    if choice=="read":
        read()
    elif choice=="write":
        write()
    elif choice=="clear":
        clear()
    else:
        print("Invalid Choice")


def write(): #write the homework
    per=input("What period is it")
    hw=input("What is the homework")
    if per=="1":
        agenda.write("Period 1:")
        agenda.write(hw)
        agenda.write("\n")
    elif per=="2":
        agenda.write("Period 2:")
        agenda.write(hw)
        agenda.write("\n")
    elif per=="3":
        agenda.write("Period 3:")
        agenda.write(hw)
        agenda.write("\n")
    elif per=="4":
        agenda.write("Period 4:")
        agenda.write(hw)
        agenda.write("\n")
    elif per=="5":
        agenda.write("Period 5:")
        agenda.write(hw)
        agenda.write("\n")
    elif per=="6":
        agenda.write("Period 6:")
        agenda.write(hw)
        agenda.write("\n")
    elif per=="7":
        agenda.write("Period 7:")
        agenda.write(hw)
        agenda.write("\n")
    elif per=="8":
        agenda.write("Period 8:")
        agenda.write(hw)
        agenda.write("\n")
    else:
        print("Non existant period")
    again=input("Would you like to read the homework, clear, or read again? (yes or no)")
    if again=="yes":
        choice()
    elif again=="no":
        print("\n")



def clear():#clear the whole thing
   ajenda = open('agenda.txt', 'r+')
   ajenda.truncate()
   again=input("Would you like to read the homework, clear, or read again? (yes or no)")
   if again=="yes":
       choice()
   elif again=="no":
       print("\n")

def read():#read the homework
    read=open("agenda.txt","r")
    readf=read.read()
    print(readf)
    read.close
    again=input("Would you like to read the homework, clear, or read again? (yes or no)")
    if again=="yes":
        choice()
    elif again=="no":
        print("\n")

choice()
agenda.close()

1 个答案:

答案 0 :(得分:2)

我在python2.7中运行了你的代码,因为我现在没有python3。

我的猜测是你运行了你的代码,写了一些功课,然后你要求阅读它,什么都没有显示出来。当您写入文件时,出于性能原因,缓冲区在提供一定数量的数据或关闭文件之前不会进入文件。

如果您测试代码然后退出程序,您将在文件中找到您的数据。您可以考虑在write方法中添加flush()调用。