如何在Python中传递变量? [英] How do I pass variables around in Python?

查看:397
本文介绍了如何在Python中传递变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想制作一个基于文本的格斗游戏,但是要做到这一点,我需要使用一些功能并传递诸如伤害,武器和健康之类的值.

I want to make a text-based fighting game, but in order to do so I need to use several functions and pass values around such as damage, weapons, and health.

请允许该代码在我的整个代码中传递武器",伤害","p1 n p2".如您所见,我已经尝试过将参数用于p1 n p2,但是我有点新手.

Please allow this code to be able to pass "weapons" "damage" "p1 n p2" throughout my code. As you can see I have tried using parameters for p1 n p2, but I am a little bit a newbie.

import random

def main():
    print("Welcome to fight club!\nYou will be fighting next!\nMake sure you have two people ready to       play!")
    p1=input("\nEnter player 1's name ")
    p2=input("Enter player 2's name ")
    print("Time to get your weapons for round one!\n")
    round1(p1,p2)

def randomweapons(p1,p2):
    weapon=["Stick","Baseball bat","Golf club","Cricket bat","Knife",]
    p1weapon=random.choice(weapon)
    p2weapon=random.choice(weapon)
    print(p1 +" has found a "+p1weapon)
    print(p2 +" has found a "+p2weapon)

def randomdamage():
    damage=["17","13","10","18","15"]
    p1damage=random.choice(damage)
    p2damage=random.choice(damage)

def round1(p1,p2):
    randomweapons(p1,p2)

def round2():
    pass
def round3():
    pass
def weaponlocation():
    pass

main()

推荐答案

有一些选择.

一种方法是将值作为参数传递,并从各种函数中返回值.您已经使用两个播放器的名称进行了此操作,这两个名称作为参数从main传递到round1,然后从那里传递到randomweapons.您只需要确定还需要传递什么.

One is to pass the values as parameters and return values from your various functions. You're already doing this with the names of the two players, which are passed as parameters from main to round1 and from there on to randomweapons. You just need to decide what else needs to be passed around.

当信息需要沿着另一个方向流动(从被调用的函数返回到调用者)时,请使用return.例如,您可能已使randomweapons将它选择的武器返回给任何函数调用(使用return p1weapon, p2weapon).然后,您可以使用Python的元组拆包语法w1, w2 = randomweapons(p1, p2),通过将函数的返回值分配给一个或多个变量,将武器保存在调用函数中.从那时起,调用函数可以对这些变量执行任何所需的操作(包括将它们传递给其他函数).

When the information needs to flow the other direction (from a called function back to the caller), use return. For instance, you might have randomweapons return the weapons it chose to whatever function calls it (with return p1weapon, p2weapon). You could then save the weapons in the calling function by assigning the function's return value to a variable or multiple variables, using Python's tuple-unpacking syntax: w1, w2 = randomweapons(p1, p2). The calling function could do whatever it wants with those variables from then on (including passing them to other functions).

另一种可能更好的方法是使用面向对象的编程.如果函数是某个类中定义的方法(例如MyGame),则可以将各种数据另存为该类实例上的属性.这些方法将自动将实例作为第一个参数(通常称为self)传递进来.这是一个大概的例子:

Another, probably better approach is to use object oriented programming. If your functions are methods defined in some class (e.g. MyGame), you can save various pieces of data as attributes on an instance of the class. The methods get the instance passed in automatically as the first parameter, which is conventionally named self. Here's a somewhat crude example of what that could be like:

class MyGame:          # define the class
    def play(self):    # each method gets an instance passed as "self"
        self.p1 = input("Enter player 1's name ")    # attributes can be assigned on self
        self.p2 = input("Enter player 2's name ")
        self.round1()
        self.round2()

    def random_weapons(self):
        weapons = ["Stick", "Baseball bat", "Golf club", "Cricket bat", "Knife"]
        self.w1 = random.choice(weapons)
        self.w2 = random.choice(weapons)
        print(self.p1 + " has found a " + self.w1) # and looked up again in other methods
        print(self.p2 + " has found a " + self.w2)

    def round1(self):
        print("Lets pick weapons for Round 1")
        self.random_weapons()

    def round2(self):
        print("Lets pick weapons for Round 2")
        self.random_weapons()

def main():
    game = MyGame()  # create the instance
    game.play()      # call the play() method on it, to actually start the game

这篇关于如何在Python中传递变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