程序会添加空格,因此无法正确检测

2024-03-29 14:27:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python和Pygame制作一个游戏,但我根本无法让游戏保存工作。你知道吗

f event.type == pygame.KEYDOWN: ##########WRITE################
        if event.key == pygame.K_w:
            print("Writing File")
            with open ("Saves/testListSave.txt","w") as f:
                f.write("1\n")
                f.write("2\n")
                f.write("3\n")
                f.write("4\n")
                f.write("5\n")
                f.write("6\n")
                f.write("7\n")
                f.write("8\n")
                f.write("9\n")
                f.close()

这部分很好用。它像它应该做的那样写入文件,它将数字写在彼此的下面。你知道吗

1
2
3
4
5
6
7
8
9

但是问题来了;当我尝试读取文件时,它会在每一行下面添加这些空行(至少在控制台中看起来是这样的)

if event.key == pygame.K_t:
            with open("Saves/testListSave.txt","r") as f:
                data1 = f.readline()
                data2 = f.readline()
                data3 = f.readline()
                data4 = f.readline()
                data5 = f.readline()
                data6 = f.readline()
                data7 = f.readline()
                data8 = f.readline()
                data9 = f.readline()

                print("print DATA")
                print(data1)
                print(data2)
                print(data3)
                print(data4)
                print(data5)
                print(data6)
                print(data7)
                print(data8)
                print(data9)


                if data5 == 5:
                    print("data5 = 5")

这使得检测

if data5 == 5:
    print("data5 = 5")

不可能,永远不会触发!有什么想法吗?你知道吗


Tags: keytxtevent游戏readlineifaswith
2条回答

这可能是因为data5是string类型,而不是int类型

尝试使用以下命令将其强制转换为int:

if int(data5) == 5:

data5 = f.readline()带回5\n而不是5

如果您执行data5 = f.readline().replace('\n',''),您的代码将正常工作(您确实需要检查字符串'5'

或者将if语句改为:if data5.replace('\n','') == '5':

有许多其他方法可以用来剥离\n

相关问题 更多 >