Skip to main content
 首页 » 编程设计

python之让用户写一个句子并将其垂直发送到文件

2025年05月04日16lidabo

我想制作一个打印用户写的句子的程序,并将其垂直打印到文件中。我当前的代码是:

# Create a program that takes sentence from user, and splits  
# the words into a list. 
# Then write the list into a a file vertically. 
 
# Take sentence from user 
sentence = raw_input('Write a sentence :') 
 
# Split the words of sentence 
splited = str(sentence.split()) 
print splited 
 
# Write to file 
f=open('C:\Users\QamarAli\Desktop\HelloFile.txt', 'w') 
for i in range(len(splited)): 
    f.writelines(splited) 
    f.writelines("\n") 
f.close() 

如果我输入句子Hi i am aFAFAF,那么文本文件的内容是:

[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 
[u'Hi', u'i', u'am', u'aFAFAF'] 

我希望它成为

Hi 
i 
am  
aFAFAF 

请您参考如下方法:

就这么简单

f.write('\n'.join(sentence.split())) 

甚至不需要创建 splited 变量(如果需要,您甚至可以删除 sentence 变量:f.write('\n'.加入(raw_input().split()))).


如果你想坚持 for 循环,你可能打算做这样的事情:

splited = sentence.split()  # notice no `str` 
 
for i in range(len(splited)): 
    f.write(splited[i]) 
    f.write('\n') 

或者更简单地说:

for s in sentence.split(): 
    f.write(s + '\n') 

请注意,此方法将始终留下尾随换行符,而 f.write('\n'.join(sentence.split())) 不会。如果需要,您可以使用

轻松添加这个额外的换行符
f.write('\n'.join(sentence.split()) + '\n')