2013-10-23 123 views
0

即時通訊設法如果找到一個單詞,我的程序會查看是否存在大寫字母並檢查它。

的問題是,我甚至不能去通過我的計劃,因爲我得到一個錯誤,指出「名貓」沒有定義(CAT)是什麼,我inputed,不知道該代碼會發現在一個給定的大寫字

是有辦法做到這一點用正則表達式可能像,沒有被賦予變量的詞

if : re.search("A,B,C etc")

這裏就是我有,

g = input("enter a ") 

h = [ABCDEFGHIJKLMNOPQRXTUVWXYZ] 


for letters in g: 
    if letters in h : 
     print "upper" 
+2

'h =「ABCDEFGHIJKLMNOPQRXTUVWXYZ」' –

回答

6

在Python 2.x版本,input評價其爲真正的Python代碼輸入。因此,當您輸入cAt時,Python會嘗試通過相同的名稱查找變量。而且,因爲它不能,所以它爆炸了。

您需要使用raw_input來代替,它將輸入作爲字符串對象返回。

此外,你需要做h一個字符串是這樣的:

h = "ABCDEFGHIJKLMNOPQRXTUVWXYZ" 

但是,您可能想看看anystr.isupper這個任務:

>>> mystr = raw_input("enter a word: ") 
enter a word: cAt 
>>> mystr 
'cAt' 
>>> any(x.isupper() for x in mystr) 
True 
>>> mystr = raw_input("enter a word: ") 
enter a word: cat 
>>> mystr 
'cat' 
>>> any(x.isupper() for x in mystr) 
False 
>>> 
+3

或'from string import ascii_upper as h':P – kojiro

+0

感謝提示。我改變了你所說的,現在如果我輸入cAT,它會打印「上」3次。我該如何阻止? –

+0

@ZachSantiago - 我能想到的唯一可能會導致你的問題是如果print-statement被縮進,以至於它在if塊之外。但是,你會得到一個'SyntaxError'來獲得一個空的代碼塊。所以,我不知道是什麼原因造成的。你有沒有其他的代碼可以發佈? – iCodez

3

在Python 2.x,input()嘗試將輸入作爲Python表達式運行。

您想使用g=raw_input("enter a ")以便g存儲字符串。

對於上述兩者,Python 3.x都使用input()