我昨天发布了this,现在又遇到了另一个问题。
到目前为止的代码:
with open("questions.txt", "r") as questions:
keys = questions.read().split('|')
answers = keys[3]
keys[3] = keys[3].split('/', 1)[0]
answers = answers.split('/')[1:]
answer = [x for x in answers if '!' in x][0][1:]
#print(keys)
#print(answers)
#print(answer)
for x in range(0,4):
print(keys[x])
print("")
for y in range(0,4):
print(answers[y])
userAnswer = input("Enter your answer!: ").lower()
if userAnswer == answer:
print("Correct!")
input("")
这很好用,但现在当我显示answers
列表时,列表中的第一个条目前面有一个!
,这只是为了让程序找出哪一个是正确答案。现在,我希望在让程序为字符串answer
添加正确答案后,删除字符!
的列表。
answers = answers.split('/')[1:]
answer = [x for x in answers if '!' in x][0][1:]
#Code would likely fit here
答案 0 :(得分:1)
由于您已经找到了正确的答案,并且不再需要前面有!
的版本,因此您可以执行以下操作:
answers = answers.split('/')[1:]
answer = [x for x in answers if '!' in x][0][1:]
#Code would likely fit here
answers[answers.index('!' + answer)] = answer
这将在列表中找到正确答案的索引,并在其前面加上感叹号,并将其替换为不包含感叹号的版本。现在,当您将来使用answers
列表时,它将被正确格式化。因为我们知道只有一个答案会在它前面有一个感叹号,所以我们可以改变这一个事件而不是遍历整个列表。
或者,如果要维护列表的版本,感叹号仍在列表中,则可以在打印出答案选项时简单地删除!
。为此,您可以更改
for y in range(0,4):
print(answers[y])
到
for ans in answers:
ans[1:] if a.startswith('!') else ans
在我们的print语句中,我们只是检查要打印的字符串的第一个字符是!
,如果是,则删除第一个字符。否则我们会照常打印。
有关此更改的注意事项 - 无需像您一样在python中迭代范围。您可以简单地遍历每个元素,而不是循环遍历一系列数字并查看该列表中每个索引处的元素。这允许我们来自:
for y in range(0,4):
print answers[y]
简单地说:
for y in answers:
print y
答案 1 :(得分:0)
您有2个选项。你可以在印刷品中消除它。
for y in range(0,4):
if answers[y].startswith('!'):
print(answers[y][1:])
else:
print(answers[y])
更加诡异地重写为
for a in answers:
if a.startswith('!'):
print(a[1:])
else:
print(a)
或实际将其从列表中删除。
answers = [a[1:] if a.startswith('!') else a for a in answers]
另外要注意,您的上一个选项仍然包含文件中的换行符。使用。
消除这一点keys = questions.read().strip().split('|')