2012-05-15 39 views
0

我在Python初學者,我寫了這個簡單的代碼,但也有一些我無法解析:(Python的錯誤或失誤

請有人可以幫助我的錯誤?

//initialization 
str = None 
var = None 

def setvar(val): 
""" Sets the global variable "var" to the value in 'val' """ 
if val: 
print "setting variable 'var' to '$val'" // we want to print the value of 'val' 
else: 
print "un-setting variable 'var'" 

var = val 
return 

if __name__ == 'main': 
    try: 
    setvar(" hello world! ") // use this function to set the 'var' variable 
    var.strip() // we want the leading and trailing spaces removed 
    print str(var) 
    except: 
    print "something went wrong" 
+3

你看到了什麼樣的錯誤?這裏有一些縮進錯誤會使這段代碼立即失效。如果這些是複製粘貼錯誤,您需要修復並重新發布代碼。 – larsks

+1

//不是python中的註釋#用於註釋 –

+1

爲什麼使用//當你可以(並且在真正的代碼中必須)使用# – loki

回答

4

有與您的代碼示例的一些問題。

首先,假設你已經忠實地保存壓痕問你問題的時候,這一切都錯了。的setvar主體應該從def縮進。請確保你跟隨PEP準則,併爲每個縮進級別使用四個空格。

其次,Python中的註釋標記是#而不是//。接下來,如果你想在你的函數中影響一個全局變量,你需要這樣標記它。

四,var.strip()返回新的值,它不在原地操作。

此外,在您運行此腳本的情況下,__name__的值將爲__main__而不是main

最後,您已將str設爲null變量,因此您不能將它稱爲函數。

下正常工作:

# initialization 
var = None 

def setvar(val): 
    """ Sets the global variable "var" to the value in 'val' """ 
    global var 
    if val: 
     print "setting 'var' to '$val'" # we want to print the value of 'val' 
    else: 
     print "un-setting 'var'" 

    var = val 
    return 

if __name__ == '__main__': 
    try: 
     setvar(" hello world! ") # use this function to set the 'var' variable 
     var = var.strip() # we want the leading and trailing spaces removed 
     print str(var) 
    except: 
     print "something went wrong" 

一個可能會或可能不會是一個問題的其他事情。如果您想要在print聲明中打印val,則不要使用$val。取而代之的是,你可以有這樣的:

print "setting variable 'var' to '%s'"%(val) 

而且,是的,我知道你在一個單一值不需要括號,這只是我的編碼風格,少了一個東西我要記住: - )

+0

我已經做到了,它比罰款更好!:D謝謝你:) – slimoss

1

就像你在Perl或PHP做您不能使用內部字符串變量名的Python,爲example.You這樣做:

print ("setting variable 'var' to '%s'" % val) # we want to print the value of 'val' 

和評論以「#」開始。

+0

嗨@Ceramic Pot,我做了你說的,我仍然有這個錯誤:在第13行第5列遇到「打印」。期待:「」 – slimoss

+0

代碼中的縮進是錯誤的看到paxdiablo的回答。 –