首页 > 解决方案 > 如何在 Python 3 中将输入字符串转换为变量?

问题描述

我正在创建一个 Dominion 纸牌游戏,但我一直坚持如何将玩家输入字符串转换为变量。例如,如果玩家 1 在他的行动阶段想要使用他的地窖卡,他会输入“地窖”。但是王国卡有很多种类型,我认为编写一个 if 语句来检查所有不同的王国卡名称是不正确的。有没有办法可以将输入字符串“cellar”转换为可以直接调用的变量?在这种情况下,我将它作为一个函数。谢谢!

import random

# Need dictionary of each card: Cost, action, points, curse, etc.

# BASIC CARDS
copper = {"name":"copper", "cardtype":"treasure", "victory":0, "cost":0, "value":1}
silver = {"name":"silver", "cardtype":"treasure", "victory":0, "cost":3, "value":2}
gold = {"name":"gold", "cardtype":"treasure", "victory":0, "cost":6, "value":3}

estate = {"name":"estate", "cardtype":"victory", "victory":1, "cost":2, "value":0}
duchy = {"name":"duchuy", "cardtype":"victory", "victory":3, "cost":5, "value":0}
province = {"name":"province", "cardtype":"victory", "victory":6, "cost":8, "value":0}
curse = {"name":"curse", "cardtype":"victory", "victory":-1, "cost":0, "value":0}

# KINGDOM CARDS
def cellar(x):
    pass

# Draw pile, discard pile, hand pile.

drawpile = [0]
discardpile = [0]
hand = [0]

# Each player starts with 8 copper and 2 estates. Shuffle cards and put in draw pile.
number_of_players = input("Ready to start? Input # of players")
if int(number_of_players) < 2:
    print("Need at least 2 players")
elif int(number_of_players) > 8:
    print("8 is maximum")
else:
    for i in range(int(number_of_players)):
        print("Player " + str(i))

# Player 1 starts, draw 5 cards from draw pile to hand.
drawpile = [copper["name"], copper["name"], copper["name"], copper["name"], copper["name"], copper["name"], copper["name"], estate["name"], estate["name"]]
random.shuffle(drawpile)
hand = drawpile[:6]
print(hand)
turn1 = input("Action phase, what would you like to do: ")
turn2 = input("Buy phase, what would you like to buy: ")
turn3 = input("Cleanup phase: ")

标签: pythonpython-3.x

解决方案


推荐阅读