Python将随机整数写入换行符上的文件
我需要制作一个程序,生成10到90之间的10个随机整数,并调用两个单独的函数来执行单独的操作。第一个(Python将随机整数写入换行符上的文件,python,python-3.x,Python,Python 3.x,我需要制作一个程序,生成10到90之间的10个随机整数,并调用两个单独的函数来执行单独的操作。第一个(playlist)只需在一行上打印它们,不需要空格,这很容易。第二个(savelist)给我带来了问题。我需要将列表中的每个数字nums写入angles.txt,并将每个数字按顺序放在单独的一行上。无论我尝试什么,我都无法在单独的行中获取它们,并且它在一行中显示为一个字符串。我错过了什么 import random def main(): nums = [] # Creates
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分钟才能接受答案。我不知道为什么这在这个网站上是一件事,尽管我承认我没想到这么快就能得到答案。