繁体   English   中英

python终端打印变量

[英]python terminal printing variable

我是使用python编码语言的初学者,但我无法用python编写一个可以在终端中运行的简单程序。 这是到目前为止的程序。

import random

X = "*"
O = "*"
Player = "*"
Computer = "*"


def inputPlayerLetter():
    letter = raw_input('Do you want to be X or O? \n')

    if letter == "X":
        print "You are now X's, you will go first"
        Player = "X"
        Computer = "O"
    elif letter == "O":
        print "You are now O's you will go second"
        Player = "O"
        Computer = "X"

inputPlayerLetter()

print Player
print Computer

这是我在运行代码时进入终端的内容。

Do you want to be X or O? 
X
You are now X's, you will go first
*
*

要么

Do you want to be X or O? 
O
You are now O's you will go second
*
*

基本上,在我的函数中,如果我选择X,则我希望播放器为X,而计算机为O(或者当我选择O时,我希望播放器为O,而计算机为X)。 但是,当我打印变量时,我得到*和*。 我该如何解决这个问题,以便我的if elif语句产生的预期结果有我想要的效果。

您要分配的播放器和计算机的值是该功能的本地值。 您应该从函数中返回值,以便它们可以在主作用域中使用:

def inputPlayerLetter():
    Player , Computer = "*", "*"
    letter = raw_input('Do you want to be X or O? \n')
    if letter == "X":
        print "You are now X's, you will go first"
        Player, Computer = "X", "0"
    elif letter == "O":
        print "You are now O's you will go second"
        Player, Computer = "O", "X"
    return Player, Computer

Player, Computer = inputPlayerLetter()

有关更多详细信息,请参见Python中局部变量和全局变量的规则是什么?

在Python中,仅在函数内部引用的变量是隐式全局的。 如果在函数体内的任何位置为变量分配了新值,则假定该变量是局部变量。 如果在函数内部为变量分配了新值,则该变量是隐式局部变量,您需要将其显式声明为“ global”。

尽管起初有些令人惊讶,但片刻的考虑可以解释这一点。 一方面,要求全局分配变量可防止意外副作用。 另一方面,如果所有全局引用都需要全局,那么您将一直使用全局。 您必须将对内置函数或导入模块的组件的每个引用声明为全局引用。 这种混乱将破坏全球宣言对确定副作用的有用性。

您也可以将变量设置为全局变量,但这通常被认为是不好的做法,因为它为意外的副作用打开了大门。

您的播放机,计算机变量不在inputplayerletter()函数之外,因此您将值存储在局部变量中。

为了解决这个问题,请使用以下命令使函数使用全局变量:

global Player, Computer

最终代码:

import random

X = "*"
O = "*"
Player = "*"
Computer = "*"


def inputPlayerLetter():  
    global Player, Computer


    letter = raw_input('Do you want to be X or O? \n')

    if letter == "X":
        print "You are now X's, you will go first"
        Player = "X"
        Computer = "O"
    elif letter == "O":
        print "You are now O's you will go second"
        Player = "O"
        Computer = "X"

inputPlayerLetter()

print Player
print Computer

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM