python - 如何在 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: ")
解决方案
推荐阅读
- ios - 如何从应用程序内部或外部 MDM 以编程方式更改屏幕时间和隐私限制设置?
- python - Python:如何删除多列具有相等值的行?
- python - Flask 服务器无法读取西里尔文请求
- reactjs - 使用文件名从 Amazon S3 存储桶下载
- javascript - JavaScript key.classList.add 问题
- javascript - WebStorm 中通过 ESLint 规则进行更漂亮的集成
- typescript - Chrome:调试本地打字稿文件不再起作用
- html - 如何将 boostrap3 列自定义为 70px 宽度
- java - Android Volley 身份验证令牌问题发布请求
- c# - Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd) 在所有文件夹上调用