2017-04-03 81 views
2

这是我到目前为止。它一直工作,直到我添加了功能。我需要在代码中有两个函数,我不知道如何使它正常工作,并尝试了几种不同的方法。代码需要将X个随机数写入文本文件。Python随机数文件编写器

import random 

random_numbers = open('ran_numbers.txt', 'w') 

def main(): 

    getRandom() 
    writeFunction() 

def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to the file? ')) 

    for count in range (qty_numbers): 
     number = random.randint(1,500) 

def writeFunction(): 
    random_numbers.write(str(number)+ '\n') 
    random_numbers.close() 
    print('Your list of random numbers have been written to the file named') 
    print('ran_numbers.txt') 

main() 
+1

'getRandom'不会返回任何东西,所以就程序的其他部分而言,该函数并没有做任何事情。然后,'writeFunction'尝试使用'number',但是程序中没有这样的变量。还有一些其他问题,但首先尝试一下:编写一个简单的程序,它会问你想要多少个数字,然后*打印出许多随机数。随着时间的推移,你可以继续将它们写入文件。 –

回答

0

更改此:

random_numbers = open('ran_numbers.txt', 'w') 

def main(): 

    getRandom() 
    writeFunction() 

def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to the file? ')) 

    for count in range (qty_numbers): 
     number = random.randint(1,500) 

向该:

random_numbers = open('ran_numbers.txt', 'w') 

def main(): 

    getRandom() 


def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to the file? ')) 

    for count in range (qty_numbers): 
     number = random.randint(1,500) 
     writeFunction(number) 

因为,数字是用于getRandom()函数中的局部变量,所以无论是直接写入到该文件函数本身或返回主函数中的数字并将其传递给writeFunction()

def main(): 
    number= getRandom() 
    writeFunction(number) 

你做什么是你的选择,但是在一个区块中定义数字是行不通的。

0

创建随机数

后,您永远不会调用WRITEFUNCTION()只要改变:

for count in range (qty_numbers): 
    number = random.randint(1,500) 

这样:

for count in range (qty_numbers): 
    number = random.randint(1,500) 
    writeFunction(number) 

并更改行:

def writeFunction(): 

发送给:

def writeFunction(number): 

终于改变你的main()中:

def main(): 

    getRandom() 
    random_numbers.close() 

,并从WRITEFUNCTION()

我希望这可以帮助您删除

random_numbers.close() 

+0

你也可以解释'random_numbers.close()'应该去哪里? –

+0

我会把它放在main()函数的末尾,这样文件在函数完成后才会关闭一次。 – Jebby

+1

对,我的意思是,你可以修改你的答案,以包含该信息 –

0

我想你只需要有一个生成的数字列表,并将它们传递给file_writer。这里是我对你的代码所做的修改:

import random 
def main(): 
    random_result = getRandom() 
    writeFunction(random_result) 
def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to the file? ')) 
    res = [] 
    for count in range (qty_numbers): 
     res.append(random.randint(1,500)) 
    return res 
def writeFunction(random_numbers_list): 
    random_numbers = open('ran_numbers.txt', 'w') 
    for number in random_numbers_list: 
     random_numbers.write(str(number)+ '\n') 
    random_numbers.close() 
    print('Your list of random numbers have been written to the file named') 
    print('ran_numbers.txt') 
main() 
+0

这将不会运行,因为'getRandom'在它被定义之前使用。我想你在'main'开头意外地留下了一些多余的代码。你可以编辑来解决这个问题吗? –

+0

我错误地缩进了函数的定义,只是修正了它。希望它能解决你的问题。 – ida

0

如果你必须有两个函数,那么这将是一个更好的解决方案。将随机数字放入列表中,然后将其传递到writeFunction函数。

import random 

random_numbers = open('ran_numbers.txt', 'w') 

def main(): 

    writeFunction(getRandom()) 

def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to  the file? ')) 

    nums = [] 
    for count in range (qty_numbers): 
     nums.append(random.randint(1,500)) 
    return nums 

def writeFunction(a_list): 
    random_nums = '\n'.join([str(x) for x in a_list]) 
    random_numbers.write(random_nums) 
    random_numbers.close() 
    print('Your list of random numbers have been written to the file named') 
    print('ran_numbers.txt') 

main()