消除';q';当用户在python中输入q时,从文本文件
我尝试创建一个文本文件,用于询问用户名并将每个用户名存储在该文件的新行中。现在,由于使用while循环获取用户输入的次数不限,我为用户创建了一个退出选项,让用户输入“q”进行退出。。。。随时完成此任务后,当我打开文本文件“guest_book.txt”时,我想去掉结尾行“q” 通常对于列表,我们使用类似[elt for elt in filename if elt not in'q']的模式,这将消除该'q'。如何使用文本文件?任何意见都将不胜感激 这是我的密码:消除';q';当用户在python中输入q时,从文本文件,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我尝试创建一个文本文件,用于询问用户名并将每个用户名存储在该文件的新行中。现在,由于使用while循环获取用户输入的次数不限,我为用户创建了一个退出选项,让用户输入“q”进行退出。。。。随时完成此任务后,当我打开文本文件“guest_book.txt”时,我想去掉结尾行“q” 通常对于列表,我们使用类似[elt for elt in filename if elt not in'q']的模式,这将消除该'q'。如何使用文本文件?任何意见都将不胜感激 这是我的密码: filename='guest
filename='guest_book.txt'
with open(filename,'a') as file_object:
while True:
user_name = input("Enter your name: ")
file_object.write(user_name)
file_object.write('\n')
以下是我的解决方案:
filename='guest_book.txt'
# Edit 1
with open(filename, 'a') as file_object:
while True:
user_name = input("Enter your name: ")
if user_name == 'q':
break
else:
file_object.write(user_name)
file_object.write('\n')
使用此代码,当它将用户名识别为“q”时,它将立即中断,而不将“q”写入文件。最好的方法是插入中断
while True:
user_name = input("Enter your name: ")
if user_name=="q":
break
file_object.write(user_name)
file_object.write('\n')
你可以这样做
user_name=None
while not user_name == "q":
user_name = input("Enter your name: ")
file_object.write(user_name)
file_object.write('\n')
但是break可能是这里的最佳实践您的代码没有显示如何处理q。难道你不能在输入后检查它,并在写入文件之前中断循环吗?答案上的缩进被打断了。你不需要关闭文件缩进,关闭文件只是我的习惯。主要的更改是中断部分。
file\u object.close()
部分是多余的,无论如何都将由open
内容管理器完成。您只需要break
退出循环。顺便说一句,如果用户名要“添加”到留言簿中,则打开模式应该是“a”,而不是“w”,否则,每次都将重新创建该文件