Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将随机整数写入换行符上的文件_Python_Python 3.x - Fatal编程技术网

Python将随机整数写入换行符上的文件

Python将随机整数写入换行符上的文件,python,python-3.x,Python,Python 3.x,我需要制作一个程序,生成10到90之间的10个随机整数,并调用两个单独的函数来执行单独的操作。第一个(playlist)只需在一行上打印它们,不需要空格,这很容易。第二个(savelist)给我带来了问题。我需要将列表中的每个数字nums写入angles.txt,并将每个数字按顺序放在单独的一行上。无论我尝试什么,我都无法在单独的行中获取它们,并且它在一行中显示为一个字符串。我错过了什么 import random def main(): nums = [] # Creates

我需要制作一个程序,生成10到90之间的10个随机整数,并调用两个单独的函数来执行单独的操作。第一个(
playlist
)只需在一行上打印它们,不需要空格,这很容易。第二个(
savelist
)给我带来了问题。我需要将列表中的每个数字
nums
写入
angles.txt
,并将每个数字按顺序放在单独的一行上。无论我尝试什么,我都无法在单独的行中获取它们,并且它在一行中显示为一个字符串。我错过了什么

import random

def main():
    nums = []
    # Creates empty list 'nums'
    for n in range(10):
        number = random.randint(10, 90)
        nums.append(number)
        # Adds 10 random integers to list
    playlist(nums)
    savelist(nums)

def playlist(numb):
    index = 0
    while index < len(numb):
        print(numb[index], end=' ')
        index += 1

def savelist(number):
    myfile = open('angles.txt', 'w')
    # Creates numbers.txt file
    number.sort()
    myfile.write(str(number) + '\n')
    myfile.close()

main()
随机导入
def main():
nums=[]
#创建空列表“nums”
对于范围(10)内的n:
number=random.randint(10,90)
nums.append(数字)
#将10个随机整数添加到列表中
播放列表(nums)
存储列表(nums)
def播放列表(无法播放):
索引=0
而指数
在savelist()中,您需要循环浏览列表:

myfile = open('angles.txt', 'w')
# Creates numbers.txt file

number.sort()

for e in number:
  myfile.write(str(e))

myfile.close()

当您将“nums”发送到savelist()时,您正在发送一个列表。如果你只想把“数字”写进文件,它会把整个列表都写出来。因此,通过循环遍历列表中的每个元素,可以将每一行写入文件

试试这段代码:您正在将一个数组作为一个整体写入文件,因此只能看到一行

def main():
nums = [] # Creates empty list 'nums'

for n in range(10):
    number = random.randint(10, 90)
    nums.append(number)
    # Adds 10 random integers to list

playlist(nums)

savelist(nums)


def playlist(numb):
    index = 0

    while index < len(numb):
        print(numb[index], end=' ')
        index += 1

def savelist(number):
    myfile = open('angles.txt', 'w')
    # Creates numbers.txt file

    number.sort()
    for element in number:
       myfile.write(str(element) + '\n')

    myfile.close()

main()
def main():
nums=[]创建空列表“nums”
对于范围(10)内的n:
number=random.randint(10,90)
nums.append(数字)
#将10个随机整数添加到列表中
播放列表(nums)
存储列表(nums)
def播放列表(无法播放):
索引=0
而指数
要将列表写入文件,您需要迭代列表中的每个元素,并使用附加的换行符单独写入。例如:

def savelist(number):

    myfile = open('angles.txt', 'w')
    # Creates numbers.txt file

    number.sort()

    for n in number:
        myfile.write(str(number) + '\n')

    myfile.close()
    myfile.write('\n'.join([str(n) for n in number])
def savelist(nums):

    # Creates numbers.txt file
    nums.sort()

    with open('angles.txt', 'w') as myfile:
        myfile.write('\n'.join([str(n) for n in nums])
您还可以通过将列表与换行符连接来生成单个字符串,然后将其写入文件。例如:

def savelist(number):

    myfile = open('angles.txt', 'w')
    # Creates numbers.txt file

    number.sort()

    for n in number:
        myfile.write(str(number) + '\n')

    myfile.close()
    myfile.write('\n'.join([str(n) for n in number])
def savelist(nums):

    # Creates numbers.txt file
    nums.sort()

    with open('angles.txt', 'w') as myfile:
        myfile.write('\n'.join([str(n) for n in nums])
<>最后,您可能想考虑在文件打开时使用上下文管理器,以确保文件不管发生什么都被关闭。例如:

def savelist(number):

    myfile = open('angles.txt', 'w')
    # Creates numbers.txt file

    number.sort()

    for n in number:
        myfile.write(str(number) + '\n')

    myfile.close()
    myfile.write('\n'.join([str(n) for n in number])
def savelist(nums):

    # Creates numbers.txt file
    nums.sort()

    with open('angles.txt', 'w') as myfile:
        myfile.write('\n'.join([str(n) for n in nums])

请注意,我还将变量名更改为
nums
,而不是
number
(“number”有点混淆,因为列表中包含>1个数字!)。

@tomlester已经声明需要循环查看
number
中的元素。另一种方法是

def savelist(number):

    number.sort()
    with open('angles.txt', 'w') as myfile:
        myfile.write('\n'.join(map(str, number)))

我会这样做:

from random import randint

def rand_lst(lo, hi, how_many):
    return [randint(lo, hi) for _ in range(how_many)]

def print_lst(nums):
    print(''.join(str(num) for num in nums))

def save_lst(nums, fname):
    with open(fname, "w") as outf:
        outf.write('\n'.join(str(num) for num in sorted(nums)))

def main():
    nums = rand_lst(10, 90, 10)
    print_lst(nums)
    save_lst(nums, "angles.txt")

if __name__ == "__main__":
    main()

我不敢相信我错过了。我之前也试过类似的方法,但似乎我把自己复杂化了。谢谢大家!@如果回答这个问题,请通过点击答案左边的复选标记/滴答来考虑,把它变成绿色。这标志着问题的解决令您满意,并奖励您和回答者。我本来会早点回答的,但上面说我必须等待6分钟才能接受答案。我不知道为什么这在这个网站上是一件事,尽管我承认我没想到这么快就能得到答案。