Python嵌套循环写入文件异常:内容未按嵌套格式排列的解决方法
解决嵌套循环写入文件格式问题
嘿,我来帮你捋捋这个问题~你的代码里,控制台打印的内容是每行12个数字带空格、换行显示,但写入文件时完全没处理空格和换行,还写错了要写入的变量(你print的是j,却写入了i),所以文件里才会挤成一串单行数字。
问题分析
- 控制台打印时,你用
print(j, end=" ")来给每个数字加空格,用print()来实现换行,但写入文件时没做这些格式处理,只是不断写入str(i),自然会变成单行。 - 另外你打印的是循环变量
j,但写入的是外层循环的i,这明显是个笔误,会导致文件内容和控制台输出完全不一致。
修改后的代码
我调整了代码,让写入文件的格式和控制台输出完全一致,同时改用更安全的with语句来处理文件(不用手动调用close()):
def valjastaarv(): rida = 12 koht = 12 iste_rida = 3 iste_koht = 2 # 使用with语句自动管理文件,避免忘记关闭或异常导致文件未关闭 with open('tulemus.txt', 'w') as f: for i in range(1, int(koht)+1): for j in range(1, int(rida)+1): print(j, end=" ") # 写入j的值并加上空格,和控制台打印格式对齐 f.write(f"{j} ") # 控制台换行的同时,给文件写入换行符 print() f.write("\n") valjastaarv()
关键修改点
- 修正写入变量:把
f.write(str(i))改成f.write(f"{j} "),确保写入内容和控制台打印的一致。 - 添加格式控制:每次写入数字后加空格,内层循环结束后写入
\n换行符,还原嵌套循环的排版。 - 使用with语句:自动处理文件的打开和关闭,比手动调用
close()更可靠,能避免因程序异常导致的文件未关闭问题。
这样修改后,tulemus.txt里的内容就会和控制台输出一模一样,每行12个带空格的数字,按换行排列啦~
内容的提问来源于stack exchange,提问作者Taavi Raudkivi




