2014-11-02 106 views
3

所以我试着浏览其他帖子,甚至在求助于这里之前询问了一个朋友。我有一项家庭作业,它要求我用Python创建一个程序,它根据用户输入的数字生成随机数。例如,如果他们输入他们想要生成5个数字......该计划将做到这一点。现在我的问题是,我创建了以下内容:在Python中的文本文件中写入生成的数字

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.我非常感谢任何指示和指导,找出我应该怎么做来解决这个问题。非常感谢你!

回答

-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))转换为字符串,然后把它写成之前一样: 进口随机

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

谢谢,我最终修改了infline.write行,换行符。你帮助我认识到数字正在被写下来。然后我还注意到,我的infile.write行超出了我的for循环,这给了我数字,就像我希望他们在文本文件上一样。再次感谢你的帮助!!! – Oobie 2014-11-02 05:36:44

1

您的缩进是错误的。您需要将标签放在infile.write(str(numbers))的前面,以确保它在每个循环中都能执行。否则,你最终只会写最后一个数字。

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

最后,你可能想使只需一个电话来生成随机数如下:

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

鉴于号设置为一个整数,这是很难猜测楼主的意图。另外,你关于刷新错了 - 默认情况下写入磁盘时将使用系统缓冲区。 – 2014-11-02 02:33:10

相关问题