You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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()

关键修改点

  1. 修正写入变量:把f.write(str(i))改成f.write(f"{j} "),确保写入内容和控制台打印的一致。
  2. 添加格式控制:每次写入数字后加空格,内层循环结束后写入\n换行符,还原嵌套循环的排版。
  3. 使用with语句:自动处理文件的打开和关闭,比手动调用close()更可靠,能避免因程序异常导致的文件未关闭问题。

这样修改后,tulemus.txt里的内容就会和控制台输出一模一样,每行12个带空格的数字,按换行排列啦~

内容的提问来源于stack exchange,提问作者Taavi Raudkivi

火山引擎 最新活动