这是我的猜谜游戏代码的一部分。我想计算一个球员的猜想,然后将他们的名字和猜想数附加到一个列表中,该列表随后写入或附加到文件中。截至目前,它仅将游戏的最后一个玩家(而不是所有玩家)添加到列表和文件中。我该怎么办?
from typing import List, Tuple
def choose:
'"code""""""
guesses = 0
while choose():
guesses += 1
pass
name = input('What is your name?:')
highscore: List[Tuple[str, int]] = []
highscore.append((name, guesses))
sorting_by_second = sorted(highscore, key=lambda X: X[1])
with open('highscore.txt', 'w') as f:
for name, guesses in sorting_by_second:
f.write(f'{name} guess {guesses}.\n')
new_player = input('New player?(yes/no:').lower()
if new_player == 'yes':
main()
else:
break
main()
答案 0 :(得分:-1)
'w'
模式将覆盖highscore.txt。可以将其视为删除文件,然后重新创建。
您要附加open('highscore.txt', 'a')
,如https://docs.python.org/3/library/functions.html#open
编辑:
或者,您是否想将highscore
初始化为循环 之外的空列表? (您的问题尚不清楚。用有效的python代码替换当前代码,并显示所需的文件输出示例会很有帮助。)
就目前而言,您循环多次,每次使highscore
的长度为零,然后附加长度为1,然后对单个条目进行排序(无操作),然后编写一个-线文件。目前尚不清楚您是否尝试编写例如通过交互和循环三次,或通过分别从bash调用程序三个不同的时间来创建一个三行文件(在这种情况下,附加'a'
是适当的)。帮助我们,并阐明代码和您的意图。
假设爱丽丝和鲍勃在玩。如果您打算每次爱丽丝(Alice)再次演奏时都覆盖其得分,则可能更愿意使用name_to_score
字典而不是列表。
您没有向我们显示def choose
的内容,但是我认为它提示是/否并返回True / False。您没有向我们展示def main
的内容,但是我假设您不想在循环体中调用main()
,因为while choose():
循环可能就足够了。试图读懂自己的想法并不总是很奏效。更清楚地说明您的问题将有助于我们提供更多相关的答案。