【发布时间】:2011-11-23 05:53:18
【问题描述】:
我在为我的 python 课程编写这个简短的程序时遇到了麻烦,我希望有人可以提供一些帮助。
我想要完成的事情: 1. 编写一个程序,使用while循环来接受用户的输入(如果用户按下回车,退出程序)。 2. 将输入保存到文件中,然后打印。 3. 启动后,程序会显示文件的当前内容。
例子:
第一次启动程序。
输入文本:这是输入
这是输入。
输入文本:更多文本
这是输入。还有一些文字。
当你第二次启动程序时
这是输入。还有一些文字。
输入文字:
等等。等等
到目前为止我所拥有的:
intext = open('user_input.txt','a')
intext.close()
string_input = input('Enter text: ')
while True:
open_input = open('user_input.txt','r')
if open_input:
for i in open_input:
print(i)
if string_input != "":
uinput = open('user_input.txt','a')
uinput.write(string_input + '.')
uinput.close()
rd = open('user_input.txt', 'r')
if rd:
for line in rd:
print(line)
if string_input == "":
t = open('user_input.txt', 'r')
for line in t:
print(line)
t.close()
break
问题:打开后,任何以前存储的文本都不会显示。如果用户输入文本,它会无限循环打印,并且不会提示再次输入文本。
正面:输入被记录到文本文件中。如果没有输入文本,退出时任何先前输入的文本都会正确显示。
就像我说的,这是我的功课。我已经寻找答案,但我似乎将代码拆开并将其重新组合在一起只是为了得到不同的错误。因此,我们将非常感谢您对此提供一些指导。
我忘记提及的一件事是我使用的是 Python 3。
再次感谢 David 帮助我像程序员一样思考。结果如下:
intext = open('user_input.txt','r').readline()
print(intext)
while True:
string_input = input('Enter text: ')
if string_input == "":
t = open('user_input.txt', 'r').readline()
print(t)
break
if string_input != "":
d = open('user_input.txt', 'a')
d.write(string_input + '. ')
d.close()
n = open('user_input.txt', 'r').readline()
print(n)
我试图让代码尽可能精简,现在它可以工作了。
由此产生的一些附加问题:
我需要在最后关闭文件吗?当我试图关闭
apnd和n时,它给了我错误。在寻找答案时,我遇到了this。使用“with”语句仍然是最佳做法吗?
例子:
with open("x.txt") as f:
data = f.read()
do something with data
【问题讨论】: