在Python中用文本文件编写生成的数字

时间:2014-11-02 02:21:50

标签: python random numbers

所以我尝试浏览其他帖子,甚至在求助之前询问了一位朋友。我有一个家庭作业,要求我用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 个答案:

答案 0 :(得分:1)

你的缩进是错误的。您需要在infile.write(str(numbers))前面放置选项卡以确保它在每个循环中执行。否则你最后只写下最后一个数字。

您可能还想在数字之间写一些分隔符。

最后,您可能只想进行一次调用以生成随机数,如下所示:

numpy.random.random_integers(1,115, howMany)

答案 1 :(得分:-1)

问题是您在numbers循环中覆盖了for

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))转换为字符串,然后像以前一样编写它: 随机导入

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