问题描述
所以我在学校里做一个作业,给我一个数字范围,其结果基本上是找到可以除以因子数字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
请考虑一下此处发生的情况,而不是直接复制它,如果有话要说,请随时答复。顺便说一句,为了清楚起见,我尝试适当地命名您的变量。