Python中将生成的数字写入文本文件

3

我尝试浏览其他帖子,并咨询了朋友,最终才来这里求助。我的作业要求我使用Python编写一个程序,根据用户输入的数字生成随机数。例如,如果他们输入要生成5个数字...程序将执行该操作。现在我的问题是我创建了以下内容:

import random

def main():
    howMany = 0
    numbers = 0


    howMany = int(input('How many numbers would you like to generate?: '))

    infile = open ('rand_write.txt', 'w')

    for n in range(1,howMany):
        numbers = random.randint(1,115)
    infile.write(str(numbers))
    infile.close()
main()

一切都运行良好,直到将5个数字实际写入文本文件的时候。我无论如何也想不出自己做错了什么。程序可以向文本文件写入内容,但只写入一个随机数,而不是5个数字。非常感谢您在解决此问题时提供任何指针和指导。非常感谢!

2个回答

1
你的缩进有误。你需要在infile.write(str(numbers))前面加上制表符,以确保它在每个循环中被执行。否则你最终只会写入最后一个数字。
你可能还想在数字之间写一些分隔符。
最后,你可能希望只调用一次生成随机数的函数,如下所示:
numpy.random.random_integers(1,115, howMany)

鉴于numbers被设置为整数,很难猜测原帖作者的意图。此外,关于刷新的观点是错误的 - 默认情况下,写入磁盘时会使用系统缓冲区。 - Maria Zverina

-1
问题在于你正在你的 for 循环中覆盖了 numbers
for n in range(1,howMany):
    numbers = random.randint(1,115)

相反,你想创建一个名为numbers的列表,就像这样:

numbers = []
for n in range(1,howMany):
    numbers.append(random.randint(1,115))

然后使用'\n'.join(map(str, numbers))将其转换为字符串,然后像以前一样写入:

import random

def main():
    howMany = 0
    numbers = []


    howMany = int(input('How many numbers would you like to generate?: '))

    infile = open ('rand_write.txt', 'w')

    for n in range(1,howMany):
        numbers.append(random.randint(1,115))
    infile.write('\n'.join(map(str, numbers)))
    infile.close()
main()

谢谢,最终我在infile.write行加上了newline做了修改。你帮助我意识到数字正在被覆盖写入。然后我还注意到我的infile.write行在我的for循环之外,这让我在文本文件中得到了我想要的数字。再次感谢您的帮助!!! - Oobie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接