我的任務是生成不同的檔案,每個檔案都有特定的大小。此大小包括寫入檔案中的亂數。例如,如果大小為 100,則意味著程式需要寫入 100 個亂數并生成一個檔案并將它們添加到該檔案中。我的問題是,通過運行此代碼,我將獲得例如 100 個數字,但它們都是相同的,并且沒有一個是不同的。你能幫我解決一下嗎?
import random
import time
def fillFile(fileSize, fileName):
for i in range(fileSize):
values = random.randint(0, fileSize 1000)
file = open(fileName ".txt", "w")
for i in range(fileSize):
file.write(f"{i} {values}\n")
fileSizes = [1000, 5000, 10000, 25000, 50000, 100000, 200000]
def readFile(fileName):
files= open(str(fileName) ".txt", "r")
values = []
for line in files:
values.append(line.split())
return values
uj5u.com熱心網友回復:
基本上你應該改變你宣告變數“值”的位置
def fillFile(fileSize, fileName):
for i in range(fileSize):
file = open(fileName ".txt", "w")
for i in range(fileSize):
values = random.randint(0, fileSize 1000)
file.write(f"{i} {values}\n")
這里的想法是,在您的原始代碼中,您生成一個亂數“值”fileSize 次,然后進入一個回圈,在該回圈中將最后生成的“值”寫入檔案。至于您的目的,如果您希望檔案中的所有數字都是隨機生成的,那么您需要在回圈內宣告它們,或者預先創建一個數字陣列并找到一種方法將其寫入您想要的檔案格式。
筆記 :
提醒一下,函式 random.randint(a, b) 回傳一個隨機整數 N,使得 a <= N <= b。因此,在您的原始代碼中,值 = random.randint(0, fileSize 1000) 同時在 a=0 和 b=fileSize 1000 之間生成一個隨機整數。因此,您可能想取出我認為的“ 1000”,但這又取決于您的目標,我不清楚。
uj5u.com熱心網友回復:
您可以使用以下代碼替換您的fillFile函式:
for fileSize in fileSizes:
with open(f'{fileSize}.txt', 'w') as fp:
pop = range(0, fileSize 1000)
print(*random.choices(pop, k=fileSize), sep='\n', file=fp)
關于您的錯誤:對于每次迭代,您都會覆寫您的檔案。你應該使用:
def fillFile(fileSize, fileName):
with open(fileName ".txt", "w") as file:
for i in range(fileSize):
# your code
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/450246.html
下一篇:在C#中處理檔案IO的空輸出
