[英]Python: if a word contains a digit
我正在編寫一個函數,該函數將單詞作為參數並查看每個字符,如果單詞中有數字,它將返回單詞
這是我要迭代的字符串,“讓我們看看pg11”。 我想查看每個單詞中的每個字符,如果單詞中有一個數字,我想按原樣返回單詞。
import string
def containsDigit(word):
for ch in word:
if ch == string.digits
return word
if any(ch.isdigit() for ch in word):
print word, 'contains a digit'
為了使您的代碼正常工作,請使用in
關鍵字(它將檢查項目是否在序列中),在if語句之后添加一個冒號,然后對return語句進行縮進。
import string
def containsDigit(word):
for ch in word:
if ch in string.digits:
return word
為什么不使用Regex?
>>> import re
>>> word = "super1"
>>> if re.search("\d", word):
... print("y")
...
y
>>>
因此,在您的函數中,只需執行以下操作:
import re
def containsDigit(word):
if re.search("\d", word):
return word
print(containsDigit("super1"))
輸出:
'super1'
您缺少一個冒號:
for ch in word:
if ch.isdigit(): #<-- you are missing this colon
print "%s contains a digit" % word
return word
通常,當您想知道“某物”是否包含“ something_else”集時可能有用。
digits = set('0123456789')
def containsDigit(word):
if set(word) & digits:
return word
print containsDigit('hello')
如果您拼命想使用string
模塊。 這是代碼:
import string
def search(raw_string):
for raw_array in string.digits:
for listed_digits in raw_array:
if listed_digits in raw_string:
return True
return False
如果我在外殼中運行它,則會得到所需的結果。 (如果包含,則為True;否則為False)。
>>> search("Give me 2 eggs")
True
>>> search("Sorry, I don't have any eggs.")
False
string.digits是一個字符串。 如果我們遍歷該字符串,則會得到父字符串的列表,該列表分為幾部分。 然后,我們得到一個包含字符串中的每個字符的列表,列表中沒有。 因此,我們在字符串中有每個字符! 現在,我們再次遍歷它! 產生字符串,我們可以看到給定的字符串是否包含數字,因為循環內的每一行代碼都需要執行一個步驟,從而更改了我們循環通過的字符串。 因此,這意味着每次變量更改時都會執行循環中的單行。 所以,當我們到達時; 例如5。它再次執行代碼,但是循環中的變量現在更改為5。它重新開始運行,直到最終到達字符串末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.