我正在编写一个函数,它将一个单词作为参数,并查看每个字符,如果单词中有数字,它将返回单词
这是我将迭代的字符串 “让我们看看第11页。” 我想看看每个单词中的每个字符,如果单词中有一个数字,我想按照它的方式返回单词。
import string
def containsDigit(word):
for ch in word:
if ch == string.digits
return word
答案 0 :(得分:8)
if any(ch.isdigit() for ch in word):
print word, 'contains a digit'
答案 1 :(得分:1)
要使代码工作,请使用in
关键字(将检查项目是否在序列中),在if语句后添加冒号,并缩进return语句。
import string
def containsDigit(word):
for ch in word:
if ch in string.digits:
return word
答案 2 :(得分:1)
为什么不使用正则表达式?
>>> 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'
答案 3 :(得分:0)
你错过了冒号:
for ch in word:
if ch.isdigit(): #<-- you are missing this colon
print "%s contains a digit" % word
return word
答案 4 :(得分:0)
通常当你想知道“某事物”是否包含“something_else”时,设置可能是有用的。
digits = set('0123456789')
def containsDigit(word):
if set(word) & digits:
return word
print containsDigit('hello')
答案 5 :(得分:0)
如果您非常想使用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。它再次开始运行,直到最终到达字符串的末尾。