Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用while循环将用户输出保存到文件_Python_Loops_File - Fatal编程技术网

Python 使用while循环将用户输出保存到文件

Python 使用while循环将用户输出保存到文件,python,loops,file,Python,Loops,File,我正在做一些练习,但我想不出来 编写一个while循环,提示用户输入其名称。当他们输入姓名时,在屏幕上打印问候语,并在名为guest_book.txt的文件中添加一行记录他们的访问。确保每个条目都显示在文件中的新行上 filename = 'guest_book.txt' prompt = "Input your name to be saved in guest book: " active = True with open(filename, 'w') as f:

我正在做一些练习,但我想不出来

编写一个while循环,提示用户输入其名称。当他们输入姓名时,在屏幕上打印问候语,并在名为guest_book.txt的文件中添加一行记录他们的访问。确保每个条目都显示在文件中的新行上

filename = 'guest_book.txt'
prompt = "Input your name to be saved in guest book: "
active = True

with open(filename, 'w') as f:
    while active:
        message = input(prompt)

        if message == 'quit':
            active = False
        else:
            f.write(message + '\n')
            print(message)
filename = 'guest_book.txt'

print("Enter 'quit' when you are finished.")
while True:
    name = input("\nWhat's your name? ")
    if name == 'quit':
        break
    else:
        with open(filename, 'a') as f:
            f.write(name + "\n")
        print(f"Hi {name}, you've been added to the guest book.")
老实说,我花了很多时间在这上面,似乎我不理解处理文件的逻辑。我认为
f.write
应该直接在
下打开
,以便用户
输入
保存在文件中,但这是我所知道的。你能帮帮我吗

我的尝试:

filename = 'guest_book.txt'

with open(filename, 'w') as f:
    lines = input('Input your name to save in the file: ')
    while True:
        for line in lines:
            f.write(input('Input your name to save in the file'))
我对第二个还有一些希望,但仍然没有成功

filename = 'guest_book.txt'
prompt = "Input your name to be saved in guest book: "
active = True

with open(filename, 'w') as f:
    while active:
        message = f.write(input(prompt))

        if message == 'quit':
            break
        else:
            print(message)

在编写代码时,稍加调整即可使其正常工作。主要问题是,您不能使用
f.write()
的输出作为消息的值,因为它不包含消息,它包含写入文件的字符数,因此它永远不会包含
quit
。另外,在选中
退出
后,您需要执行
写入
,否则将
退出
写入文件

filename = 'guest_book.txt'
prompt = "Input your name to be saved in guest book: "
active = True

with open(filename, 'w') as f:
    while active:
        message = input(prompt)

        if message == 'quit':
            active = False
        else:
            f.write(message + '\n')
            print(message)
filename = 'guest_book.txt'

print("Enter 'quit' when you are finished.")
while True:
    name = input("\nWhat's your name? ")
    if name == 'quit':
        break
    else:
        with open(filename, 'a') as f:
            f.write(name + "\n")
        print(f"Hi {name}, you've been added to the guest book.")
注意:我已将
中断
更改为
active=False
,因为您在活动时将其写成
,但如果为True,您只需
即可:
中断

,您可以使用
打开(文件名,'a')
当a代表append时,通过这种方式,您可以在每次循环迭代时将新行追加到文件中

见:

要了解有关文件处理的信息,请参阅:

祝你好运

filename = 'guest_book.txt'
prompt = "Input your name to be saved in guest book: "
active = True

with open(filename, 'w') as f:
    while active:
        message = input(prompt)

        if message == 'quit':
            break
        else:
            print(message)
        
        f.write(message + '\n')
这可能有用。分配
message=f.write(…)
将使其值成为f.write()的返回值。

尝试此操作

filename = 'guest_book.txt'
name = ''

with open(filename, 'w') as f:
    while name != 'quit':
        name = input('Input your name to save in the file: ')
        if(name == 'quit'):
            break
        f.write(name + '\n')

对于任何想知道如何解决整个问题的人。我们使用append而不是write来留住所有曾经使用该程序的客人。写入将覆盖该文件

filename = 'guest_book.txt'
prompt = "Input your name to be saved in guest book: "
active = True

with open(filename, 'w') as f:
    while active:
        message = input(prompt)

        if message == 'quit':
            active = False
        else:
            f.write(message + '\n')
            print(message)
filename = 'guest_book.txt'

print("Enter 'quit' when you are finished.")
while True:
    name = input("\nWhat's your name? ")
    if name == 'quit':
        break
    else:
        with open(filename, 'a') as f:
            f.write(name + "\n")
        print(f"Hi {name}, you've been added to the guest book.")

正如@yagil所说,如果文件已经存在,您应该使用
open(filename,'a')
将其附加到文件中。非常感谢您的帖子!我明白你为什么要做这些调整了。它们都有道理。但是,我已经将它复制到pycharm,它仍然没有将任何内容保存到文件中。知道可以做什么吗?我已经在PyCharm中运行了它,它工作得很好,我在文件中得到了输出。你退出循环来关闭文件了吗?我需要退出来保存它。我不知道那个sry。现在它工作了,我假设它会在我输入每个名字时保存它。