如何将用户输入变量设为全局变量,以在其他函数中调用?
关于全局变量与用户输入的解决方案
嘿,我来帮你搞定这两个问题:
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
相关产品推荐
相关产品推荐

