我正在为学校项目制作一个骰子游戏。当您开始游戏时,输入您的名字并从文件“Player_Names.txt”中读取以前参与过游戏的玩家列表。如果名字不在列表中,则会收到“欢迎”的消息,否则将收到“欢迎回来”的消息。
使用我的当前代码会发生以下情况:它只读取文件中的第一行,因此如果名字不在第一行中,则会给出欢迎新玩家的消息。此外,如果输入的名字是现有玩家姓名的一部分,则无论如何都会收到“欢迎回来”的消息。例如,如果您先输入“Matthew”,然后再次输入“Matt”,您仍会收到“欢迎回来”的消息,但实际上“Matt”是另一个人,应该是“欢迎”的消息。另外,如果您输入的名字在文件的第二行,则程序不会返回任何信息,直接继续执行下一行代码。
使用我的当前代码会发生以下情况:它只读取文件中的第一行,因此如果名字不在第一行中,则会给出欢迎新玩家的消息。此外,如果输入的名字是现有玩家姓名的一部分,则无论如何都会收到“欢迎回来”的消息。例如,如果您先输入“Matthew”,然后再次输入“Matt”,您仍会收到“欢迎回来”的消息,但实际上“Matt”是另一个人,应该是“欢迎”的消息。另外,如果您输入的名字在文件的第二行,则程序不会返回任何信息,直接继续执行下一行代码。
Names = open("Player_Names.txt", "r+")
player1 = input("Enter your name: ")
if player1 in Names.readline():
print("Welcome back you are player 1")
elif player1 not in Names.readline():
print("Welcome you are player 1")
Names.write(player1)
Names.write("\n")
如何让程序读取所有行,并将输入的单词作为整个单词而不是字母(例如“Matthew”示例)处理?
readlines
方法,直接使用列表推导式即可对文件进行迭代。content = [x.strip() for x in Names]
。 - chepnerreadlines
,强调文件是可直接迭代的可能更有益。 - chepner