python3中输出和循环的“w”问题

2024-04-25 05:54:19 发布

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

我对我正在写的程序有意见。你知道吗

代码如下:

def main():

    print ("This program let you create your own HTML-page,\nwith the necessary tags allready included")

    t = ("<!DOCTYPE html>", "<html>", " <head>", " </head>", "<body>", "</html>") #Spaces for the indentation in the HTML-code.

    menu = input("Press 1 to enter the file name for the html-page\nPress 2 to enter title for the HTML-page\nPress 3 to start entering code in body ") 

    while True:
        if menu == "1":
            name = input("Enter the name for your HTML-page: ") 
            #with open(name + ".html", 'w') as doc: 
            #Here is the first problem, indenterror if uncommented, otherwise elif gets syntax error. 
            #And this is crucial to get the code into the HTML-document.
            #The error without (with open(name + ".html", 'w') as doc:) will be "global name "doc" is not defined".
            menu = input("Press 2 to enter title for the HTML-page\nPress 3 to start entering code in body ")
        elif menu == "2":
            print (t[0], file=doc) #<!DOCTYPE html>
            print (t[1], file=doc) #<html>
            print (t[2], file=doc) #<head>
            title = input("Enter your title here: ")
            doc.write(title)
            print (t[3], file=doc) #</head>
            menu = input("Press 3 to start entering code in body ")
        elif menu == "3":
            print(t[4], file=doc) #<body>
            code = input("Type </body> to finish your html-page and to close the program.\nEnter your code for body below:\n")
            doc.write('{0}\n'.format(code)) #For newline to get the HTML-code cleaner.
            while code != "</body>":
                code = input("")   
                doc.write('{0}\n'.format(code)) 
            if code == "</body>":
                print ("Congratulations! You have successfully created your own HTML-page by using this python program.")
                print (t[5], file=doc) #</html> 
                #somewhere in the loop above is the second error, I want the </body> to end the program,
                #but it loops line 25 (code = input("Type </body> to finish your html-page and to close the program.\nEnter your code for body below:\n"))


main ()

现在谈谈问题。如你所见,我正试图编写一个菜单,让用户从3个不同的任务中进行选择。他们所做的一切都应该输出到一个.html文档中。你知道吗

我已经在代码中注释了我的问题,如您所见。你知道吗

我不知道如何获得with open(name + ".html", 'w') as doc:而不使elif的缩进变得混乱,或者我只是得到了elif的语法错误。你知道吗

第二个问题是最后的循环。我希望命令退出程序,因为它还为.html文档输出了正确的结束代码,但它循环code = input("Type </body> to finish your html-page and to close the program.\nEnter your code for body below:\n"),我也无法理解这一点。你知道吗


Tags: thetonameforinputyourdochtml
2条回答

下面是一个简单的文件打开函数。当然,它需要根据您的具体需要进行调整。“with”语句本身将关闭文件。你知道吗

def cat(openfile): #Emulates the cat command used in the Unix shell#
    with open(openfile) as file:
        lines = file.readlines()
        return ''.join(lines)

如果要写入文件,请使用此函数。你知道吗

def write2file(openfile, WRITE): #openfile = filename to open #WRITE = the string you want to write to file
    with open(openfile, 'w') as file:
        file.write(str(WRITE))

向文件追加/添加文本:

def add2file(openfile, add):
    with open(openfile, 'a') as file:
        file.write(str(add))
def main():

    (...)
    while True:
        if menu == "1":
            name = input("Enter the name for your HTML-page: ")
            doc = open(name + ".html", 'w')
            menu = input("Press 2 to enter title for the HTML-page\nPress 3 to start entering code in body ")

    (...)
    doc.close()


main ()

你可以像这样打开一个文件:doc = open(name + ".html", 'w'),但是不要忘了在完成后关闭它,就像这样doc.close()。你知道吗

相关问题 更多 >