我不能改变变量的值

2024-10-02 16:25:04 发布

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

我在做一个关于制作的游戏,我不能改变变量的值,我也不知道为什么。下面是我的一些代码:

#Setting Up
#-------------------------------------------------------------------------------
sapling = 3
log = 0
twig = 0
stick = 0
boulder = 5
pickaxe = 1
axe = 1
coal = 0
torch = 0
#-------------------------------------------------------------------------------
#Inventory
#-------------------------------------------------------------------------------
inventory = {
    "sapling" : sapling,
    "log" : log,
    "twig" : twig,
    "stick" : stick,
    "boulder" : boulder,
    "pickaxe" : pickaxe,
    "axe" : axe,
    "coal" : coal,
    "torch" : torch,
    }
#-------------------------------------------------------------------------------
#InGameItems
#-------------------------------------------------------------------------------
game = {
    "Items =",
    "sapling",
    "log",
    "twig",
    "stick",
    "boulder",
    "pickaxe",
    "axe",
    "coal",
    "torch",
    }
#-------------------------------------------------------------------------------
#Help
#-------------------------------------------------------------------------------
h = {
    "(i)" : "To access inventory",
    "(?)" : "For help",
    "(g)" : "To check out all in game items",
    "plant (item)" : "To plant item",
    "craft (item)" : "To craft an item",
    }
#--------------------------------------------------------------------------------
#Begin Code
#-------------------------------------------------------------------------------
print("To ask for help type (?)")
while 1:
    player = input(":")
    if player == "?":
        print(h)
    if player == "i":
        print(inventory)
    if player == "g":
        print(game)
    if player == "plant sapling" and sapling != 0 and axe != 0:
        print("Planting")
        print("You planted a sapling!")
        print("Your sapling turned into a tree!")
        print("Cutting tree")
        print("2 logs gained!")
        log += 2
        sapling -= 1

所以这就是我的问题,我增加了log的值,但是当我玩游戏的时候,log并没有增加。我似乎找不出如何提高原木的价值。你知道吗


Tags: tologiftorchiteminventoryplayerprint
2条回答

你已经触犯了这样一个事实:你的词典是按值而不是参照来构建的。具体来说,词典条目

"log": log

不是的意思是“键“log”的值将是当时log变量中的任何值”。它的意思是“取log的当前值,copy它是键为“log”的字典条目的值。现在有两个独立的值,而不是一个值和对该值的引用。字典对键“log”有自己的值,它是一个恰好为0的整数,log是一个包含整数0的完全独立的变量。改变一个不会影响另一个。代替log += 2,您需要:

inventory["log"] += 2

当您这样做时:

inventory = {
    ...
    "log" : log
    ...
}

您在inventory内复制log0)的引用,但是当您复制log += 2时,实际上并没有更改log的值,而是创建一个临时变量log + 2并将其链接到名称loginventory中的log仍然引用旧的log,即0。你知道吗

所以你应该做inventory["log"] += 2,而不是log += 2。你知道吗

相关问题 更多 >