[英]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.