我是新的编码和尝试提取和打印无数字。我写了两个不同的代码,但不能组合它们。我希望你能给我一些建议。(我试过使用*args
,但没有起作用)
def SumOfDigits(str1):
sum_digit = 0
for x in str1:
if x.isdigit():
z = int(x)
sum_digit += z
print("The sum of digits operation is", sum_digit, end=".")
return
def SumOfDigits(input):
valids = []
for character in input:
if character.isalpha():
valids.append(character)
print("The extracted non-digits are:", ''.join(valids))
return
发布于 2021-12-07 20:51:31
艾尔。Nik,我相信这两个函数没有被合并,因为它们做的是不同的行为,这导致了一个更复杂的函数,这可能会变得有点混乱。
无论如何,你想要的是把你的两个for循环合并成一个。由于str.isalpha
匹配不会与str.isdigit
匹配冲突,所以您可以安全地使用if
语句和一个elif
来检查每个字符并应用想要的行为。
然后,您只需以元组的形式返回这2个结果。
def digit_extraction(string):
sum_digits = 0
extracted_alphas = ""
for char in string:
if char.isdigit():
sum_digits += int(char)
elif char.isalpha():
extracted_alphas += char
return sum_digits, extracted_alphas
下面是一个简单的例子:
>>> digit_extraction("1a2b3c4d5e6f7g8h9i")
(45, 'abcdefghi')
如果您不知道python中的多个返回值是如何工作的,我建议查看以下教程:
为了进入更高级的东西,分离2函数将允许写一些被认为是更丙酮的东西:
def sum_of_digits(string):
return sum(int(c) for c in string if c.isalpha())
和
def extract_alphas(string):
return ''.join(filter(str.isalpha, c))
https://stackoverflow.com/questions/70266565
复制相似问题