Python写入随机数到文件时%(y)出现语法错误,求原因及解决方法
解决你的Python文件写入语法错误及逻辑问题
嘿,我来帮你排查这个问题~首先你的代码里有两个主要问题:一个是直接触发语法错误的字符串格式化写法,另一个是生成随机数的逻辑漏洞,咱们一个个说:
1. 语法错误的根源
你写的x.write("Results: %d", %(y))是错误的写法:
- Python的
%格式化语法是把格式字符串和变量用%连接,而不是把%放在括号外面 write()方法只接受一个字符串参数,不能像print()那样用逗号分隔多个参数
正确的写法应该是把格式化后的完整字符串传给write,比如:
x.write("Results: %d\n" % y)
这里加\n是为了让每个结果占一行,不然所有内容都会挤在同一行里。
2. 逻辑漏洞:随机数只保留最后一个
你的第一个循环里,每次生成的随机数都会覆盖之前的y,最后只有第10个随机数会被写入文件。应该把生成随机数和写入文件的操作放在同一个循环里,这样每生成一个数就立刻写入,或者把所有随机数先存到列表里再批量写入。
修正后的完整代码
推荐用with语句来操作文件,它会自动帮你关闭文件,避免忘记close()导致的资源泄漏问题:
import random SIZE = 10 # 使用with语句管理文件上下文,自动关闭文件 with open("data.txt", "w") as file: for _ in range(SIZE): # 每次循环生成一个新的随机数 random_num = random.randrange(0, 100) # 用f-string格式化字符串,更直观易读(Python3.6+支持) file.write(f"Results: {random_num}\n")
如果你习惯用%格式化,也可以写成:
file.write("Results: %d\n" % random_num)
这样运行后,data.txt里就会有10个不同的随机数啦~
内容的提问来源于stack exchange,提问作者Tamamo
相关产品推荐
相关产品推荐

