2012-07-06 62 views
1

我是python的初學者,當我嘗試新程序時遇到問題。 我試圖定義一個函數來小寫輸入,但它只能與整數工作,但字母,也不是字母詮釋,這裏就是我得到:函數中的python語法錯誤

def SomeString(string): 
    lowcase = str(string) 
    lowcase.lower() 
    print lowcase 

只有整數的工作,整數與字母或字母不會工作:

>>> SomeString(TEST0110) 
SyntaxError: invalid syntax 

>>> SomeString(TESTString) 

Traceback (most recent call last): 
    File "<pyshell#10>", line 1, in <module> 
    SomeString(TESTString) 
NameError: name 'TESTString' is not defined 

我儘量不使用功能來做到這一點,它工作得很好:

>>> String = "TEST0110" 
>>> String.lower() 
'test0110' 

我不知道爲什麼它不會與功能正常工作,請大家幫忙。
THanks。

+1

你應該有'lowcase = lowcase.lower()' - 字符串方法返回新的字符串。他們不修改原始字符串。實際上,沒有辦法修改原始字符串。 python字符串是**「不可變的」**。 – mgilson 2012-07-06 04:02:53

+0

沒有得到你的'SyntaxError'。確保你包括一切。 – 2012-07-06 04:05:02

+0

@JoelCornett,請參閱我的答案瞭解SyntaxError的一個可能原因 – 2012-07-06 04:10:17

回答

3

做這個SomeString("TEST0110")代替SomeString(TEST0110)

當你寫SomeString(TEST0110)代碼假定TEST0110是一個變量, 但在你的情況下,沒有

引號""表明它是一個字符串

錯誤NameError: name 'TESTString' is not defined意味着你的代碼是特林找到名字的變量TESTString

.lower()返回的輸出,你沒有捕捉功能...

+0

s.lower()在添加引號後不起作用 – Siretoe 2012-07-06 04:00:46

+0

這仍然不能解釋SyntaxError ...(我完全困惑) – mgilson 2012-07-06 04:02:01

+0

感謝您提供mgilson的建議,它的解決方案。 – Siretoe 2012-07-06 04:05:42

3

SomeString(TEST0110)不是一個語法錯誤,這是一個,如果你沒有叫可變NameError TEST0110

SomeString(0110TEST)語法錯誤

這是因爲它是0110一個數字,但隨後垃圾

SomeString("TEST0110")可能是你我是什麼一個。它通過一個字符串函數

如果你確保你總是傳遞str你不需要調用str()

def SomeString(my_string): 
    lowcase = my_string.lower() 
    print lowcase 
+0

你是對的。這很可能是原因。 – 2012-07-06 04:11:18