Как я могу использовать() без нагрузки()ing внутри цикла for?
Привет
Поэтому я пытался выяснить комбинаторику получения случайного значения rgb red, green и blue для предустановленного значения red+green+blue
0<=красный<=255
0<=зеленый<=255
0<=синий<=255
Я не мог так что вместо этого я затопил txt файлы со всеми комбинациями
Я проверил его со статистикой и он кажется точным
Сначала пишем программу в отдельных файлах а потом собираем ее по кусочкам
при расщеплении его в функции построения() загрузить() использовать() закрыть() нагрузки отделять() и использовать() функции с помощью цикла for он выдает Я не знаю, почему. Почему?
как я могу держать их отдельно, чтобы им не приходилось часто закрывать и открывать txt-файлы?
рабочий код ниже
""" Fixed light, random color """ def build(): print("build") files = [] label =[" red.txt", " green.txt", " blue.txt"] bound = 255 for light in range(bound*3+1): for color in range(len(label)): files.append(open(str(light)+label[color], "w")) for red in range(bound+1): print(red) for green in range(bound+1): for blue in range(bound+1): light = red + green + blue temp = [] temp.append(red) temp.append(green) temp.append(blue) for color in range(len(label)): files[light*3+color].write(str(temp[color])+"\n") for txt in files: txt.close() files = "string" file = open("bounds.txt", "w") for n in range(bound*3+1): num_lines = sum(1 for line in open(str(n)+" red.txt")) file.write(str(num_lines)+"\n") file.close() file = "string" return None def load(): print("load") files = [] bound = 255 label =[" red.txt", " green.txt", " blue.txt"] for light in range(bound*3+1): for color in range(len(label)): files.append(open(str(light)+label[color], "r")) bounds = open("bounds.txt", "r") rows_in_bounds = bounds.readlines() bounds.close() bounds = "string" return files, rows_in_bounds def use(light, files, rows_in_bounds): labels = [" red.txt", " green.txt", " blue.txt"] rgb = [] coleur = randrange(int(rows_in_bounds[light])) for m in range(3): rows_in_colors = files[light*3+m].readlines() if m == 0: red = (int(rows_in_colors[coleur])) elif m == 1: green = (int(rows_in_colors[coleur])) elif m == 2: blue = (int(rows_in_colors[coleur])) else: print("???") return red, green, blue def close(files): print("close") for txt in files: txt.close() files = "string" return None from random import randrange light = 100 # or randrange with for loop build() files, rows_in_bounds = load() red, green, blue = use(light, files, rows_in_bounds) close(files)
Что я уже пробовал:
печать значений в цикле и вне его, и из того, что я могу сказать из холостого хода, выводится одна и та же строка, int и тип значения