(很抱歉有任何错误,英语是我的第二语言,并且我还在学习中)
我正在尝试使吉他热身和音阶练习中的某些操作自动化,并因此陷入困境。 首先,我编写了这段代码以随机选择三个手指模式,并且只有在选择了所有其他项目之后,才会再次选择集合中的所选项目,但是fingerPatternLoop.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)
删除for循环可使代码正常工作。
print(rand_warmup)
print(f"{rand_warmup}", file=fingerPatternLoop)
但是我仍然不知道如何使这些打印在for循环内工作,以验证random.sample的任何项目是否已经发生,并在所有24个项目都已被清除的情况下清除fingerPatternLoop.txt。选择。
答案 0 :(得分:1)
文件模式conda create -n py38 anaconda=2020.02 python=3.8
永远不会有用。打开文件进行读写,最后设置文件指针。因此,读取永远不会进入for循环。
您必须分两个步骤读取和写入文件。
a+
答案 1 :(得分:0)
fingerpatternLoop变量是一个文件对象,您必须阅读它并将其内容存储在变量中,例如:
with open('fingerPatterLoop.txt', 'r') as f:
data = f.readlines()
if str(rand_warmup) not in data:
# write to file