作为字符串的用户输入不能用于调用类中的变量

2024-05-19 03:20:47 发布

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

我不确定我问的问题是否正确,但我会解释的。我已经创建了一个类,并且在该类中创建了实例,问题是我希望能够使用一个由用户通过输入选择的实例。假设我想创建一个象棋游戏。我希望能够向前(可能向后)、向左和向右移动一块。假设我已经在类中创建了一个方法来移动工件,并且每个工件都有一个名称x-coord和y-coord。这就是我要面对的问题

class Piece(object):
    def __init__(self, x , y):
         self.x = x
         self.y = y

    def move(self, amount, direction):
         if direction == 'right':
            self.x = self.x + amount
         if direction == 'left':
            self.x = self.x - amount
         if direction == 'up':
            self.y = self.y + amount
         if direction == 'down':
            self.y = self.y - amount

rook = Piece(0,0)

piece = input('What piece would you like to move?')

#Assume that the user types rook after this prompt

piece.move(4,'right')

现在我得到一个错误,因为分配给变量块的输入是一个字符串,当我需要快走,我真的要“车”了,快走 我知道变量可以用int(var)、float(var)、str(var)来更改,但是如何将变量更改为类变量呢。你知道吗


Tags: 实例selfrightpiecemoveifvardef
1条回答
网友
1楼 · 发布于 2024-05-19 03:20:47

一种方法是有一个字典,它将工件名称映射到你的类。你知道吗

所以呢

pieces = {
    'Queen': Piece(0,0),
    'Tower': Piece(0,0),
    'Rook' Piece(0,0)
}

inp = input('Which piece would you like to move?')

if inp in pieces:
    pieces[inp]().move(4, right)
else:
    print('No such piece: %s - Valid pieces: %s' % (inp, pieces.keys()))

相关问题 更多 >

    热门问题