-3

我正在制作的游戏中有一些代码,它将用户数据存储在名为data.txt. 以下代码是当一个人继续时,它将读取存储关卡的部分并查看它将从哪里开始游戏:

elif choice==("2"):
    contusername = input("Enter the name you registered with")
    with open("data.txt") as f:
        f.readline()
        for lines in f:
            name, level = lines.split()
            if name == contusername:
                userdata = level
                break

        while True:
            if level == 1:
                level1()

            elif level == 2:
                level2()
            #and so on

但它不会起作用。Python 无法读取文本文件。我该如何解决?

4

3 回答 3

1

您可能忘记强制转换为 int:

userdata = int(level)

其他方式你userdata是形式的字符串'1\n'

另外,您想使用它userdata来进行比较,而不是level

while True:
    if userdata == 1:
        level1()

ps 我不知道这个while True:说法是否正确,因为只提供了一个代码摘录,但它对我来说似乎也很可疑。

于 2013-11-12T12:18:10.410 回答
0

看来您有类型问题。从文件中读取会给你一个字符串,但你正在检查整数。

尝试将级别编号强制为int.

elif choice==("2"):
    contusername = input("Enter the name you registered with")
    with open("data.txt") as f:
        f.readline()
        for lines in f:
            name, level = lines.split()
            if name == contusername:
                userdata = level
                break
        level = int(level)  # <-- force the level to an integer
        while True:
            if level == 1:
                level1()

            elif level == 2:
                level2()   
于 2013-11-12T12:23:02.740 回答
0

这应该工作:

elif choice == "2":
    contusername = raw_input("Enter the name you registered with")
    with open("data.txt") as f:
        for lines in f.readlines():
            name, level = lines.split()
            if name == contusername:
                userdata = int(level)
                break

        while True:
            if userdata == 1:
                level1()
            elif userdata == 2:
                level2()
于 2013-11-12T12:35:20.043 回答