2014-12-13 270 views
1

即時通訊使用python編程語言的初學者,並且我無法在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)。但是,當我打印這個變量時,我得到了*和*。我該如何解決這個問題,以便我從elif語句中得到我想要的效果。

+1

這是一個範圍問題 – keyser 2014-12-13 15:44:07

回答

0

您正在分配的播放器和計算機的值是本地函數。你應該從你的函數返回值,因此,他們在主要適用範圍入店:

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() 

欲瞭解更多詳情,請參閱What are the rules for local and global variables in Python?

在Python中,變量只在函數內部引用的是隱含地全球性的 。如果一個變量在函數體內的任何地方被賦予了一個新的值,它被假定爲一個局部變量。如果一個變量 在函數內部被分配了一個新的值,那麼該變量爲 隱式地爲local,並且您需要明確聲明它爲'global'。

雖然起初有點令人驚訝,但一時的考慮解釋了 這個。一方面,要求分配變量的全局值可提供針對意外副作用的 。另一方面,如果所有全局引用都需要全局參數 ,那麼您將使用全局全部 時間。您必須聲明爲全局引用內置的 函數或導入模塊的組件。這種混亂使 擊敗了全球聲明識別 副作用的用處。

你也可以使變量全局,但這通常被認爲是不好的做法,因爲它打開了意想不到的副作用的大門。

0

您的播放器,計算機變量不在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 

希望它可以幫助