Печать внутри петли - PullRequest
       13

Печать внутри петли

0 голосов
/ 23 марта 2020

(извините за любые ошибки, английский sh - мой второй язык, и я все еще учусь)

Я пытаюсь автоматизировать некоторые вещи в моей практике разминки и весов на гитаре и застрял в этом точка. Сначала я написал этот код для случайного выбора трех комбинаций пальцев, и что выбранные элементы в наборе будут выбраны снова только после того, как будут выбраны все остальные элементы, но ничего не получалось в fingerPatternL oop .txt и ничего в терминале.

import random

fingerPatterns = set(['1, 2, 3, 4', '1, 2, 4, 3', '1, 3, 4, 2', '1, 3, 2, 4', 
'1, 4, 3, 2', '1, 4, 2, 3', '2, 1, 3, 4', '2, 1, 4, 3', '2, 3, 1, 4', 
'2, 3, 4, 1', '2, 4, 3, 1', '2, 4, 1, 3', '3, 1, 2, 4', '3, 1, 4, 2', 
'3, 2, 4, 1', '3, 2, 1, 4', '3, 4, 2, 1', '3, 4, 1, 2', '4, 1, 2, 3', 
'4, 1, 3, 2', '4, 2, 1, 3', '4, 2, 3, 1', '4, 3, 1, 2', '4, 3, 2, 1', 
    ])

fingerPatternLoop = open("fingerPatternLoop.txt", "a+")
rand_warmup = random.sample(fingerPatterns, 3)

for rand_warmup in fingerPatternLoop:
    if rand_warmup not in fingerPatternLoop:
        print(rand_warmup)
        print(f"{rand_warmup}", file=fingerPatternLoop)

Удаление для l oop заставило код работать.

print(rand_warmup)
print(f"{rand_warmup}", file=fingerPatternLoop)

Но я все еще не могу понять, как заставить эти отпечатки работать внутри для l oop, которые проверяют если какой-либо из элементов random.sample уже имел место, очистите fingerPatternL oop .txt в случае, если все 24 элемента уже выбраны.

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Режим файла a+ никогда не используется. Вы открываете файл для чтения и записи, устанавливая указатель файла в конце. Таким образом, чтение никогда не поступает в течение l oop.

Вы должны прочитать и записать файл в два этапа.

rand_warmup = random.sample(fingerPatterns, 3)
with open("fingerPatternLoop.txt") as lines:
    found = rand_warmup in map(str.strip, lines)

if not found:
    with open("fingerPatternLoop.txt", "a") as output:
        print(rand_warmup, file=output)
0 голосов
/ 23 марта 2020

Переменная fingerpatternL oop является файловым объектом, вы должны прочитать его и сохранить его содержимое в переменной, например:

with open('fingerPatterLoop.txt', 'r') as f:
    data = f.readlines()

if str(rand_warmup) not in data:
    # write to file
...