Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 变量不更新_Python - Fatal编程技术网

Python 变量不更新

Python 变量不更新,python,Python,所以这是我试图制作的一个游戏模型。我想我遇到的问题发生在第68-75行之间。由于某些原因,NMHP或mobHP未更新。谢谢你的帮助 我想发生的事: 该功能应该是“怪物之气”(mchi)小于“玩家之气”(phi)。获取怪物生命值(mobHP)并从中减去玩家伤害,称为NMHP。然后我想更新函数外侧的列表 ##ranbat.py ##make random battle for Player ##import random ##import time ## def mobspawn():

所以这是我试图制作的一个游戏模型。我想我遇到的问题发生在第68-75行之间。由于某些原因,NMHP或mobHP未更新。谢谢你的帮助

我想发生的事:

该功能应该是“怪物之气”(mchi)小于“玩家之气”(phi)。获取怪物生命值(mobHP)并从中减去玩家伤害,称为NMHP。然后我想更新函数外侧的列表

##ranbat.py
##make random battle for Player

##import random
##import time
##


def mobspawn():
    #imports
    import random
    import time
    #list,tup, and dicts
    plHP = ["30", "40", "50"]
    gchi = [".5", ".6", ".7", ".8", ".9"]
    pchi = [".5", ".6", ".7", ".8", ".9"]
    mchi = [".5", ".6", ".7", ".8", ".9"]
    dam = ["10", "20", "30", "40", "50", "60",]
    enList = ["Slime", "Goblin", "Hound", "NyaaTrape", "Navi"]
    enHP = ["10", "20", "30", "40", "50", "60",]
    enGen = ["he", "She", "it"]
    chiC = ["1", "2"]
    HELP = [("#", "Name", "Description"),("1", "Attack", "Attacks your enemy with equipped weapon"),("2", "Defend", "Use your equipped weapon to defend"),("3", "Heal", "If player has Med_Kit uses it on player"),("3", "Stats", "Prints players stats"),("5", "Finisher", "A secret technique (Has a 50% chance of a insta-kill)"),("6", "HELP", "This comand displays Help")]
    ########
    player = "Oni"
    ##############
    #Mob stats   #
    ##############
    Gen = random.choice(enGen)
    mobHP = random.randint(10, 60)
    mob = random.choice(enList)
    mdam = random.randint(10, 60)
    mchi = random.randint(1, 9)
    NMHP = 0
    mstat = [("HP","NMHP","Damage", "Chi"),(mobHP, NMHP, mdam, mchi)]
    ##############      
    time.sleep(1)
    print("Vofa: Oh no whats that!,", player, "protect me")
    print("")
    time.sleep(3)
    #print("here 2 ")
    print("You have incountered a wild", mob)
    print("")
    time.sleep(3)
    print("Vofa: Looks like", Gen, "has",mobHP , "HP. Best be careful.")
    print("")
    ##############
    #Player stats#
    ##############
    plHP = random.randint(10, 60)
    pldam = random.randint(10, 60)
    pchi = random.randint(1, 9)
    plstat = [("HP","Damage", "Chi"),(plHP, pldam, pchi)]
    ##############
    batMenDis()       
    player=int(input())
    while player !=None:
        player = int(input())

        if player == 1:
            print("You have chosen option #1 Attack")
            print("You Attack")
            time.sleep(3)
            if (mchi) < (pchi):
                (NMHP) = (mobHP) - (pldam)
                (mobHP) = (NMHP)
                if mobHP < 0:
                    print( mob, "is dead")
                    break
                else:
                    print(mob,"Has",mobHP,"HP left")
            if (mchi) > (pchi):
                (NpHP) = (plHP) - (mdam)
                (pHP) = (NpHP)
                if plHP < 0:
                    print("you're almost dead. but you muster the strength to fight for a bit longer to keep vofa safe")
                    (pHP) = (pHP) + random.randint(1, 10)
                else:
                    print(player,"Has",plHP,"HP left")
            if (mchi) == (pchi):
                print("Both you and mob have the same amount of chi")
                time.sleep(1)
                print("")
                print("Coin has been tossed")
                chiC = random.choice(chiC)
                if chiC == 1:
                    mobHP = (mobHP) - (pldam)
                    print(mob,"Has",mobHP,"HP left")
                if chiC == 2:
                    pHP = (plHP) - (mdam)
                    print(player,"Has",plHP,"HP left")
        batMenDis()
        if player == 0:
            #print("here 2")
            print("You have chosen option number 0")
            print("Program Now Exiting")
            time.sleep(2)
            print("Good Bye. Have a nice day! hope to fight with you again")
            break
def batMenDis():
    print("")
    print("What are you going to do")
    print("")
    print("1 = Attack")
    print("2 = Defend")
    print("3 = Heal")
    print("4 = Print current Stats")
    print("5 = Finisher (50% chance of working)")
    print("6 = HELP")
def main():
    mobspawn()
