我希望它成功保存
outfile = open(file_name, "w")
for i in card_list:
outfile.append(str(card_list[i]) + "\n")
try:
card_list=[]
for i in range (5):
card = int(input("Enter a card number: "))
while card <1 or card > 13:
print("Invalid Card")
card = int(input("Enter a card number: "))
card_list.append(card)
print(card_list)
file_name = input("What name would you like to save them as? ")
outfile = open(file_name, "w")
for i in card_list:
outfile.append(str(card_list[i]) + "\n")
print()
print("Your cards were successfully saved.")
print()
except ValueError:
print()
print("Card must Be an integer not a string.")
print()
它应该可以成功保存
答案 0 :(得分:0)
使用
for i in range(0, len(card_list)):
outfile.write(str(card_list[i]) + '\n')
或
for card in card_list:
outfile.write(str(card) + '\n')
也请不要忘记outfile.close()
,然后再将文件缓冲在内存中(如果更改很小)。如果您尝试附加到该文件(如果存在),请使用"a"
代替"w"
答案 1 :(得分:0)
有几种方法可以解决您的问题。
您的原始循环:
for i in card_list:
outfile.append(str(card_list[i]) + "\n")
应该成为
for card in card_list:
outfile.append(str(card) + "\n")
(或其他一些变量名)。由于您没有使用通常用“ i”表示的索引,因此没有理由明确地删除索引。
但是有一些方法可以做到:
for i, card in enumerate(card_list):
将使str(card)
和str(card_list[i])
完全相等。
枚举允许您从列表(例如“卡”)中获取每个项目以及列表中该项目的索引(例如“ i”)
如果您想要列表中项目的索引,也可以使用range
:
for i in range(len(card_list) - 1):
范围会创建一个数字列表,因此该调用会要求一个列表,其中包含从0到card_list中项目数的数字。如果card_list包含2个项目,例如['card1','card2'],即索引0和索引1。因此,如果您在创建范围列表时未减去1: range(len(card_list))
您将获得[0, 1, 2]
的列表,并且当循环达到“ 2”时,索引将超出card_list[i]
的范围。
我还担心没有用于写入文件的“附加”方法,但是我对文件的方法不了解。我相信您在写入文件时需要使用.write(
而不是.append(
。使文件追加还是覆盖文件的原因与您首先打开文件的方式相同。