You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将用户输入变量设为全局变量,以在其他函数中调用?

关于全局变量与用户输入的解决方案

嘿,我来帮你搞定这两个问题:

1. 能否将用户输入设为全局变量在其他代码位置使用?

当然可以,但要注意:如果你的代码是面向对象结构(从self参数能看出来你的方法属于类),更推荐使用实例变量而非全局变量——全局变量容易引发命名冲突、降低代码可维护性,而实例变量能更好地封装数据,符合面向对象的设计思路。不过如果确实有需求,全局变量的实现也是可行的。

2. 如何将KingRow和KingColumn设为可在KingMoves中使用的变量?

结合你的代码结构,我给你两种方案,优先推荐第一种:

方案一:使用实例变量(更规范)

在UserInput方法中,把输入的值赋值给self的属性,这样整个类的其他方法都能通过self访问:

def UserInput(self): 
    while True: 
        if ChooseMove in self.pieces(): 
            # 赋值为实例变量
            self.KingRow = int(input("Choose Row: ")) 
            self.KingColumn = int(input("Choose Column: "))
            # 记得添加break退出循环,否则会一直重复请求输入
            break

然后在KingMoves方法中,直接通过self调用这两个变量:

def KingMoves(self, rows, columns): 
    FinalMove = [] 
    FinalMove.append(((self.KingRow - 1), (self.KingColumn))) 
    FinalMove.append(((self.KingRow + 1), (self.KingColumn))) 
    # 继续你的其他移动逻辑...

方案二:使用全局变量(不推荐,但满足需求)

如果一定要用全局变量,需要在两个方法中都声明global关键字:

def UserInput(self): 
    # 声明要使用全局变量
    global KingRow, KingColumn
    while True: 
        if ChooseMove in self.pieces(): 
            KingRow = int(input("Choose Row: ")) 
            KingColumn = int(input("Choose Column: "))
            break

def KingMoves(self, rows, columns): 
    # 同样声明全局变量
    global KingRow, KingColumn
    FinalMove = [] 
    FinalMove.append(((KingRow - 1), (KingColumn))) 
    FinalMove.append(((KingRow + 1), (KingColumn))) 
    # ...

小贴士:你的UserInput循环里没有退出条件,记得加break或者其他终止逻辑,不然会一直循环请求输入哦~

内容的提问来源于stack exchange,提问作者hiihihihelloo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:28:05