簡體   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