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

问题描述

所以我在学校里做一个作业,给我一个数字范围,其结果基本上是找到可以除以因子数字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)

解决方法

首先,如果您只希望被n整除的数字,则不需要循环从0到f的所有数字,而可以循环{{ 1}}。

第二,如果要检查字符串中是否包含数字,可以使用字符串表示形式。

例如:

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) 语句和类似raise ...的语句替换print行。

,

这是一种相当简单的方法:

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,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

请考虑一下此处发生的情况,而不是直接复制它,如果有话要说,请随时答复。顺便说一句,为了清楚起见,我尝试适当地命名您的变量。