Python 如何将列表中的2位数字拆分为单个数字?
所以我在学校里做了一个作业,给了我一系列的数字,结果基本上是找到可以除以因子数字的数字,Python 如何将列表中的2位数字拆分为单个数字?,python,python-3.x,list,list-comprehension,Python,Python 3.x,List,List Comprehension,所以我在学校里做了一个作业,给了我一系列的数字,结果基本上是找到可以除以因子数字的数字,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])))
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)
下面是一个相当简单的方法:
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…
行,您可以展示一个f
、m
和n
的示例,期望的结果是什么以及您得到了什么吗?只是一点提示,虽然您可以理解您的代码,但使用一位数的变量名会让其他人难以推理。尽管存在一些常见的例外情况,如i
和n
,为了可读性而牺牲几行代码会有很大的帮助。是否要检查0-n中有多少个数字可以被数字f整除,并且其中有一个数字“m”?要检查字符串是否包含某个子字符串,可以在my_字符串中使用子字符串a=[x代表范围内的x(1,n+1),如果x%f==0]
如果x%f==0,那么只使用列表(范围)呢(f,n+1,f))
?问题中函数的三个参数似乎都是整数。我不确定你的第一个参数(可能是一个列表)要包含什么。你的数字是什么,使得范围(数字)
和数字[I]
您测试此功能时工作正常?我已对其进行了编辑,很抱歉出现了笨拙的错误。(我没有测试它)。