Python文件写入问题:调用register()后无法向txt文件写入内容
问题解决:代码无法写入txt文件的原因及修复
你的代码存在几个关键问题,导致无法正确写入内容到文件:
1. 函数无返回值
register()函数收集了用户输入,但没有返回任何内容,直接调用file.write(register())相当于写入None,根本没把用户输入的信息传进去。
2. 条件判断逻辑错误
if Welcome == "no" or "No": 这个写法有问题,or后面的"No"是布尔真值,不管Welcome是什么,这个条件永远成立。正确写法应该是:
if Welcome in ("no", "No"):
或者统一转小写判断,避免大小写差异:
if Welcome.lower() == "no":
3. 重复调用register()
前面的else: register()已经调用过一次注册函数,后面又再次调用,导致用户要重复输入两次信息,而且第二次调用也没保存输入内容。
修复后的完整代码
Welcome = input("Hi my name is Steve. Do you have an account at Steve? ANSWER WITH JUST A YES OR NO ") def register(): name = input("First name: ") last_name = input("Last name: ") email = input("Email: ") username = input("Username: ") password = input("Password: ") # 将用户信息整理成可写入的字符串 user_info = f"First name: {name}\nLast name: {last_name}\nEmail: {email}\nUsername: {username}\nPassword: {password}" return user_info def login(): username = input("Username: ") password = input("Password: ") # 可在此添加登录验证逻辑,比如读取文件对比信息 if Welcome.lower() == "yes": login() else: # 调用register获取用户信息并写入文件 user_data = register() with open("userinfo.txt", "w") as file: file.write(user_data)
修复说明
- 让
register()返回整理好的用户信息字符串,写入文件时就能拿到实际内容 - 修正条件判断逻辑,避免大小写导致的判断错误
- 合并文件写入与
register()调用逻辑,消除重复执行问题 - 修正变量名拼写错误(
ussername改为username,Email改为小写email,符合Python命名规范)
内容的提问来源于stack exchange,提问作者DJDimsa
相关产品推荐
相关产品推荐

