Python 当main循环时,我的程序只在列表中添加一个用户输入
这是我的猜谜游戏代码的一部分。我想计算一个玩家的猜测,然后将他们的名字和猜测次数附加到一个列表中,该列表稍后会写入或附加到文件中。到目前为止,它只将游戏的最后一个玩家添加到列表和文件中,而不是所有玩家。我做错了什么Python 当main循环时,我的程序只在列表中添加一个用户输入,python,python-3.x,Python,Python 3.x,这是我的猜谜游戏代码的一部分。我想计算一个玩家的猜测,然后将他们的名字和猜测次数附加到一个列表中,该列表稍后会写入或附加到文件中。到目前为止,它只将游戏的最后一个玩家添加到列表和文件中,而不是所有玩家。我做错了什么 from typing import List, Tuple def choose: '"code"""""" guesses = 0 while choose(): guesses += 1 pass name = input('What i
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()
'w'
模式覆盖highscore.txt。可以将其视为删除文件,然后重新创建文件
您希望open('highscore.txt','a')
追加,如中所述
编辑:
或者,您可能希望将highscore
初始化为循环外部的空列表?(您的问题不清楚。用有效的python代码替换当前代码,并显示所需的文件输出示例,这将很有帮助。)
目前,您循环了很多次,每次都将highscore
的长度设为零,然后追加长度为1,然后对单个条目进行排序(无操作),然后编写一行文件。不清楚您是通过交互和循环三次来编写一个三行文件,还是通过从bash分别调用程序三次(在这种情况下,'a'
append是合适的)。帮助我们,并澄清代码和您的意图
假设爱丽丝和鲍勃在玩。如果你想在Alice每次重放时覆盖她的分数,也许你更喜欢使用名字\u to \u分数
口述,而不是列表
您没有向我们显示
def choose
的内容,但我假设它会提示Yes/No并返回True/False。您没有向我们显示defmain
的内容,但我假设您不想在循环体中调用main()
,因为while choose():
循环可能就足够了。试着读懂你的想法并不总是奏效。更清楚地说明您的问题将有助于我们给出更相关的答案。每次循环结束时,您都会在追加之前创建一个新的空列表。@cdarke哦,我明白了!那么我应该怎么做才能不创建一个空列表呢?将highscore:List[Tuple[str,int]]=[]放在“else”下?我不理解代码的逻辑,但我会在choose()时考虑:
。您可能需要在中将其重置为空,否则
@cdarke我现在更改了问题中的代码。每次用户玩游戏时,我都希望程序在高分列表中添加名称和猜测次数,然后将其打印到.txt文件中。“代码”是怎么回事“def后面的行?这看起来不像是有效的Python代码。如果您每次都写出整个列表,那么覆盖旧文件正是您想要的。