python - 如何在Python中的函数之间传递变量

标签 python python-2.7

很抱歉代码太长,但我觉得包含我想要完成的任务很重要。我是 Python 和编程的初学者,我正在尝试制作一个简单的基于文本的冒险游戏。游戏一开始运行得很好,直到我添加了与蜜蜂的遭遇。我运行程序,我选择逃离熊,所以我的hp应该是40,这是显示的。然而,当我选择拍打蜜蜂时,我的生命值应该为0,因为40(我当前的生命值)-40=0。然而我的生命值显示为 60,就好像熊的遭遇从未发生过一样。有什么方法可以解决这个问题还是Python 中的限制?

from sys import exit
from time import sleep
import time

#Hp at start of game:
hp = 100

#The prompt for inputs
prompt = "> "

#Bear encounter
def bear(hp):
    choice = raw_input("> ")
    if "stand" in choice:
        print "The bear walks off, and you continue on your way"
    elif "run" in choice:
        print "..."
        time.sleep(2)
        print "The bear chases you and your face gets mauled."
        print "You barely make it out alive, however you have sustained serious damage"
        hp = hp-60
        currenthp(hp)
    elif "agressive" in choice:
        print "..."
        time.sleep(2)
        print "The bear sees you as a threat and attacks you."
        print "The bear nearly kills you and you are almost dead"
        hp = hp-90
        currenthp(hp)
    else:
        print "Well do something!"
        bear(hp)

#Bee encounter
def bee(hp):
    choice = raw_input(prompt)
    if "run" in choice:
        print "..."
        sleep(2)
        print "The bee flies away and you continue on your way."
        currenthp(hp)
    elif "swat" in choice:
        print "..."
        sleep(1)
        print "You succesfully kill the bee. Good Job!"
        sleep(1)
        print "Wait a minute"
        sleep(2)
        print "The bee you killed gives off pheremones, now there are hundreds of bees chasing you."
        print "The bees do some serious damage."
        hp = hp-40
        sleep(1)
        currenthp(hp)
    else:
        print "Well, do something."
        bee(hp)

#Function to display the current hp of the current player
def currenthp(hp):
    if hp < 100:
        print "Your hp is now at %d" % hp
    elif hp <= 0:
        dead()
    else:
        print "You are still healthy, good job!"

#Called when player dies
def dead():
    print "You sustained too much damage, and as a result have died."
    time.sleep(3)
    print "GAME OVER!"
    print "Would you like to play again?"
    choice = raw_input("> ")
    if "y" in choice:
        start_game()
    else:
        exit(0)

#Called to Start the Game, useful for restarting the program       
def start_game():
    print "Welcome to Survival 101"

#START OF GAME
start_game()
print "You start your regular trail."
print "It will be just a little different this time though ;)"

time.sleep(3)
print "You are walking along when suddenly."
time.sleep(1)
print "..."
time.sleep(2)

#Start of first encounter
print "Wild bear appears!."
print "What do you do?"
print "Stand your ground, Run away, be agressive in an attempt to scare the bear"

#first encounter
bear(hp)

#Start of second encounter
print "You continue walking and see a killer bee approaching you"
print "What do you do"
print "run away, swat the bee away"
bee(hp)

最佳答案

您通过hp到函数并在函数内部您正在更新它,但您没有获得更新的值 hp从函数返回。您应该指定 return hp在函数内部返回更新后的值,您可以在函数调用中存储(或更新)更新后的值 - 例如 hp = bear(hp) .

关于python - 如何在Python中的函数之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564270/

相关文章:

python - 如何在python中将一个元素从列表移动到另一个元素

python - 如何在 OpenERP 7 中使用继承属性?

python - 我不知道如何让我的用户输入他们的分数

Python 覆盖我的文件并且找不到其他文件

python - 如何检查一个列表中的所有项目是否都在 python 的第二个列表中?

python - PyTest:测试if语句中调用了哪个函数

python并行循环: communicate to outside

python - 以前后字符为条件匹配字符串

python - 如何在 python 3.6 上制作一个简单的网络浏览器?

python - 带有用户包的 py2app