如何在Python3中使用来自另一个函数的变量?

2024-10-01 11:32:44 发布

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

我试图在每次用户获胜时添加50,但earn变量未定义。我如何定义它

def cash():
payment = float(input("Enter payment: "))
earn = payment
print("You entered: PHP {:.2f}".format(payment))
return earn

def game():
    ai_choice = {'0':'Rock', '1':'Paper', '2': 'Scissors'}

    def rock():
        ai = ai_choice[str(random.randint(0,2))]
        if ai == "Rock":
           output = "Tie"
        elif ai == "Scissors":
            output = "User Win"
            earn += 50
        else:
            output = "User Lose"
        output_window()
        outcome.config(text = output)

Code and Error


Tags: 用户inputoutput定义defcashpaymentfloat
3条回答

如果没有,函数中的变量是该函数的内部变量。这种隔离是功能的全部要点

目前您没有调用cash()-函数,因此不清楚您想做什么

不清楚您试图实现什么,但是没有定义earn,因为它的作用域是cash函数。您可能需要调用cash函数,将其值返回到earn += 50行之前的某个变量

所以你有earn = cash()。请注意,此“赚取”将不同于现金功能中的“赚取”

还有一个侧边提示,执行以下操作:

ai_choice = {'0':'Rock', '1':'Paper', '2': 'Scissors'}
ai = ai_choice[str(random.randint(0,2))]

使用不必要的数据结构并使代码复杂化。一个更简单的选择是:

ai_choice = ['Rock', 'Paper', 'Scissors']
ai = ai_choice[random.randint(0,2)]

您可以在全局范围内声明一个变量,然后在两个函数中使用它

global_var = 'foo'

def set_golbal_var():
    global global_var
    global_var = 'bar'

def print_global_var():
    #don't need to declare as global, because it isn't being changed.
    print(global_var)

print_global_var()
set_golbal_var()
print_global_var()

应该输出

foo
bar

不过,一般来说,这是一种不好的做法。通常,您希望将变量作为参数传递给每个函数。看起来是这样的:

pass_var = 'foo'

def set_var(passed_var):
    passed_var = 'bar'
    return passed_var

def print_var(passed_var):
    print(passed_var)

print_var(pass_var)
pass_var = set_var(pass_var)
print_var(pass_var)

输出相同的东西

相关问题 更多 >