首页 > 解决方案 > 有没有更好的方法来检查输入中的字符串?

问题描述

我在 python 中制作了一个简单的基于坐标的运动系统,而运动检测看起来效率很低。这就是我现在所拥有的:

mvmt = str(input("Where do you want to move? "))
if mvmt == "w":
    zpos += 1
elif mvmt == "a"
    xpos -= 1
elif mvmt == "d":
    xpos += 1
elif mvmt == "s":
    zpos -= 1

有更好的方法吗?

标签: python

解决方案


您可以使用存储位置并更新它的类,如下所示:

class Position:

    def __init__(self):
        self.dct = {'w': (1, 0), 's': (-1, 0), 'd': (0, 1), 'a': (0, -1)}
        self.pos = (0, 0)

    def new_position(self, mvmt):
        self.pos = tuple(map(sum, zip(self.pos, self.dct[mvmt])))
        return self.pos


pos = Position()

print(pos.new_position('a'))
# (0, -1)

print(pos.new_position('w'))
# (1, -1)

print(pos.new_position('w'))
# (2, -1)

print(pos.new_position('s'))
# (1, -1)

推荐阅读