如何将列表中的2位数字拆分为单个数字?

2024-09-28 17:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在学校里做了一个作业,给了我一系列的数字,结果基本上是找到可以除以一个因数的数字,f包含“必须”的数字,m。因此,我在代码中使用了列表理解,我有一个列表,其中包含可以除以f的范围内的所有数字。但是我需要关于如何制作一个列表的帮助,该列表只包含具有“必须”数字的数字m

def find_winner(f, m, n):
     a = [x for x in range(1, n+1) if x % f == 0]
     b = list(map(int, str(a[0])))
     c = [z for z in b if z == str(m)]
     return len(c)

Tags: 代码in列表forifdef作业range
2条回答

下面是一个相当简单的方法:

def find_solutions(numbers, factor, digit):
    solutions = 0
    for i in range(len(numbers)):
        if (numbers[i]%factor == 0 and str(digit) in str(numbers[i])):
            solutions += 1
    return solutions

如果您关心解决方案,那么您可以这样做:

def find_solutions(numbers, factor, digit):
    solutions = []
    for i in range(len(numbers)):
        if (numbers[i]%factor == 0 and str(digit) in str(numbers[i])):
            solutions.append(numbers[i])
    return solutions

请考虑一下这里发生了什么,而不是仅仅复制它,如果你有什么要说的,请随时回复。顺便说一句,为了清晰起见,我试着为变量命名

首先,如果您只想要被f整除的数字,则不需要循环从0到n的所有数字,而可以使用f步骤进行循环

其次,如果要检查字符串中是否包含数字,可以使用字符串表示法

例如:

def find_winner(f, m, n):

    digit_string = str(m)

    if len(digit_string) != 1:
        raise ValueError('m must be a one-digit number')
    
    valid_numbers = [x for x in range(f, n+1, f) if digit_string in str(x)]
    
    return len(valid_numbers)

如果您还没有涵盖异常,您可能希望用print语句和类似return None的内容替换raise ...

相关问题 更多 >