尝试编写一个程序,提示用户输入文件的名称,然后将其余行复制到输出文件中,直到用户输入句点作为行的第一个字符。
这是我到目前为止所拥有的。我已经让它工作,因此它要求输入并在用户输入"后停止。"作为一行中的第一个字符。但是,我确定我完全错了,因为我的输出真的很奇怪。我是初学者,所以我不熟悉更复杂的功能。因此,最基本,最简单的方法将有很大的帮助。
output_file=input("Enter Output File")
outfile = open(output_file,"w")
text=input("")
for line in text:
if text[0] == ".":
break
text=input('')
print(line, file=outfile)
outfile.close()
输入
hello world
.
输出:
h
答案 0 :(得分:0)
这是因为您正在执行print(line, file=outfile)
并且行获取text
中每个字符的值。将行更改为:
print(text, file=outfile)
<强> 修改 强>
有更好的方法:
text=input("")
while text[0]!=".":
print(text,file=outfile)
text=input("")
outfile.close()
答案 1 :(得分:0)
for
遍历可迭代(如列表或字符串)。您希望重复代码,直到不再满足某些条件。为此,请使用while循环:
text = ''
while text != '.':
print(text, file=outfile)
text = input('')
这可能会在输出文件的第一行插入一个空行(因为第一次写入值为''
的文本)。一个简单的解决方法是:
text = ''
while text != '.':
if text != '':
print(text, file=outfile)
text = input('')
答案 2 :(得分:0)
问题在于读取
的行for line in text:
变量text
包含一个字符串,上面的行将一次迭代一个字符。
因此,如果您在第一个提示符处输入“hello”,则循环将循环五次,line
包含h
,e
,l
,{ {1}}和l
按此顺序排列。它甚至可能再次用于换行。
相反,你想做类似的事情:
o
答案 3 :(得分:0)
您正在迭代text
,这是一行输入字符串,而不是文件句柄,以获取连续的行。尝试:
for text in sys.stdin:
if text[0] == '.':
break
outfile.write(text)