main()
##ranbat.py
##为玩家随机战斗
##随机输入
##导入时间
##
def mobsawn():
#进口
随机输入
导入时间
#列表、tup和dict
plHP=[“30”、“40”、“50”]
gchi=[“.5”、“.6”、“.7”、“.8”、“.9”]
pchi=[“.5”、“.6”、“.7”、“.8”、“.9”]
mchi=[.5”、.6”、.7”、.8”、.9”]
大坝=[“10”、“20”、“30”、“40”、“50”、“60”,]
登记=[“粘液”、“地精”、“猎犬”、“尼亚塔拉佩”、“纳维”]
enHP=[“10”、“20”、“30”、“40”、“50”、“60”]
enGen=[“他”、“她”、“它”]
别致=[“1”,“2”]
帮助=[(“#”,“名称”,“描述”),(“1”,“攻击”,“用装备武器攻击你的敌人”),(“2”,“防御”,“使用装备武器进行防御”),(“3”,“治疗”,“如果玩家有医疗包在玩家身上使用”),(“3”,“统计”,“打印玩家统计数据”),(“5”,“完成者”,“秘密技术(有50%的insta杀死几率)”,(“6”,“帮助”,“此命令显示帮助”)]
########
player=“Oni”
##############
#暴民统计#
##############
Gen=随机选择(enGen)
mobHP=random.randint(10,60)
mob=random.choice(登记)
mdam=random.randint(10,60)
mchi=random.randint(1,9)
NMHP=0
mstat=[(“HP”、“NMHP”、“伤害”、“Chi”),(mobHP、NMHP、mdam、mchi)]
##############      
时间。睡眠(1)
打印(“哦,不,那是什么!,”玩家,“保护我”)
打印(“”)
时间。睡眠(3)
#打印(“此处2”)
打印(“你遇到了一个野人”,暴徒)
打印(“”)
时间。睡眠(3)
打印(“Vofa:看起来像”,Gen,“has”,mobHP,“HP,最好小心。”)
打印(“”)
##############
#球员统计#
##############
plHP=random.randint(10,60)
pldam=random.randint(10,60)
pchi=random.randint(1,9)
plstat=[(“生命”,“伤害”,“气”),(生命,生命,生命)
##############
巴门迪斯()
player=int(输入())
while player!=无:
player=int(输入())
如果player==1:
打印(“您已选择选项#1攻击”)
打印(“您攻击”)
时间。睡眠(3)
如果(mchi)<(pchi):
(NMHP)=(mobHP)-(pldam)
(mobHP)=(NMHP)
如果mobHP<0:
印刷(暴民,“死了”)
打破
其他:
打印(移动“已”,移动HP,“HP左”)
如果(mchi)>(pchi):
(NpHP)=(plHP)-(mdam)
(pHP)=(NpHP)
如果plHP<0:
打印(“你几乎死了。但是你鼓起勇气再战斗一段时间,以确保vofa的安全”)
(pHP)=(pHP)+random.randint(1,10)
其他:
打印(播放器“已”,plHP,“HP左”)
如果(mchi)=(pchi):
打印(“你和怪物都有相同数量的气”)
时间。睡眠(1)
打印(“”)
打印(“硬币被抛了”)
chiC=随机选择(chiC)
如果chiC==1:
mobHP=(mobHP)-(pldam)
打印(移动“已”,移动HP,“HP左”)
如果chiC==2:
pHP=(plHP)-(mdam)
打印(播放器“已”,plHP,“HP左”)
巴门迪斯()
如果player==0:
#打印(“此处2”)
打印(“您已选择选项编号0”)
打印(“程序正在退出”)
时间。睡眠(2)
打印(“再见,祝你有一个愉快的一天!希望再次与你战斗”)
打破
def batMenDis():
打印(“”)
打印(“你打算做什么”)
打印(“”)
打印(“1=攻击”)
打印(“2=防御”)
打印(“3=Heal”)
打印(“4=打印当前统计数据”)
打印(“5=修整器(50%工作机会)”)
打印(“6=帮助”)
def main():
mobsawn()
main()

问题不在第68-75行之间:

if (mchi) < (pchi):
    (NMHP) = (mobHP) - (pldam)
    (mobHP) = (NMHP)
    if mobHP < 0:
        print( mob, "is dead")
        break
    else:
        print(mob,"Has",mobHP,"HP left")
if(mchi)<(pchi):
(NMHP)=(mobHP)-(pldam)
(mobHP)=(NMHP)
如果mobHP<0:
印刷(暴民,“死了”)
打破
其他:
打印(移动“已”,移动HP,“HP左”)
因为当你进入那里时,你的伤害总是大于怪物的生命值(生命值为1-9,伤害值为10-60)。因此结果总是怪物被杀死

但如果我们看看另一个分支:

if (mchi) > (pchi):
    (NpHP) = (plHP) - (mdam)
    (pHP) = (NpHP) # error here, should be plHP
    if plHP < 0:
        print("you're almost dead. but you muster the strength to fight for a bit"
              "longer to keep vofa safe")
        (pHP) = (pHP) + random.randint(1, 10) # same here
    else:
        print(player,"Has",plHP,"HP left")
if(mchi)>(pchi):
(NpHP)=(plHP)-(mdam)
(pHP)=(NpHP)#此处错误,应为plHP
如果plHP<0:
print(“你快死了,但你还是鼓起勇气去战斗一段时间”
“保持vofa安全的时间更长”)
(pHP)=(pHP)+random.randint(1,10)#此处相同
其他:
打印(播放器“已”,plHP,“HP左”)

您不是从plHP中减去损害,而是从pHP中减去损害(在此之前未定义)。这样,plHP始终保持不变。

这不是一个最小的示例;请减少代码,使其成为重现问题所必需的内容。@AdamSmith:否。首先,
(垃圾邮件)
不是一个元组;元组总是有逗号。其次,在一个元组中包装两边的效果与包装两边的效果相同(这样做很愚蠢,但不会破坏东西),而包装一边而不是另一边(除非右边恰好是其他类型的iterable)raise
TypeError:“int”对象不可iterable
或类似。我猜混淆之处在于您不断重复使用相同的变量名来表示不同的内容。例如,
player
开始时是一个表示播放器名称的字符串,然后变成