python - Python 2 中的 TicTacToe 项目 : I am trying to avoid using global variables and return variables instead

标签 python python-2.7 tic-tac-toe

我正在开发一个项目,我不知道如何避免使用全局变量。我有一个执行点滴功能的函数列表,但我无法在它们之间传递变量!

这是我当前的代码:

====================

def player_names_input():
    global player_A_name,player_B_name
    player_A_name = raw_input("Please enter name for Player A    :   ")
    player_B_name = raw_input("Please enter name for Player B    :   ")

def coin_flip():
    global player_A_name,player_B_name,start_player,end_player,game_state
    game_state = "running"
    import random
    print "\nFlipping a coin to see who starts first..."
    random_int = random.randint(0, 1)
    if random_int == 0:
        coin = 'Heads'
        start_player = player_A_name
        end_player = player_B_name
    else:
        coin = 'Tails'
        start_player = player_B_name
        end_player = player_A_name
    print '\nCoin flip --> ',coin
    print '\nStarting player --> ',start_player
    print '\nStarting player gets "X"'

player_names_input()
coin_flip()

这是我尝试使用 return 而不是 global 的失败尝试:

================================================== =========

def player_names_input():
    player_A_name = raw_input("Please enter name for Player A    :   ")
    player_B_name = raw_input("Please enter name for Player B    :   ")
    return player_A_name,player_B_name

def coin_flip(player_A_name,player_B_name):
    game_state = "running"
    import random
    print "\nFlipping a coin to see who starts first..."
    random_int = random.randint(0, 1)
    if random_int == 0:
        coin = 'Heads'
        start_player = player_A_name
        end_player = player_B_name
    else:
        coin = 'Tails'
        start_player = player_B_name
        end_player = player_A_name
    print '\nCoin flip --> ',coin
    print '\nStarting player --> ',start_player
    print '\nStarting player gets "X"'

player_names_input()
coin_flip(player_A_name,player_B_name)

1-请帮助运行我的第二个代码,我真的想像大家建议的那样避免全局变量。 2-请批评我的代码,我刚刚开始,我正在努力学习编写好的代码(不仅仅是代码)。我的尝试有多糟糕?

最佳答案

由于您已定义 player_names_input() 返回一个 2 元组(两个值,player_A_nameplayer_B_name),您可以在您使用该函数的范围内像这样分配它们,

player_A_name, player_B_name = player_names_input()

现在,当调用它时:

coin_flip(player_A_name, player_B_name)

这两个变量将可供使用。

您可能需要考虑将实际的主程序包装在像

这样的主方法中
def main():
    player_A_name, player_B_name = player_names_input()
    coin_flip(player_A_name, player_B_name)

如果该文件是直接执行的,则调用该文件 - 这是通过检查神奇的 __name__ 变量是否等于字符串 '__main__' 来完成的,因此也将其添加到程序文件的末尾。

if __name__ == '__main__':
    main()

关于python - Python 2 中的 TicTacToe 项目 : I am trying to avoid using global variables and return variables instead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44036755/

相关文章:

python - 在 Windows 7 64 位中设置 pip

javascript - 收到静态文件但在 django 中不起作用

c++ - 尝试学习 C++,Tic Tac Toe 程序不起作用

c++ - Tic Tac Toe 覆盖数组用户输入

python - 尽管我提供的形状看起来正确,但尝试进行预测时,TensorFlow/Keras模型错误,原因是形状不匹配

python - 查找数组中具有重复键值的 dict 对象

python - 在 Sublime Text 2 中设置 Python IDE 时出现问题。错误 : [Error 2] The system cannot find the file specified

python - Google应用程序引擎本地主机服务器错误python

python - 无法在Python中导入模块

android - 通过蓝牙安卓玩井字游戏,轮流玩?