编写提示用户输入姓名并写入文本文件的程序报错,求排查修复
问题排查与修正方案
原代码存在的问题
- 语法错误:Python是大小写敏感语言,
While应改为小写的while,否则会触发NameError。 - 无限循环无终止条件:当前
while True没有退出逻辑,用户输入姓名后会一直重复输入,永远无法执行后续的文件写入代码。 - 文件写入逻辑缺陷:
- 使用
'w'(写入)模式循环打开文件,每次都会清空文件原有内容,最终文件里只会保留最后一个输入的姓名。 - 写入时未添加换行符,多个姓名会被拼接成一行,可读性差。
- 使用
修正后的代码示例
这里提供两种常见实现方式:
方式1:输入特定指令退出,一次性写入所有姓名
users = [] while True: name = input('What is your name? (输入"quit"结束输入)\n') if name.lower() == 'quit': break users.append(name) # 一次性写入所有姓名,每个姓名占一行 with open('usernames.txt', 'w') as entries: for user in users: entries.write(user + '\n')
方式2:输入一个姓名就追加写入文件
while True: name = input('What is your name? (输入"quit"结束输入)\n') if name.lower() == 'quit': break # 使用'a'(追加)模式,每次写入不会清空原有内容 with open('usernames.txt', 'a') as entries: entries.write(name + '\n')
说明
- 两种方式都添加了
quit退出逻辑,用户输入后可结束程序;也可根据需求调整为其他终止方式,比如按Ctrl+C,但明确的退出指令更友好。 - 写入时添加
\n换行符,保证每个姓名单独占一行。 - 方式1适合先收集所有姓名再统一写入的场景;方式2适合实时记录输入的场景,能避免程序意外终止导致数据丢失。
内容的提问来源于stack exchange,提问作者Guddiguy
相关产品推荐
相关产品推荐

