我是python的新手,并且遇到以下代码问题。目的是创建一个打印字符串中所有整数的函数。
def get_digits(str1):
for i in str1:
if i.isdigit():
return i
然而它只返回字符串中的第一个整数,我不确定如何让它打印所有这些整数。
如果这个问题很愚蠢我很抱歉,我已经在这个网站和其他网站上看了一会儿,但却无法解决这个问题。
答案 0 :(得分:3)
简化为列表理解
def get_digits(strval):
return [i for i in strval if i.isdigit()]
print get_digits('432jfsd5fs')
print ''.join(get_digits('432jfsd5fs'))
返回
['4', '3', '2', '5']
4325
答案 1 :(得分:2)
>>> def print_digits(str1):
... for i in str1:
... if i.isdigit():
... print i
...
>>> print_digits("a12b3")
1
2
3
print
打印东西。 return
将答案发送回运行该函数的任何内容。我想你会混淆两者,因为如果你在python中运行一个函数,它会打印返回的内容。但这只是因为python试图提供帮助并向您展示结果;这不是你通常打印的方式。
如果你真的想要返回数字,并将它们打印到别处,那么一种方法是建立一个结果列表:
>>> def get_digits(str1):
... results = []
... for i in str1:
... if i.isdigit():
... results.append(i)
... return results
...
>>> print(get_digits("a12b3"))
['1', '2', '3']
答案 2 :(得分:2)
无论何时从函数返回,函数都会停止执行。我建议在这里generator,它允许你从一个函数返回一个迭代,而不需要编写太多的代码。
这个问题涉及到家庭作业,所以我不打算给出完整的答案,但我建议您查看this StackOverflow answer以获取有关生成器和yield
关键字的详细说明。
答案 3 :(得分:1)
你可以遍历数字并返回它们的列表,如下所示:
def get_digits(str1):
digits = [] # define new list
for i in str1:
if i.isdigit():
digitis.append(i) # i is a digit, append to list
return digits # return the list of digits
答案 4 :(得分:1)
您的功能在找到第一个数字后退出。为了使其返回所有数字,请将结果收集到列表中。
def get_digits(str1):
digits = []
for i in str1:
if i.isdigit():
digits.append(i)
return digits
您还可以使用list comprehension:
来简化您的功能def get_digits(str1):
return [d for d in str1 if d.isdigit()]
如果您只想打印结果而不返回结果,请将return i
替换为原始功能中的print i
。
答案 5 :(得分:0)
def get_digits(str1):
numbers = ""
for i in str1:
if i.isdigit():
numbers = numbers + i
return numbers
答案 6 :(得分:0)
简单说明:
# your code
def get_digits(str1):
for i in str1:
if i.isdigit():
return i
当函数遇到return i
时,它会停止进一步执行,并返回值。
由于其他人已详细解释,我将提供更多解决方案供参考:
#1. Using generator
def get_digits_generator(str1):
for i in str1:
if i.isdigit():
yield i
#2. Returning a list of digits
def get_digits_list(str1):
list_of_digits = []
for i in str1:
if i.isdigit():
list_of_digits.append(i)
return list_of_digits
#3. List comprehension
str1 = "asdbh12njasdo29ns"
list_of_digits = [character for character in str1 if character.isdigit()]
答案 7 :(得分:0)
import re
re.findall('\d', str1)
答案 8 :(得分:-3)
a=""
def get_digits(str1):
for i in str1:
if i.isdigit():
a=a&i
return a
试试这样。因为您在找到第一个数字时返回。