You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写提示用户输入姓名并写入文本文件的程序报错,求排查修复

问题排查与修正方案

原代码存在的问题

  • 语法错误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:12:05