我希望看看是否可以压缩以下代码。我知道我需要使用数组和循环语句,但我所尝试的并没有奏效。我经常会收到一个错误,说我不能使用一个字符串或间隔应该是的列表,这可能意味着循环不是实际发生的?
writef1startsw1pt1 = open("C:/f1startsw1.txt", "w")
writef1startsw2pt1 = open("C:/f1startsw2.txt", "w")
writef1startsw3pt1 = open("C:/f1startsw3.txt", "w")
writef1startsw4pt1 = open("C:/f1startsw4.txt", "w")
writef1startsw5pt1 = open("C:/f1startsw5.txt", "w")
writef1startsw6pt1 = open("C:/f1startsw6.txt", "w")
writef1startsw7pt1 = open("C:/f1startsw7.txt", "w")
唯一需要改变的是变量中的数字和文件名中的数字,范围从1到7。
我确定解决方案并不复杂,但我花了一段时间试图解决这个问题,而且我仍然难倒。谢谢!
答案 0 :(得分:1)
在Python中不可能进行类似的变量名称替换,但是,您可以使用列表来实现相同的目标。
writef1startswpt1 = []
for i in range (1,8):
writef1startswpt1.append(open("C:/f1startsw" + str(i)+ ".txt", "w"))
#Now you have a list of those 7 open files, and you can access them with the indices 0 - 6
答案 1 :(得分:0)
我会使用字典而不是列表来跟踪文件,因为列表索引从0开始,而文件从1开始(或者您可以使用简单地在索引0处保留None
条目。 / p>
files = {}
for i in range(1, 7+1):
files["writef1startsw{}pt1".format(i)] = open("C:/f1startsw{}.txt".format(i), "w")
files["writef1startsw1pt1"] #first file
如果您更喜欢使用列表,则可以执行以下操作:
files = [None]
for i in range(1, 7+1):
files.append(open("C:/f1startsw{}.txt".format(i), "w"))
files[1] #first file