2015-10-08 26 views
-4

假設x是一個已被賦值的字符串變量。編寫一個表達式,其值爲true當且僅當x不是字母。寫出一個表達式,其值爲true當且僅當x不是字母

+2

那麼你的嘗試看起來像? – ergonaut

+0

我最近嘗試notx.true()和它說備註: ⇒意外標識符:notx,真正 更多提示: ⇒你幾乎可以肯定,應該使用:不 ⇒你幾乎可以肯定,應該使用:X –

+0

'X !='a''測試'x'是否不是。 'x!='a'和x!='b''測試它是不是'a'還是'b'...這應該是您的第一次嘗試。然後你瞭解'in'運算符和/或比較。那麼你可能會偏離正確的道路並學習正則表達式。 – kay

回答

2

如果你想檢查的變量x的類型,可以使用以下命令:

if type(x) is str: 
    print 'is a string' 

在python中,與java等語言不同,String和Char將具有相同的類型和相同的輸出。

type(chr(65)) == str 
type('A') == str 

編輯:

由於@Kay建議,你應該使用isinstance(foo, Bar)代替type(foo) is bar因爲isinstance正在檢查繼承,而類型則沒有。

this有關isinstance更多細節VS type

使用isinstance也將支持Unicode字符串。

isinstance(u"A", basestring) 
>>> true 

# Here is an example of why isinstance is better than type 
type(u"A") is str 
>>> false 
type(u"A") is basestring 
>>> false 
type(u"A") is unicode 
>>> true 

編輯2:

使用正則表達式來驗證只有一個字母

import re 

re.match("^[a-zA-Z]$", "a") is not None 
>>> True 

re.match("^[a-zA-Z]$", "0") is not None 
>>> False 
+0

這不是問題的要求... – rayryeng

+0

不要做'type(foo)是Bar'。改用'isinstance(foo,Bar)'。 – kay

+0

謝謝你的幫助 –

3
def isLetter(ch): 
    import string 
    return len(ch) == 1 and ch in string.ascii_letters 


print(isLetter('A')) 
True 
+0

謝謝你的幫助 –

+0

*寫出一個表達式,其值爲真當且僅當x不是字母*,這是可能做到最迂迴的方式。 –

2

原來,它的答案是not((x>='A' and x<='Z') or (x>='a' and x<='z'))

+0

其實Python可以讓你像比較數學符號那樣編寫比較:'a < b < c' <->'a kay

+0

謝謝你告訴我。我將不得不嘗試一下 –

+0

不需要過於複雜'return not x.isalpha()',如果它不是字母,它不能是一個字母 –

相關問題